Lenguajes y Automatas
Ingenieria en Sistemas Computacionales
Apuntes de
LENGUAJES Y AUTOMATAS II
por
Ing. Luis Fernando Gil Vázquez
Octubre de 2013
ITL
Lenguajes y Autómatas II
Ing. Fernando Gil
Temario
I
Análisis semántico
1.1 Analizador semántico
2.2 Verificación de tipos en expresiones.
1.3 Conversión de tipos.
1.4 Acciones agregadas en unanalizador sintáctico descendente (top-down).
1.5 Pila semántica en un analizador sintáctico ascendente (bottom-up).
1.6 Administración de la tabla de símbolos.
1.7 Manejo de errores semánticos.
II
Generación de código intermedio.
2.1 Lenguajes intermedios.
2.2 Notaciones.
2.2.1 Infija.
2.2.2 Postfija.
2.2.3 Prefija.
2.3 Representación de código intermedio.
2.3.1 Notación Polaca.2.3.2 Codigo P.
2.3.3 Triplos.
2.3.4 Cuádruplos.
2.4 Esquemas de generación.
2.4.1 Expresiones.
2.4.2 Declaración de variables, constantes
2.4.3 Estatuto de asignación.
2.4.4 Estatuto condicional.
2.4.5 Estatuto de ciclos
2.4.6 Arreglos.
2.4.7 Funciones.
III
Optimización.
3.1 Tipos de optimización.
3.1.1 Locales.
3.1.2 Bucles.
3.1.3 Globales.
3.1.4 De mirilla.
3.2 Costos.3.2.1 Costo de ejecución.
3.2.2 Criterios para mejorar el código.
3.2.3 Herramientas para el análisis del flujo de datos
Pag. 2
ITL
Lenguajes y Autómatas II
IV
Ing. Fernando Gil
Generación de código objeto.
4.1 Lenguaje máquina.
4.1.1 Características.
4.1.2 Direccionamiento.
4.2 Lenguaje ensamblador.
4.2.1 Características.
4.2.2 Almacenamiento.
4.3 Registros.
4.3.1Distribución.
4.3.2 Asignación.
4.4 Administración de memoria.
Bibliografia
COMPILADORES: PRINCIPIOS, TECNICAS Y HERRAMIENTAS
Alfred V. Aho, R. SEIT, J.D. Ullman
Addison - Wesley
COMPILADORES, CONCEPTOS FUNDAMENTALES
Teufel – Schmidt – Teufel
Addison – Wesley
COMPILADORES: TRADUCTORES Y COMPILADORES CON LEX / YACC, JFLEX / CUP y JAVACC
Sergio Rojas y Miguel Angel Mora
Universidad deMalaga
( PDF )
Pag. 3
ITL
Lenguajes y Autómatas II
Ing. Fernando Gil
UNIDAD I
Análisis Semántico
1.1
Introduccion
Analizador Semántico.
Verifica que el significado de las construcciones del lenguaje tengan sentido.
Tareas del analizador semántico:
1) Comprobación de Tipos.
2) Comprobación de parámetros.
3) Generación de código intermedio.
Ejemplo:
A : float ;
B :string ;
.
.
.
A := B + 5 ;
Analizador Léxico
id1 : float ;
id2 : string ;
.
.
.
id1 := id2 op num ;
TABLA DE SÍMBOLOS
Lexema
Complex
Tipo
1
A
id
?
2
B
id
?
3
5
num
...
?
Pag. 4
ITL
Lenguajes y Autómatas II
Ing. Fernando Gil
Analizador Sintáctico
:=
A
+
B
5
Analizador Semántico
Hasta aquí la entrada eslexica y sintacticamente valida, ahora se analiza desde el punto de vista semantico:
:=
id1.entrada
+
real
id2.entrada
cadena
(1)
num
entero
ERROR_TIPO
ERROR_TIPO = No hay compatibilidad de tipos
cadena + entero = ERROR_TIPO
Un compilador puede necesitar tener en cuenta muchas características además del código generado para la
construcción de entrada. Para realizarun análisis semántico a cada construcción del lenguaje se le asocia una
serie de atributos así como de acciones o reglas semánticas.
Un atributo es información asociada a un terminal o a un no-terminal, y puede representar una cadena o una
posición de memoria.
Regla Semántica: Acción o conjunto de acciones(algoritmo) para calcular el valor de los atributos.
Pag. 5
ITL
Lenguajes yAutómatas II
Ing. Fernando Gil
Los analizadores semánticos se construyen asociando una serie de atributos y acciones o reglas semánticas a
cada construcción del lenguaje.
Dos formas de asociarlo:
1) Definición dirigida por la sintáxis.
2) Esquema de traducción.
En ambos casos es útil definir un conjunto de atributos a los símbolos gramaticales del lenguaje.
Dos tipos de atributos:
1)...
Regístrate para leer el documento completo.