TRADUCTORES E INTERPRETADORES - LDC Noticiasrmonascal/cursos/ci3725_aj12/archivos/clase11.pdf · un...

80
TRADUCTORES E INTERPRETADORES Clase 11: Analizadores Sintácticos Descendentes Profs. Carlos Pérez y Ricardo Monascal

Transcript of TRADUCTORES E INTERPRETADORES - LDC Noticiasrmonascal/cursos/ci3725_aj12/archivos/clase11.pdf · un...

TRADUCTORES E INTERPRETADORES

Clase 11: Analizadores Sintácticos Descendentes

Profs. Carlos Pérez y Ricardo Monascal

Agenda

• Analizadores Recursivos Descendentes.

• Análisis Predictivo.

• Analizadores LL(1).

• Analizadores LL(k) y LL(*).

Profs. Carlos Pérez y Ricardo Monascal

Analizadores Recursivos Descendentes

• Recordemos los árboles de derivación de una gramática.

– ¿Cuántos árboles de derivación diferentes puede tener una frase?

Profs. Carlos Pérez y Ricardo Monascal

Analizadores Recursivos Descendentes

• Recordemos los árboles de derivación de una gramática.

– ¿Cuántos árboles de derivación diferentes puede tener una frase?

– ¿Qué ocurría cuando había mas de una?

Profs. Carlos Pérez y Ricardo Monascal

Analizadores Recursivos Descendentes

• Recordemos los árboles de derivación de una gramática.

– ¿Cuántos árboles de derivación diferentes puede tener una frase?

– ¿Qué ocurría cuando había mas de una?

• ¡Ambigüedad!

Profs. Carlos Pérez y Ricardo Monascal

Analizadores Recursivos Descendentes

• Recordemos los árboles de derivación de una gramática.

– ¿Cuántos árboles de derivación diferentes puede tener una frase?

– ¿Qué ocurría cuando había mas de una?

• ¡Ambigüedad!

– ¿En que orden expandimos los símbolos no-terminales?

Profs. Carlos Pérez y Ricardo Monascal

Analizadores Recursivos Descendentes

• Recordemos los árboles de derivación de una gramática.

– ¿Cuántos árboles de derivación diferentes puede tener una frase?

– ¿Qué ocurría cuando había mas de una?

• ¡Ambigüedad!

– ¿En que orden expandimos los símbolos no-terminales?

• ¿Realmente importa?

Profs. Carlos Pérez y Ricardo Monascal

Analizadores Recursivos Descendentes

• Si siempre escogemos el símbolo no-terminal mas derecho, tendremos una derivación más derecha.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores Recursivos Descendentes

• Si siempre escogemos el símbolo no-terminal mas derecho, tendremos una derivación más derecha.

• Si siempre escogemos el símbolo no-terminal mas izquierdo, tendremos una derivación más izquierda.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores Recursivos Descendentes

• Si siempre escogemos el símbolo no-terminal mas derecho, tendremos una derivación más derecha.

• Si siempre escogemos el símbolo no-terminal mas izquierdo, tendremos una derivación más izquierda.

– Y estas son las que nos interesan en esta ocasión.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores Recursivos Descendentes

• ¿Cómo podemos construir un reconocedor para frases, dada una Gramática Libre de Contexto?

Profs. Carlos Pérez y Ricardo Monascal

Analizadores Recursivos Descendentes

• ¿Cómo podemos construir un reconocedor para frases, dada una Gramática Libre de Contexto?

– Una forma es realizando la traducción explícitamente a un Autómata de Pila.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores Recursivos Descendentes

• ¿Cómo podemos construir un reconocedor para frases, dada una Gramática Libre de Contexto?

– Una forma es realizando la traducción explícitamente a un Autómata de Pila.

– Otra forma es a través de un Analizador Recursivo Descendente.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores Recursivos Descendentes

• ¿Cómo podemos construir un reconocedor para frases, dada una Gramática Libre de Contexto?

– Una forma es realizando la traducción explícitamente a un Autómata de Pila.

– Otra forma es a través de un Analizador Recursivo Descendente.

– La clave está en ver cada símbolo no terminal como una función que:

• Recibe una frase.

• Intenta reconocer un prefijo de la frase.

• Devuelve el residual (sobrante) de la frase.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores Recursivos Descendentes

• Ejemplo:

Profs. Carlos Pérez y Ricardo Monascal

c

E

EE

EEE

|

)(|

*|

Analizadores Recursivos Descendentes

• Ejemplo:

Profs. Carlos Pérez y Ricardo Monascal

c

E

EE

EEE

|

)(|

*|

String E (String frase) { String tmp; if (match(frase[0], ‘(’)) tmp = E(frase.substring(1)); if (match(tmp[0], ‘)’)) return tmp.substring(1); if (match(tmp[0], ‘c’)) return temp.substring(1); tmp = E(frase); if (match(tmp[0], ‘+’)) return E(tmp.substring(1)); else if (match(tmp[0], ‘*’)) return E(tmp.substring(1)); errorHandler(); }

EN JAVA

Analizadores Recursivos Descendentes

• Ejemplo:

¿Qué problema tiene la función E?

Profs. Carlos Pérez y Ricardo Monascal

c

E

EE

EEE

|

)(|

*|

String E (String frase) { String tmp; if (match(frase[0], ‘(’)) tmp = E(frase.substring(1)); if (match(tmp[0], ‘)’)) return tmp.substring(1); if (match(tmp[0], ‘c’)) return temp.substring(1); tmp = E(frase); if (match(tmp[0], ‘+’)) return E(tmp.substring(1)); else if (match(tmp[0], ‘*’)) return E(tmp.substring(1)); errorHandler(); }

EN JAVA

Analizadores Recursivos Descendentes

• Para poder implementar un buen Analizador Recursivo Descendente, debe pedirse que la gramática no tenga recursión izquierda.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores Recursivos Descendentes

• Para poder implementar un buen Analizador Recursivo Descendente, debe pedirse que la gramática no tenga recursión izquierda.

– ¿Siempre se puede llevar una Gramática Libre de Contexto a una equivalente, pero sin recursión izquierda?

Profs. Carlos Pérez y Ricardo Monascal

Analizadores Recursivos Descendentes

• Para poder implementar un buen Analizador Recursivo Descendente, debe pedirse que la gramática no tenga recursión izquierda.

– ¿Siempre se puede llevar una Gramática Libre de Contexto a una equivalente, pero sin recursión izquierda?

– ¡Si!

Profs. Carlos Pérez y Ricardo Monascal

m

nAAA

|...||

|...|

1

1

|'|...|''

'|...|'

1

1

AAA

AAA

n

m

Analizadores Recursivos Descendentes

• Para poder implementar un buen Analizador Recursivo Descendente, debe pedirse que la gramática no tenga recursión izquierda.

– ¿Siempre se puede llevar una Gramática Libre de Contexto a una equivalente, pero sin recursión izquierda?

– ¡Si!

– ¿Y si le recursión es indirecta?

Profs. Carlos Pérez y Ricardo Monascal

Analizadores Recursivos Descendentes

• Para poder implementar un buen Analizador Recursivo Descendente, debe pedirse que la gramática no tenga recursión izquierda.

– ¿Siempre se puede llevar una Gramática Libre de Contexto a una equivalente, pero sin recursión izquierda?

– ¡Si!

– ¿Y si le recursión es indirecta?

– Les queda como ejercicio.

Profs. Carlos Pérez y Ricardo Monascal

Análisis Predictivo

• Los Analizadores Recursivos Descendentes son fáciles de implementar.

– Sin embargo, pueden ser ineficientes.

Profs. Carlos Pérez y Ricardo Monascal

Análisis Predictivo

• Los Analizadores Recursivos Descendentes son fáciles de implementar.

– Sin embargo, pueden ser ineficientes.

– Posiblemente tienen que realizar backtracking.

Profs. Carlos Pérez y Ricardo Monascal

Análisis Predictivo

• Los Analizadores Recursivos Descendentes son fáciles de implementar.

– Sin embargo, pueden ser ineficientes.

– Posiblemente tienen que realizar backtracking.

• ¿Y si pudiéramos usar algún tipo de información adicional que permita eliminar la posibilidad de backtracking?

– Aquí entra el análisis predictivo.

Profs. Carlos Pérez y Ricardo Monascal

Análisis Predictivo

• La idea poder ver algunos símbolos de la frase por adelantado, para ayudar a tomar una decisión al analizador sobre el camino a tomar.

Profs. Carlos Pérez y Ricardo Monascal

Análisis Predictivo

• La idea poder ver algunos símbolos de la frase por adelantado, para ayudar a tomar una decisión al analizador sobre el camino a tomar.

– A estos adelantos, les llamaremos Look-ahead’s.

– Cada regla de la Gramática tendrá uno.

Profs. Carlos Pérez y Ricardo Monascal

Análisis Predictivo

• La idea poder ver algunos símbolos de la frase por adelantado, para ayudar a tomar una decisión al analizador sobre el camino a tomar.

– A estos adelantos, les llamaremos Look-ahead’s.

– Cada regla de la Gramática tendrá uno.

– Se definirán a partir de dos conjuntos especiales para cada símbolo:

• FIRSTk : Primeros k símbolos terminales que puede generar el símbolo.

• FOLLOWk: Primeros k símbolos terminales que pueden generarse, una vez se haya terminado de expandir el símbolo en cuestión.

Profs. Carlos Pérez y Ricardo Monascal

Análisis Predictivo

Profs. Carlos Pérez y Ricardo Monascal

• FIRST:

))())()...((:...:...,(

))(::(

}){)(::(

111 AFIRSTYFIRSTYFIRSTtruncPYYAYYA

AFIRSTPAA

aaFIRSTaa

mkkkmm

k

k

Análisis Predictivo

Profs. Carlos Pérez y Ricardo Monascal

• FIRST:

• FOLLOW:

))()(

:)()(,:,,,(

))()(

:)(,:,,,(

)($

*

*

BFOLLOWAFOLLOW

PBAFIRSTVVBBA

BFOLLOWFIRST

PBAVVBBA

SFOLLOW

kk

kk

))())()...((:...:...,(

))(::(

}){)(::(

111 AFIRSTYFIRSTYFIRSTtruncPYYAYYA

AFIRSTPAA

aaFIRSTaa

mkkkmm

k

k

Análisis Predictivo

Profs. Carlos Pérez y Ricardo Monascal

• Look-ahead:

)))().(()(

:)(:,( *

AFOLLOWFIRSTtruncALookAhead

PAVA

kkkk

Analizadores LL(1)

• Con un look-ahead de tamaño k podemos saber que frases de tamaño k espera una regla para usarla.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• Con un look-ahead de tamaño k podemos saber que frases de tamaño k espera una regla para usarla.

• Vamos a usar los look-ahead para construir un autómata que realice el reconocimiento de manera eficiente…

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• Con un look-ahead de tamaño k podemos saber que frases de tamaño k espera una regla para usarla.

• Vamos a usar los look-ahead para construir un autómata que realice el reconocimiento de manera eficiente…

– … ¡Y es determinista!

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• La idea del analizador LL(k) es:

– Construir un reconocedor descendente.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• La idea del analizador LL(k) es:

– Construir un reconocedor descendente.

– Tanto con los siguientes k símbolos como con LookAheadk, determinar la regla a tomar en cada paso.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• La idea del analizador LL(k) es:

– Construir un reconocedor descendente.

– Tanto con los siguientes k símbolos como con LookAheadk, determinar la regla a tomar en cada paso.

• Antes que nada, limitaremos en 1 la cantidad de caracteres a leer.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• La idea del analizador LL(k) es:

– Construir un reconocedor descendente.

– Tanto con los siguientes k símbolos como con LookAheadk, determinar la regla a tomar en cada paso.

• Antes que nada, limitaremos en 1 la cantidad de caracteres a leer.

– Luego veremos el impacto que acarrea el caso general.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• ¿Cómo construir un analizador LL(1)?

– Necesitaremos construir el mecanismo de predicción.

– Para eso usaremos una tabla, llamada reglas.

• Las filas corresponderán a símbolos no terminales.

• Las columnas corresponderán a símbolos terminales.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• ¿Cómo construir un analizador LL(1)?

Dada una regla de la forma :

– Queremos saber que reglas aplicar dado el inicio de la entrada.

Profs. Carlos Pérez y Ricardo Monascal

)],[:)(:( 1 AaAreglasFIRSTaa

A

Analizadores LL(1)

• ¿Cómo construir un analizador LL(1)?

Dada una regla de la forma :

– Ahora, si , usaremos los símbolos que siguen a α.

Profs. Carlos Pérez y Ricardo Monascal

A

)(1 FIRST

)],[:

)()(:( 11

AbAreglas

FOLLOWbFIRSTb

Analizadores LL(1)

• ¿Cómo construir un analizador LL(1)?

Dada una regla de la forma :

– Ahora, si , usaremos los símbolos que siguen a α.

Profs. Carlos Pérez y Ricardo Monascal

)],[:

)()(:( 11

AbAreglas

FOLLOWbFIRSTb

A

¿Y $?

)(1 FIRST

Analizadores LL(1)

• ¿Cómo construir un analizador LL(1)?

Dada una regla de la forma :

– Ahora, si , usaremos los símbolos que siguen a α.

Profs. Carlos Pérez y Ricardo Monascal

A

)(1 FIRST

)],[:

)()(:{$}( 11

AbAreglas

FOLLOWbFIRSTb

Analizadores LL(1)

• ¿Cómo construir un analizador LL(1)?

Dada una regla de la forma :

– Ahora, si , usaremos los símbolos que siguen a α.

¡MUCHO MEJOR!

Profs. Carlos Pérez y Ricardo Monascal

)],[:

)()(:{$}( 11

AbAreglas

FOLLOWbFIRSTb

A

)(1 FIRST

Analizadores LL(1)

• Aplicando esos pasos, se construye lo que es la tabla de reconocimiento LL(1).

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• Aplicando esos pasos, se construye lo que es la tabla de reconocimiento LL(1).

• Lo único que falta es... ¿cómo usar la tabla para poder reconocer una frase?

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• Un analizador LL(1) está compuesto por:

– Una pila que contendrá símbolos de la gramática.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• Un analizador LL(1) está compuesto por:

– Una pila que contendrá símbolos de la gramática.

– El sufijo de la frase original que queda por leer.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• Un analizador LL(1) está compuesto por:

– Una pila que contendrá símbolos de la gramática.

– El sufijo de la frase original que queda por leer.

– La tabla de reconocimiento construida en el paso anterior.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• Un analizador LL(1) está compuesto por:

– Una pila que contendrá símbolos de la gramática.

– El sufijo de la frase original que queda por leer.

– La tabla de reconocimiento construida en el paso anterior.

– Un mecanismo de salida, que imprima que producción se aplicó en el paso correspondiente.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• La máquina comenzará con la siguiente configuración:

– La máquina comienza con el símbolo inicial de la gramática empilada.

– Se comienza con la frase completa.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• La máquina comenzará con la siguiente configuración:

– La máquina comienza con el símbolo inicial de la gramática empilada.

– Se comienza con la frase completa.

¡A RECONOCERRRRRRRRR!

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• Considere X como el tope de la pila y a el símbolo inicial de la frase.

– Si X es un símbolo no terminal, se consulta la casilla reglas[X,a].

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(1)

• Considere X como el tope de la pila y a el símbolo inicial de la frase.

– Si X es un símbolo no terminal, se consulta la casilla reglas[X,a].

– Si hay una regla, , entonces:

• Se desempila X.

• Se empila Yn…Y2Y1, tal que Y1 quede en el tope de la pila.

• Se imprime la producción resultante.

Profs. Carlos Pérez y Ricardo Monascal

nYYYX 2`1

Analizadores LL(1)

• Considere X como el tope de la pila y a el símbolo inicial de la frase.

– Si X es un símbolo no terminal, se consulta la casilla reglas[X,a].

– Si hay una regla, , entonces:

• Se desempila X.

• Se empila Yn…Y2Y1, tal que Y1 quede en el tope de la pila.

• Se imprime la producción resultante.

– Si no, se tranca la máquina rechazando la palabra.

Profs. Carlos Pérez y Ricardo Monascal

nYYYX 2`1

Analizadores LL(1)

• Considere X como el tope de la pila y a el símbolo inicial de la frase.

– Si X = a, el símbolo del tope de la pila coincide con el elemento apuntado, por lo que se desempila X y se consume un símbolo de la entrada.

– Si X = $ y a = ⊥, se detiene la máquina, aceptando la frase.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Observe que, aunque el uso de FIRST1 y FOLLOW1 está explícito en las láminas anteriores, es equivalente a usar LookAhead1.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Observe que, aunque el uso de FIRST1 y FOLLOW1 está explícito en las láminas anteriores, es equivalente a usar LookAhead1.

• Ahora, considere el caso general.

– ¿Cómo funcionaría?

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Observe que, aunque el uso de FIRST1 y FOLLOW1 está explícito en las láminas anteriores, es equivalente a usar LookAhead1.

• Ahora, considere el caso general.

– ¿Cómo funcionaría?

– Tomaría la decisión con los k primeros símbolos de lo que queda de entrada, considerando LookAheadk.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Observe que, aunque el uso de FIRST1 y FOLLOW1 está explícito en las láminas anteriores, es equivalente a usar LookAhead1.

• Ahora, considere el caso general.

– ¿Cómo funcionaría?

– Tomaría la decisión con los k primeros símbolos de lo que queda de entrada, considerando LookAheadk.

• ¿Tiene sentido hablar de un analizador LL(0)?

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Ahora, considere el caso general.

– Tomaría la decisión con los k primeros símbolos de lo que queda de entrada, considerando LookAheadk.

• ¿Cómo sería el tamaño de la tabla de reconocimiento?

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Ahora, considere el caso general.

– Tomaría la decisión con los k primeros símbolos de lo que queda de entrada, considerando LookAheadk.

• ¿Cómo sería el tamaño de la tabla de reconocimiento?

– ¡Explosión exponencial de espacio!

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Ahora, considere el caso general.

– Tomaría la decisión con los k primeros símbolos de lo que queda de entrada, considerando LookAheadk.

• ¿Cómo sería el tamaño de la tabla de reconocimiento?

– ¡Explosión exponencial de espacio!

– ¿Y cómo marcarían el final de la entrada?

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• ¿Será que toda gramática genera un lenguaje LL(1)?

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• ¿Será que toda gramática genera un lenguaje LL(1)?

– ¿Y uno LL(k)?

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• ¿Será que toda gramática genera un lenguaje LL(1)?

– ¿Y uno LL(k)?

• Una gramática no es LL(k) si presenta algún conflicto.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Un conflicto en una gramática LL(k) surge cuando existen dos reglas con mismo símbolo no terminal a izquierda que compartan algún elemento en sus look-ahead.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Un conflicto en una gramática LL(k) surge cuando existen dos reglas con mismo símbolo no terminal a izquierda que compartan algún elemento en sus look-ahead.

– Aumentando la k, se puede solventar el conflicto.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Un conflicto en una gramática LL(k) surge cuando existen dos reglas con mismo símbolo no terminal a izquierda que compartan algún elemento en sus look-ahead.

– Aumentando la k, se puede solventar el conflicto.

Profs. Carlos Pérez y Ricardo Monascal

¡PERO NO ES

SEGURO!

Analizadores LL(k) y LL(*)

• No todas las gramáticas pueden ser LL(k) para cualquier k.

– Las que si lo son, tienen un k mínimo que garantiza que la gramática sea LL.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• No todas las gramáticas pueden ser LL(k) para cualquier k.

– Las que si lo son, tienen un k mínimo que garantiza que la gramática sea LL.

– … ¡pero el caso que se necesiten los k símbolos en el look-ahead ocurre poco!

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• No todas las gramáticas pueden ser LL(k) para cualquier k.

– Las que si lo son, tienen un k mínimo que garantiza que la gramática sea LL.

– … ¡pero el caso que se necesiten los k símbolos en el look-ahead ocurre poco!

• Para eso se introduce un grupo de analizadores sintácticos con poder…

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• No todas las gramáticas pueden ser LL(k) para cualquier k.

– Las que si lo son, tienen un k mínimo que garantiza que la gramática sea LL.

– … ¡pero el caso que se necesiten los k símbolos en el look-ahead ocurre poco!

• Para eso se introduce un grupo de analizadores sintácticos con poder…

¡Los analizadores LL(*)!

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Un analizador LL(*) funciona de la siguiente forma:

1. Se intenta resolver la regla con look-ahead 1.

2. Si no, entonces aumenta el look-ahead al siguiente umbral (la regla que requiera un look-ahead mayor).

• Si se consigue una regla, se aplica el siguiente paso.

• Si no, vuelve al paso 2.

• Este manejo de look-aheads se hace con un Autómata Finito Determinista.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Un analizador LL(*) no necesita definir un k.

– El mismo generador reconoce cual es el k mínimo que se necesita.

– El tamaño de la predicción varía dependiendo de las reglas.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Un analizador LL(*) no necesita definir un k.

– El mismo generador reconoce cual es el k mínimo que se necesita.

– El tamaño de la predicción varía dependiendo de las reglas.

• Es usado en la herramienta de generadores de reconocedores ANTLR.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Con esto, estudiamos la familia de los Analizadores Sintácticos Descendientes.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Con esto, estudiamos la familia de los Analizadores Sintácticos Descendientes.

• Existen otra familia de Analizadores Sintácticos...

– … los Analizadores Sintácticos Ascendentes.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Con esto, estudiamos la familia de los Analizadores Sintácticos Descendientes.

• Existen otra familia de Analizadores Sintácticos...

– … los Analizadores Sintácticos Ascendentes.

• Estos Analizadores los estudiaremos en la próxima clase.

Profs. Carlos Pérez y Ricardo Monascal

Analizadores LL(k) y LL(*)

• Con esto, estudiamos la familia de los Analizadores Sintácticos Descendientes.

• Existen otra familia de Analizadores Sintácticos...

– … los Analizadores Sintácticos Ascendentes.

• Estos Analizadores los estudiaremos en la próxima clase.

Profs. Carlos Pérez y Ricardo Monascal