1. Teoría de Autómatas y
Compiladores
Germania Rodríguez
grrodriguez@utpl.edu.ec
2. Análisis Sintáctico
• Determina la sintaxis, o estructura de un
programa.
• L a s i n t a x i s d e u n l e n g u a j e d e
programación se lo determina mediante
reglas gramaticales de una gramática libre
de contexto similar a las ER en el análisis
léxico con la diferencia que son recursivos.
• Los algoritmos utilizados para reconocer
estas estructuras difieren del léxico ya que
utilizan llamadas recursivas o una pila de
AS.
3. Análisis Sintáctico
• El AS involucra tener que elegir entre
varios métodos diferentes con sus
propiedades y capacidades, existen dos
categorías basados en la manera en que
construyen el árbol de análisis gramáticas
o sintáctico: descendente o ascendente.
4. Análisis Sintáctico – Proceso
Código fuente
Analizador léxico o rasterador
Tokens
Analizador Sintáctico
Árbol sintáctico
Analizador Semántico
Árbol con anotaciones
Optimizador de código fuente
Código intermedio
Generador de código
Código objetivo
Optimizador de código objetivo
Código Objetivo
5. Análisis Sintáctico - Proceso
• La tarea del AS es determinar la estructura
sintáctica de un programa a partir de los
tokens producidos por el AL.
• En resumen una función que toma como
entrada la secuencia de tokens y salida el
AS.
Secuencia de tokens árbol sintáctico
6. Análisis Sintáctico - Proceso
– Compiladores de una pasada no generan árbol
sintáctico explícito.
– Compiladores de múltiples pasadas – las
pasadas utilizaran el árbol como su entrada.
• El árbol se define como estructura de datos
dinámica, nodos, atributos, campos del
atributo.
• Manejo de errores, no solo mostrar
mensaje sino recuperarse (inferir código
corregido) y continuar el análisis, para
encontrar tantos errores como sea posible.
8. Gramática
• Tipos
– Tipo 3: Regulares de acuerdo al formato de
producción pueden ser:
• Lineales a la derecha:
A aB
Aa
• Lineales a la izquierda
A Ba
Aa
– Tipo 2: Libre de contexto
• A B siempre independiente del contexto
9. Gramáticas
• Tipos
– Tipo 1: Sensibles al contexto
– Tipo 0: Sin restricciones respecto a su formato
11. Gramática Libre de Contexto
• Especificación para la estructura sintáctica
de un lenguaje de programación, muy similar
a la estructura léxica.
• Se define a través de Reglas Gramaticales
RG
12. Gramática Libre de Contexto:
Comparación RG con las ER
• Utilizan notación semejante en ER:
– Operaciones ER: =, concatenación, selección
|, repetición *,
– Operaciones RG: , concatenación, selección
|, recursividad.
– Ejm:
exp exp op exp | (exp) | número
op + | - | *
– Las ER son sobre caracteres y las RG son
sobre tokens.
13. Derivación
RG
exp exp op exp | (exp) | número
op + | - | *
EJEMPLO:
(34-3) * 42
14. Árbol de Análisis Sintáctico
RG
exp
exp op exp
(exp) * número
número – número
16. Bibliografía
• Kenneth C. Louden, Construccion de Compiladores
Principios Y Práctica
• Universidad Jaume, Open Course Ware –II20 Teoría de
autómatas y lenguajes formales en: http://e-ujier.uji.es/pls/
w w w / ! g r i _ w w w . e u j i 2 2 1 0 1 ?
p_id=7&p_tipo=A&p_curso=II20&p_idioma=ES