Está en la página 1de 13

CURSO:

AUTÓMATAS Y COMPILADORES

DOCENTE:
MG. MARCELINO TORRES VILLANUEVA

INTEGRANTES:
- PUELLES CALDAS, MIULER
- REYES JULCA, CHRISTIAN
- SERIN NERY, ELMER
- SILVA GUEVARA, MANUEL
- ZAVALETA CORTEZ, JEYSON
ANALIZADOR SINTÁCTICO DESCENDENTE
AUTÓMATAS Y COMPILADORES 2
ANALIZADOR SINTÁCTICO DESCENDENTE (ASD)

El ASD intenta encontrar entre las producciones


de la gramática la derivación por la
S → cAd
izquierda del símbolo inicial para una cadena
A → a
de entrada.
A → b

Parte del símbolo inicial (la raíz del árbol


de derivación) y trata de llegar a la cadena
de terminales (las hojas del árbol)

AUTÓMATAS Y COMPILADORES 3
ANALIZADOR SINTÁCTICO DESCENDENTE
EJEMPLO: Declaración de variables en C, sin inicialización, de tipo int o float.

D → Tipo id L
Tipo → int
Tipo → float int a,b;
L → coma id L
L → pyc
𝐷 ⇒ 𝑇𝑖𝑝𝑜 𝐢𝐝 𝐚 𝐿
⇒ 𝐢𝐧𝐭 𝐢𝐝 𝐚 𝐿
⇒ 𝐢𝐧𝐭 𝐢𝐝 𝐚 𝐜𝐨𝐦𝐚 𝐢𝐝 𝐛 𝐿
⇒ 𝐢𝐧𝐭 𝐢𝐝 𝐚 𝐜𝐨𝐦𝐚 𝐢𝐝 𝐛 𝐩𝐲𝐜

AUTÓMATAS Y COMPILADORES 4
ANALIZADOR SINTÁCTICO DESCENDENTE (ASD)
Los métodos descendentes se caracterizan porque analizan la cadena de componentes
léxicos de izquierda a derecha, obtienen la derivación más a la izquierda y el árbol
de derivación se construye desde la raíz hasta las hojas.

RECURSIVIDAD POR LA IZQUIERDA

CARACTERÍSTICAS FACTORES COMUNES POR LA IZQUIERDA

(no deseables)
AMBIGÜEDAD

Para que se pueda usar en un compilador, El analizador debe saber en todo momento
el analizador sintáctico debe tener un qué regla ha de aplicar, no puede hacer
coste temporal lineal, O(n) backtracking.

AUTÓMATAS Y COMPILADORES 5
ANALIZADOR SINTÁCTICO DESCENDENTE
AUTÓMATAS Y COMPILADORES 6
ANALIZADOR SINTÁCTICO DESCENDENTE (ASD)
• La recursividad a izquierdas da lugar a un bucle infinito de recursión.

• Problemas de indeterminismo cuando varias alternativas en una misma


producción comparten el mismo prefijo. No sabríamos cual elegir.
Probaríamos una y si se produce un error haríamos backtracking. Si queremos
que el método sea determinista hay que evitarlas.

Existen transformaciones de gramáticas para su la eliminación. Estas


transformaciones no modifican el lenguaje que se esta reconociendo,
pero si que cambian el aspecto de la gramática, que es en general
menos intuitiva.

AUTÓMATAS Y COMPILADORES 7
ANALIZADOR SINTÁCTICO DESCENDENTE
AUTÓMATAS Y COMPILADORES 8
GRAMÁTICAS LL(I): CONJUNTOS PRIMERO Y SIGUIENTE

AUTÓMATAS Y COMPILADORES 9
GRAMÁTICAS LL(I): CONJUNTOS PRIMERO Y SIGUIENTE

AUTÓMATAS Y COMPILADORES 10
ANALIZADOR SINTÁCTICO DESCENDENTE
AUTÓMATAS Y COMPILADORES 11
LA CONDICIÓN LL(I)
Para que una gramática sea LL(1) se debe cumplir que:
1. Para las producciones de la forma 𝐴 → 𝛼1 |𝛼2 |…|𝛼𝑛 nse debe cumplir que:
𝑃𝑅𝐼𝑀𝐸𝑅𝑂𝑆 𝛼𝑖 ∩ 𝑃𝑅𝐼𝑀𝐸𝑅𝑂𝑆 𝛼𝐽 = ∅ para todo i,j (𝑖 ≠ 𝑗).
Esta regla permite decidir que alternativa elegir conociendo solo un símbolo de la entrada.
1. Si 𝐴 ∈ 𝑉𝑛 , tal que 𝜖 ∈ 𝑃𝑅𝐼𝑀𝐸𝑅𝑂𝑆 𝐴 , entonces:
𝑃𝑅𝐼𝑀𝐸𝑅𝑂𝑆 𝛼𝑖 ∩ 𝑆𝐼𝐺𝑈𝐼𝐸𝑁𝑇𝐸𝑆 𝛼𝐽 = ∅
Esta condición garantiza que para aquellos símbolos que pueden derivar la cadena vacía, el primer símbolo
que generan y el siguiente que puede aparecer detrás de ellos sean distintos, sino no sabríamos como
decidir si vamos a empezar a reconocer el no-terminal o que ya lo hemos reconocido.

AUTÓMATAS Y COMPILADORES 12
LA CONDICIÓN LL(I)
EJEMPLO:

AUTÓMATAS Y COMPILADORES 13

También podría gustarte