Unidad 03: Análisis Sintáctico
- 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.
La principal tarea del analizador sintáctico no es comprobar que la sintaxis del programa fuente sea correcta, sino construir una representación interna de ese programa y en el caso en que sea un programa incorrecto, dar un mensaje de error.
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