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
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.
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