View
16.654
Download
6
Category
Tags:
Preview:
DESCRIPTION
automatas compiladores árboles de análisis sintáctico
Citation preview
Germania Rodríguez grrodriguez@utpl.edu.ec
Teoría de Autómatas y Compiladores
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.
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.
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
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
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.
Gramática: definiciones • Estructuras • Derivación directa • Gramáticas equivalentes
Gramática • Tipos
– Tipo 3: Regulares de acuerdo al formato de producción pueden ser: • Lineales a la derecha:
A aB A a
• Lineales a la izquierda A Ba A a
– Tipo 2: Libre de contexto • A B siempre independiente del contexto
Gramáticas • Tipos
– Tipo 1: Sensibles al contexto
– Tipo 0: Sin restricciones respecto a su formato
Gramáticas Si el lenguaje Li generado por la gramática i
entonces se cumple que
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
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.
Derivación RG
exp exp op exp | (exp) | número op + | - | *
EJEMPLO: (34-3) * 42
Árbol de Análisis Sintáctico
RG exp
exp op exp
(exp) * número
número – número
Árbol de Análisis Sintáctico Abstracto
RG *
- 42
34 3
• 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
Bibliografía
Recommended