Beruflich Dokumente
Kultur Dokumente
Análisis Sintáctico
• GLC • Derivación
• • Árbol de Derivación
• • Palabra o Cadena
• L(G) • Estructura Sintáctica
• • Inherentemente Ambigüo.
• Σ
• *
Conceptos de Ambigüedad
• GLC : Gramática Libre de Contexto.
• : cadena o palabra.
• : Pertenece.
• L(G) : Lenguaje generado por la gramática.
• : Incluye , Ejemplo: A B , A está incluido en B
• Σ : Alfabeto
• * : 1 o más.
Conceptos de Ambigüedad
• Derivación : ir sustituyendo una variable que aparece en la cabeza de
alguna producción por su cuerpo.
• 1. A 1B
• 2. A 0A
• 3. B 1B
• 4. B 0C
• 5. B 0
• 6. C 1B
• 7. C 0A
• Este conjunto de producciones son de la forma de una Gramática
Regular. A partir de A, símbolo inicial, se sustituyen sucesivamente para
generar una cadena formada solo por símbolos terminales que
pertenecen al lenguaje:
• A ==>2 0A ==>2 00A ==>1 001B ==>5 0010
Conceptos de Ambigüedad
• Árbol de Derivación : Es un Árbol formado a partir de la
derivación de una gramática. Sirve para estudiar la
ambigüedad.
• Características:
• - Cada nodo interior es No Terminal.
• - Cada nodo hoja es Terminal o ∈
• - Si existe una producción A X1X2 …. Xk,
• - Para que el Xi sea λ debe existir la producción Xi λ
• - La cadena resultado del árbol: las hojas del árbol
concatenadas de izquierda a derecha, recorrido en pre
orden.
• Ejemplo:
• S ==> 1S1 ==> 11S11 ==> 110S011 ==> 1101011
Conceptos de Ambigüedad
En el árbol de la izquierda la
operación suma, entre los dos
primeros operandos, se lleva a cabo
antes que la multiplicación.
Nivel
La forma en que se evalua
Nivel la estructura sintántica de
la palabra es por medio de
los niveles que poseen los
Nivel
terminales según los nodos
en el árbol.
Es decir…
Árbol Izquierdo
Dentro de este nivel
evaluamos una expresión
id + cte * id
, obligando a que la
multiplicación se
realice antes que la
suma.
G_Exp_1
• $ • Pila
• M [X,a] • Salida de producciones
• P • Tabla de análisis sintáctico
• S predictivo
• X • Producción de x de la
• β1, β2, … βn gramática.
• Error
Conceptos Matriz Predictiva
• $: Fin de Cadena
• M [X,a]: Posición de la Matriz en X, a
• P: Firsts (Primeros)
• S: Follows (Segundos)
• X: Elemento en análisis.
• a: terminal.
• β1, β2, … βn: En la utilización de… Producción del tipo X β1
Conceptos Matriz predictiva
• Pila: La pila contiene una secuencia
de símbolos gramaticales con un
símbolo de pesos en la parte
inferior que indica la base de la
pila.
• Salida de Producciones:
El analizador sintáctico posee
una salida, las producciones
utilizadas y resultado del
análisis.
Conceptos Matriz Predictiva
M *V’,V+: Posición
de la Tabla en V’, V
M [X,a]: Posición
de la Tabla en X,
a
Conceptos Matriz predictiva
• Producción de x de la gramática:
• Significa sin tanta filosofía que cuando
analizamos el símbolo en cuestion la salida
podrá ser una producción de la gramática.
• Recuerda que te comenté que el analizador
sintáctico posee una salida,…
Producción de x de la gramática es la
producción que nos da de salida al
analizar un símbolo.
Conceptos Matriz predictiva
• Y por ahí viste un Error:
• Significa… en la forma en cual es… un error,… Wow!
Sin embargo, como puedieron
ver en la tabla de análisis
predictivo podemos designar
muchos tipos de error, cuando
encuentre cierto no terminal y
<COND> un cierto terminal en la
secuencia.
Suponiendo el if…
Un programa sintáctico
está guiado por tablas.
una pila
un buffer de entrada (la
cadena que se va a
analizar con $ al final)
Producción 7 de la
gramática
X
Ejemplo…
Será más claro por medio de un ejemplo recordando que siempre debes
tener muy presentes estas 3 reglas… Las tendremos aquí cerca en todo
momento, no las pierdas de vista.
Comencemos…
Nuestras reglas de producción
La cadena que
1)Si x = a = $ El string es válido.
validaremos
2)Si x = a ≠ $ Se saca x de la pila y
Se mueve el apuntador al siguiente
símbolo o analizador en curso.
3)Si x es un no terminal el
programa consulta la entrada de
M [X,a] de la tabla de la matriz de
análisis sintáctico.
A continuación se dará una corrida a la gramática
Ejemplo… para saber si la cadena es válida
$<E’><T’><F> Id $ 7) <F> id
$<E’><T’>id Id $
$<E’><T’> $ 6) <T’>
$<E’>ℇ $ 3) <E’>
$ $ Cadena válida
Generación de matriz predictiva
(cálculo first y follow)
Puedo mostrarte ciento y un miles de estos ejemplos y seguiremos la misma
dinámica… ciertamente este ejemplo fue sencillo. SALIDA
Pero aún hace falta una parte te dirás… que se hace 4)<T><F><T’>
7)<F>Id
como
$<E’><T’><F>
analizador.
4)<T><F><T’>
7) <F> id
trabaja la
$<E’><T’>id
ENTRADA
$<E’>
pila Id+Id$
Pero… 6) <T’>
$<E’><T>+
Id+Id$
3) <E’>
$<E’><T’><F>
Id+Id$ De donde surgió esto…? Cadena válida
$<E’><T’>id
Id+Id$
$<E’><T’>
$
en análisis 3)Si x es un no terminal el
programa consulta la entrada de
M [X,a] de la tabla de la matriz de
análisis sintáctico.
Generación de matriz predictiva
(cálculo first y follow)
Desde un principio te comenté que generaríamos algunos de los
componentes del análisis sintáctico…
Pues llevaremos a cabo la generación de esta matriz, por medio del cálculo
“Primeros y Segundos” (Firsts & Follows)…
Muchísima atención y cero distracción porque es un proceso al cual no debes
perderle el hilo.
Cálculo First y Follow
<E> op
a) Si X es un símbolo terminal, entonces primeros <E>
(α) = X P<E> = {op, }
<S> <E> a
Cálculo First Para…. P<S> Donde… <E> <F>
<E> <G>
<F> id
<F> ε
b) Si X es un símbolo no terminal, entonces <S> <E>a
<G> cons
para cada producción del tipo <E> <F>
1)<E><T><E’>
$<E>
PILA
venía esta matriz?..., así ya poseemos todos los 4)<T><F><T’>
6)<T’>
$<E’><T’><F>
2)<E’>+<T><E
$<E’><T’>id
ENTRADA ’>
$<E’><T’><F> Id+Id$
Id+Id$ 6) <T’>
$<E’><T’>id
$<E’><T’> 3) <E’>
+Id$
$<E’>ℇ Cadena válida
Id $
$
Id $
$
1)Si x = a = $ El string es válido.
$ 2)Si x = a ≠ $ Se saca x de la pila y
Se mueve el apuntador al
siguiente símbolo o analizador
en curso.
3)Si x es un no terminal el
programa consulta la entrada de
M [X,a] de la tabla de la matriz de
análisis sintáctico.