Analizador Sintactico

Páginas: 7 (1617 palabras) Publicado: 7 de septiembre de 2015
Anlizador Sintáctico
EL PAPEL DEL ANALIZADOR SINTÁCTICO
En este modelo de compilador, el analizador sintáctico obtiene una cadena de componentes léxicos del analizador léxico, y comprueba si la cadena puede ser generada por la gramática del lenguaje fuente. Se supone que el analizador sintáctico informará de cualquier error de sintaxis de manera inteligible. También debería recuperarse de loserrores que ocurren frecuentemente para poder continuar procesando el resto de su entrada.

Los métodos empleados generalmente en los compiladores se clasifican como descendentes o ascendentes. Como sus nombres indican, los analizadores sintácticos descendentes construyen árboles de análisis sintáctico desde arriba (la raíz) hasta abajo (las hojas), mientras que los analizadores sintácticosascendentes comienzan en las hojas y suben hacia la raíz. En ambos casos, se examina la entrada al analizador sintáctico de izquierda a derecha, un símbolo a la vez.
ANÁLISIS SINTÁCTICO
El análisis sintáctico (en inglés parser) 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 ydeterminar la estructura de las sentencias del programa. Este proceso es análogo a determinar la estructura de una frase en castellano, determinando quien es el sujeto, el predicado, el verbo y los complementos. El análisis sintáctico agrupa a los tokens en clases sintácticas (denominadas no terminales en la definición de la gramática), tales como expresiones, procedimientos,... El analizadorsintáctico o parser obtiene un árbol sintáctico (u otra estructura equivalente) en la cual las hojas son los tokens y cualquier nodo, que no sea una hoja, representa un tipo de clase sintáctica. Por ejemplo el análisis sintáctico de la siguiente expresión:

(A+B)*(C+D)

con las reglas de la gramática que se presenta a continuación dará lugar al árbol sintáctico de la figura 1:







La estructura dela gramática anterior refleja la prioridad de los operadores, así los operadores "+" y "-" tienen la prioridad más baja, mientras que "*" y "/" tienen una prioridad superior. Se evaluarán en primer lugar las constantes, variables y las expresiones entre paréntesis.

Los árboles sintácticos se construyen con un conjunto de reglas conocidas como gramática, y que definen con total precisión ellenguaje fuente.
Al proceso de reconocer la estructura del lenguaje fuente se le conoce con el nombre de análisis sintáctico (parsing). Hay distintas clases de analizadores o reconocedores sintácticos, en general se clasifican en dos grandes grupos: analizadores sintácticos ascendentes y analizadores sintácticos descendentes.



Análisis sintáctico descendente
Los analizadores sintácticos descendentesconstruyen el árbol sintáctico a partir del símbolo inicial de la gramática, hasta llegar a los distintos tokens, que constituyen la sentencia a analizar. Es decir, se parte del símbolo inicial de la gramática y se van aplicando las distintas producciones hasta llegar a formar la sentencia. En el ejemplo de la figura 1, el árbol sintáctico se obtiene a partir de las reglas de derivación de hasta llegar a la expresión. El orden de derivación es importante, siempre se deriva primero el no terminal situado más a la izquierda según se mira el árbol (derivaciones más a la izquierda).

Los principales problemas que se plantean en el análisis sintáctico descendente
son dos: el retroceso (en inglés backtracking) y la recursividad a izquierdas.

El retroceso, se produce cuando se eligenmal las producciones para alcanzar la sentencia a analizar, y debe de darse marcha atrás en el proceso de análisis, para elegir otra alternativa. El retroceso se repite hasta que se ha elegido la alternativa correcta; evidentemente esto ralentiza enormemente el proceso de análisis.
La recursividad a izquierdas, se deriva de que en general se elige el criterio de tomar siempre en primera opción...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Analizador sintáctico
  • Analizador Lexico Y Sintactico C++
  • Analizadores Sintácticos Lr
  • Funciones del analizador y árbol sintáctico
  • Analizador Léxico y Sintáctico
  • Analizador léxico y sintáctico
  • Analizador Léxico-Sintáctico
  • Solución para un analizador sintáctico

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS