Analisis Sintactico
Definiciones
Determina si la secuencia de componentes léxicos sigue la sintaxis del lenguaje y obtiene la estructura jerárquica del programa en forma de árbol, donde los nodos son las construcciones de alto nivel del lenguaje.
Es la fase del analizador que se encarga de chequear el texto de entrada en base a unagramática dada. Y en caso de que el programa de entrada sea válido, suministra el árbolsintáctico que lo reconoce.
Aplicativos
La estructura jerárquica de un programa es
representada por reglas que constituyen una
gramática.
l Las reglas se representan por medio de
producciones.
l Cada producción define un símbolo no terminal en
función de símbolos terminales o tokens, y otros
símbolos no terminales.
l Existe una producción que define al no terminal
programa.
Manejo de errores sintácticos
Tipos
•Léxicos: producidos al escribir mal un identificador, una palabra clave o un operador. •Sintácticos: por una expresión aritmética o paréntesis no equilibrados. •Semánticos: como un operador aplicado a un operando incompatible. •Lógicos: puede ser una llamada infinitamente recursiva.
objetivos
• Indicar los errores de forma clara y precisa. Aclarar el tipo de error y su localización. • Recuperarse del error, para poder seguir examinando la entrada. • No ralentizar significativamente la compilación. • Simplificar la estructura del compilador. •Mejorar la respuesta ante los errores.
Estrategias para Corregir Errores
Ignorar el problema (Panic mode ) Consiste en ignorar el resto de la entradahasta llegar a una condición de seguridad.
Recuperación a nivel de frase Intenta recuperar el error una vez descubierto.
Reglas de producción adicionales para el control de errores La gramática sepuede aumentar con las reglas que reconocen los errores más comunes.
Corrección Global Si hay algún error por el que no se puede reconocer, consiste en encontrar lasecuencia completa más parecida que sí se pueda reconocer.
Caracteristicas
Se determinan las relaciones estructurales entre los componentes léxicos, esto es semejante a realizar el análisis gramatical sobre una frase en lenguaje natural.
Agrupa los tokens del programa
fuente en frases gramaticales
que el compilador usará en las
siguientes etapas.
Los tokens son símbolos terminales en la gramática que describe al lenguaje fuente
Tipo de gramática que acepta un analizador sintáctico
Gramática
N=No terminales. T=Terminales. P=Reglas de Producción. S=Axioma Inicial.
Derivaciones
La idea central es que se considera una producción como una regla de reescritura, donde el no terminal de la izquierda es sustituido por la cadena del ladoderecho de la producción
Derivación por la izquierda : Solo el no terminal de más a la izquierda de cualquier forma de frase se sustituye en cada paso.
Derivación por la derecha o Derivación canónica donde el no terminal más a la derecha se sustituye en cada paso.
Tipos de Analisis
Descendentes Parten del axioma inicial, y van efectuando derivaciones a izquierda hasta obtener la secuencia de derivaciones que reconoce a la sentencia.
Análisis descendente con retroceso
Análisis descendente con recursión
Análisis descendente de gramáticas LL(1)
Ascendentes Parten de la sentencia de entrada, y van aplicando reglas de producción hacia atrás (desde el consecuente hasta el antecedente), hasta llegar al axioma inicial.
Análisis Ascendente con retroceso.
Analizadores LR