80 likes | 290 Views
Analizador Sintáctico Descendente. Analizador Sintáctico LL(1). Tipo de analizador sintáctico predictivo Se considera como un intento por encontrar una derivación por la izquierda para una cadena de entrada
E N D
Analizador Sintáctico LL(1) • Tipo de analizador sintáctico predictivo • Se considera como un intento por encontrar una derivación por la izquierda para una cadena de entrada • Intento de construir un árbol desde la raíz, y creando los nodos del árbol en orden previo
LL(1) y las gramaticas • Un analizador sintactico LL(1) no puede resolver gramaticas recursivas por la izquierda • Estas pueden hacer que inicie un proceso recursivo infinito • Estos analizadores resultan ser los mas simples pero los menos potentes
Primero y Siguiente • Las funciones primero y siguiente permiten rellenar, siempre que sea posible, las entradas de una tabla de análisis sintáctico predictivo para una gramática • También se usan los componentes devueltos por la función Siguiente para sincronizar la recuperación de errores en modo de pánico
Primero • Si x es una cadena de símbolos gramaticales, se considera PRIMERO(x) como el conjunto de terminales que inician las cadenas derivadas de x. • Si x->e entonces e tambien esta en Primero(x)
Siguiente • Se define Siguiente(A) como el conjunto de terminales a que pueden aparecer inmediatamente a la derecha de A en alguna forma de frace • El conjunto de terminales de a tal que haya una derivación de la forma S->xaAaB para algun x y B.
Siguiente (cont) • En algún momento de la derivación pudieron haber existido símbolos entre A y a, pero si así fue, se derivaron a e(epsilon) • Si A puede ser el símbolo situado mas a la derecha en una forma de frase, entonces $ esta en SIGUIENTE(A).