Análisis Sintáctico
Analisis Sintactico: Determina la sintaxis,
o estructura de un
programa. Es un análisis a
nivel de sentencias, y es mucho más complejo que el análisis léxico.
Su función es
tomar el
programa fuente en
forma de tokens,
que recibe del analizador léxico,
y determinar la
estructura de las sentencias del programa.
Este proceso es
similar a determinar la estructura de una frase
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
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
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.
Al proceso de reconocer la estructura del lenguaje fuente se
conoce con el
nombre de análisis
sintáctico (parsing).
Hay distintas clases de analizadores o reconocedores
sintácticos, pero en general
se clasifican en
2 grandes grupos:
A.S. Ascendentes y A.S. Descendentes.
Tipos de Análisis Sintácticos
Análisis descendente:
Partimos de la raíz del árbol (donde estará situado el
símbolo inicial de la gramática) y se van aplicando reglas por la izquierda de
forma que se obtiene una derivación por la izquierda de la cadena de entrada.
Para decidir qué regla
aplicar, se lee un token de la entrada.
Análisis ascendente:
Partiendo de la cadena de entrada, se construye el árbol de
análisis sintáctico empezando por las hojas (donde están los tokens) y se van
creando nodos intermedios hasta llegar a la raíz (hasta el símbolo inicial),
construyendo así el árbol de abajo a arriba.
El recorrido del árbol se hará desde las hojas hasta la
raíz.
Función
principal
Comprueba que el orden en que el analizador léxico le va
entregando los tokens es válido. Si
esto es así
significará que la
sucesión de símbolos que
representan dichos tokens puede ser generada por la gramática correspondiente
al lenguaje del código fuente.
No hay comentarios:
Publicar un comentario