You are on page 1of 2

Árbol de Análisis Sintáctico

Árboles de análisis sintáctico y derivaciones


Un árbol de análisis sintáctico es una representación gráfica de una derivación
que filtra el ordenen el que se aplican las producciones para sustituir los no ter
minales.Cada nodo interior de un árbol de análisis sintáctico representa la aplic
ación de una producción.{Ejemplo de árbol sintáctico}Las hojas de un árbol de
análisis sintáctico se etiquetan mediante no terminales o terminales y,leídas de
izquierda a derecha constituyen una forma de frase, a la cual se le llama
producto o frontera del árbol
Cada nodo del árbol denota una construcción que ocurre en el código fuente. La
sintaxis es abstracta en el sentido que no representa cada detalle que aparezca
en la sintaxis verdadera
El árbol de análisis sintáctico también es un estado inicial del análisis de frases
de lenguaje natural. Es usado para generar diagramas de lenguajes que usan
flexión gramatical, como los idiomas romances o el latín. Los lenguajes
habitualmente reconocidos por los analizadores sintácticos son los lenguajes
libres de contexto. Cabe notar que existe una justificación formal que establece
que los lenguajes libres de contexto son aquellos reconocibles por un autómata
de pila, de modo que todo analizador sintáctico que reconozca un lenguaje libre
de contexto es equivalente en capacidad computacional a un autómata de pila
El uso más común de los arboles de análisis sintácticos es como parte de la fase
de análisis de los compiladores. De modo que tienen que analizar el código
fuente del lenguaje. Los lenguajes de programación tienden a basarse en
gramáticas libres de contexto, debido a que se pueden escribir analizadores
rápidos y eficientes para estas.

Las gramáticas libres de contexto tienen una expresividad limitada y sólo pueden
expresar un conjunto limitado de lenguajes. Informalmente la razón de esto es
que la memoria de un lenguaje de este tipo es limitada, la gramática no puede
recordar la presencia de una construcción en una entrada arbitrariamente larga
y esto es necesario en un lenguaje en el que por ejemplo una variable debe ser
declarada antes de que pueda ser referenciada. Las gramáticas más complejas
no pueden ser analizadas de forma eficiente. Por estas razones es común crear
un analizador permisivo para una gramática libre de contexto que acepta un
superconjunto del lenguaje (acepta algunas construcciones inválidas), después
del análisis inicial las construcciones incorrectas pueden ser filtradas.
nos centraremos en el análisis sintáctico para lenguajes basados en gramáticas
formales, ya que de otra forma se hace muy difícil la comprensión del compilador,
y se pueden corregir, quizás más fácilmente, errores de muy difícil localización,
como es la ambigüedad en el reconocimiento de ciertas sentencias.
La gramática que acepta el analizador sintáctico es una gramática de contexto
libre:
• Gramática : G (N, T, P, S)
N = No terminales.
T = Terminales.
P = Reglas de Producción.
S = Axioma Inicial.

De la forma de construir el árbol sintáctico se desprenden dos tipos o clases de


analizadores sintácticos. Pueden ser descendentes o ascendente
• Descendentes : Parten del axioma inicial, y van efectuando derivaciones a
izquierda hasta
obtener la secuencia de derivaciones que reconoce a la sentencia.
Pueden ser:
Con retroceso.
Con recursión.
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.
Pueden ser:
Con retroceso.
LR(1)

You might also like