Transcript
Page 1: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

PROCESADORES DE LENGUAJESTEMA IV.- ANALISIS SINTACTICO DESCENDENTE

Prof. Dr. Nicolas Luis Fernandez Garcıa

Departamento de Informatica y Analisis NumericoEscuela Politecnica Superior de Cordoba

Universidad de Cordoba

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 1 / 667

Page 2: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Programa

Tema I.- Introduccion

Tema II.- Analisis Lexicografico

Tema III.- Fundamentos Teoricos del Analisis Sintactico

Tema IV.- Analisis Sintactico Descendente

Tema V.- Analisis Sintactico Ascendente

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 2 / 667

Page 3: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Programa

1 Introduccion

2 Descenso recursivo con retroceso o backtracking

3 Analisis sintactico descendente predictivo

4 Deteccion y recuperacion de errores

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 3 / 667

Page 4: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Programa

1 Introduccion

2 Descenso recursivo con retroceso o backtracking

3 Analisis sintactico descendente predictivo

4 Deteccion y recuperacion de errores

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 4 / 667

Page 5: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Programa

1 Introduccion

2 Descenso recursivo con retroceso o backtracking

3 Analisis sintactico descendente predictivo

4 Deteccion y recuperacion de errores

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 5 / 667

Page 6: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Programa

1 Introduccion

2 Descenso recursivo con retroceso o backtracking

3 Analisis sintactico descendente predictivo

4 Deteccion y recuperacion de errores

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 6 / 667

Page 7: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido del tema

1 Introduccion

2 Descenso recursivo con retroceso o backtracking

3 Analisis sintactico descendente predictivo

4 Deteccion y recuperacion de errores

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 7 / 667

Page 8: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

1 IntroduccionObjetivoTipos de analisis sintactico descendenteLimitacion general

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 8 / 667

Page 9: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionObjetivo

Estrategias

Comprobar si una gramatica genera una cadena de entradautilizando alguna de las siguientes estrategias:

Construccion de una derivacion por la izquierda de la cadenade entrada.Construccion de un arbol sintactico de forma descendentedesde la raız hasta las hojas.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 9 / 667

Page 10: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionObjetivo

Ejemplo (Gramatica de expresiones aritmeticas 1 / 15)

P = {(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero

}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 10 / 667

Page 11: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionObjetivo

Ejemplo (Gramatica de expresiones aritmeticas 2 / 15)

Sentencia de asignacion

identificador = identificador + numero * identificador

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 11 / 667

Page 12: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionObjetivo

Ejemplo (Gramatica de expresiones aritmeticas 3 / 15)

Sentencia: id = id + n * idDerivacion por la izquierda

S

Arbol sintactico

S

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 12 / 667

Page 13: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionObjetivo

Ejemplo (Gramatica de expresiones aritmeticas 4 / 15)

Sentencia: id = id + n * idDerivacion por la izquierda

S ⇒1

id = E

Emparejamientos: id, =

Arbol sintactico

identificador =

S

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 13 / 667

Page 14: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionObjetivo

Ejemplo (Gramatica de expresiones aritmeticas 5 / 15)

Sentencia: id = id + n * idDerivacion por la izquierda

S ⇒1

id = E

⇒2

id = TE ′

Arbol sintactico

identificador =

S

T

E

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 14 / 667

Page 15: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionObjetivo

Ejemplo (Gramatica de expresiones aritmeticas 6 / 15)

Sentencia: id = id + n * idDerivacion por la izquierda

S ⇒1

id = E

⇒2

id = T E ′

⇒5

id = FT ′E ′

Arbol sintactico

F

identificador =

S

T E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 15 / 667

Page 16: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionObjetivo

Ejemplo (Gramatica de expresiones aritmeticas 7 / 15)

Sentencia: id = id + n * idDerivacion por la izquierda

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = F T ′E ′

⇒9

id = idT ′E ′

Emparejamiento de id

Arbol sintactico

F

identificadoridentificador =

S

T E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 16 / 667

Page 17: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionObjetivo

Ejemplo (Gramatica de expresiones aritmeticas 8 / 15)

Sentencia: id = id + n * idDerivacion por la izquierda

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = id T ′E ′

⇒7

id = id ε E ′

Arbol sintactico

F

identificadoridentificador =

S

T

ε

E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 17 / 667

Page 18: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionObjetivo

Ejemplo (Gramatica de expresiones aritmeticas 9 / 15)

Sentencia: id = id + n * idDerivacion por la izquierda

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = id T ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε +TE ′

Emparejamiento de +

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

E

T E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 18 / 667

Page 19: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionObjetivo

Ejemplo (Gramatica de expresiones aritmeticas 10 / 15)

Sentencia: id = id + n * idDerivacion por la izquierda

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + T E ′

⇒5

id = id ε + FT ′E ′

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

F

E

T

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 19 / 667

Page 20: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionObjetivo

Ejemplo (Gramatica de expresiones aritmeticas 11 / 15)

Sentencia: id = id + n * idDerivacion por la izquierda

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + F T ′E ′

⇒10

id = id ε + nT ′E ′

Emparejamiento de n

Arbol sintactico

F

identificadoridentificador =

S

número+

T

ε

E’

T’

F

E

T

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 20 / 667

Page 21: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionObjetivo

Ejemplo (Gramatica de expresiones aritmeticas 12 / 15)

Sentencia: id = id + n * idDerivacion por la izquierda

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + nT ′E ′

⇒6

id = id ε + n ∗FT ′E ′

Emparejamiento de *

Arbol sintactico

F

identificadoridentificador =

S

número *+

T

ε

E’

T’

F

E

T

T’F

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 21 / 667

Page 22: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionObjetivo

Ejemplo (Gramatica de expresiones aritmeticas 13 / 15)

Sentencia: id = id + n * idDerivacion por la izquierda

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ F T ′E ′

⇒9

id = id ε + n ∗ idT ′E ′

Emparejamiento de id

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 22 / 667

Page 23: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionObjetivo

Ejemplo (Gramatica de expresiones aritmeticas 14 / 15)

Sentencia: id = id + n * idDerivacion por la izquierda

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 23 / 667

Page 24: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionObjetivo

Ejemplo (Gramatica de expresiones aritmeticas 15 / 15)

Sentencia: id = id + n * idDerivacion por la izquierda

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

⇒4

id = id ε + n ∗ id ε ε

Arbol sintactico

F

identificadoridentificador =

S

número * ε+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 24 / 667

Page 25: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

1 IntroduccionObjetivoTipos de analisis sintactico descendenteLimitacion general

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 25 / 667

Page 26: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionTipos de analisis sintactico descendente

Tipos de analisis sintactico descendente

1.- Metodo de descenso recursivo con retroceso o backtracking.

2.- Metodo de descenso predictivo, es decir, sin retroceso.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 26 / 667

Page 27: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionTipos de analisis sintactico descendente

1.- Metodo de descenso recursivo con retroceso o backtracking

Utiliza funciones asociadas a los sımbolos no terminales de lagramatica.

Cada funcion intenta simular el uso de las reglas deproduccion del sımbolo no terminal asociado.

Las funciones pueden ser recursivas.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 27 / 667

Page 28: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionTipos de analisis sintactico descendente

2.- Metodo de descenso predictivo

Utiliza una tabla predictiva para determinar que regla deproduccion se puede usar en cada paso.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 28 / 667

Page 29: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionTipos de analisis sintactico descendente

2.- Metodo de descenso predictivo

Tipos de implementacionMetodo recursivo

Codifica una funcion para cada sımbolo no terminal de lagramatica.El codigo de la funcion esta basado en la tabla predictiva.Cada funcion determina cual es la unica regla de produccionque se puede utilizar en cada paso.Las funciones pueden ser recursivas.

Metodo iterativo

En cada paso, consulta la tabla predictiva para determinar launica regla de produccion que se puede aplicar.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 29 / 667

Page 30: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

1 IntroduccionObjetivoTipos de analisis sintactico descendenteLimitacion general

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 30 / 667

Page 31: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

IntroduccionLimitacion general

Limitacion general

El analisis descendente no se puede realizar si la gramaticaposee recursividad por la izquierda.

(Se explicara en las siguientes secciones).

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 31 / 667

Page 32: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido del tema

1 Introduccion

2 Descenso recursivo con retroceso o backtracking

3 Analisis sintactico descendente predictivo

4 Deteccion y recuperacion de errores

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 32 / 667

Page 33: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

2 Descenso recursivo con retroceso o backtrackingDescripcionImplementacionLimitaciones o inconvenientes

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 33 / 667

Page 34: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Caracterısticas

Metodo exhaustivo o de fuerza bruta:

Metodo de ensayo y error: para reconocer una cadena, intentaaplicar (simular) todas las reglas de produccion que puedaemplear en su derivacion.

Metodo con retroceso:

Si la simulacion de una regla de produccion de A ∈ VN escorrecta, el analisis continua.En caso contrario, hay dos posibilidades:

Retroceso: intenta probar con otra regla de A, si existe,retrocediendo en la cadena de entrada.Error: la simulacion fracasa si A no posee mas reglas deproduccion.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 34 / 667

Page 35: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Simulacion de la regla A −→ X1X2 . . .Xn ∈ P

Para i desde 1 hasta n hacer

Si Xi ∈ VN entonces se elige una regla de produccion de Xi yse simula su funcionamiento.

Si tiene exito, continua el analisis.En caso contrario, hay dos posibilidades:

Retroceso: se elige otra regla de Xi , si existe.Error: la simulacion fracasa si Xi no posee mas reglas deproduccion.

Si Xi ∈ VT entonces se intenta emparejar con el componentelexico actual de la cadena de entrada.

Si son iguales, el analisis continua.En caso contario, fracasa la simulacion de esta regla de A

fin para

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 35 / 667

Page 36: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Nota (Simulacion de la regla A −→ ε)

La simulacion de la regla ε siempre tiene exito.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 36 / 667

Page 37: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplos

1.- Gramatica simple.

2.- Gramatica que genera sentencias de asignacion de expresionesaritmeticas.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 37 / 667

Page 38: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (1.- Gramatica simple 1 / 12)

GramaticaP = {

(1) S −→ c A d(2) A −→ a b(3) A −→ a

}Analisis de c a d

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 38 / 667

Page 39: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (1.- Gramatica simple 2 / 12)

GramaticaP = {

(1) S −→ c A d(2) A −→ a b(3) A −→ a

}Analisis de c a d

Sımbolo inicial: S

Arbol sintactico

S

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 39 / 667

Page 40: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (1.- Gramatica simple 3 / 12)

GramaticaP = {

(1) S −→ c A d(2) A −→ a b(3) A −→ a

}Analisis de c a d

Regla de S

S⇒1

cAd

Arbol sintactico

A d

S

c

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 40 / 667

Page 41: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (1.- Gramatica simple 4 / 12)

GramaticaP = {

(1) S −→ c A d(2) A −→ a b(3) A −→ a

}Analisis de c a d

Emparejamiento de c

S⇒1

cAd

Arbol sintactico

A d

S

c

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 41 / 667

Page 42: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (1.- Gramatica simple 5 / 12)

GramaticaP = {

(1) S −→ c A d(2) A −→ a b(3) A −→ a

}Analisis de c a d

Primera regla de A

S⇒1

cAd⇒2

cabd

Arbol sintactico

A d

S

b

c

a

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 42 / 667

Page 43: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (1.- Gramatica simple 6 / 12)

GramaticaP = {

(1) S −→ c A d(2) A −→ a b(3) A −→ a

}Analisis de c a d

Emparejamiento de a

S⇒1

cAd⇒2

cabd

Arbol sintactico

A d

S

b

c

a

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 43 / 667

Page 44: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (1.- Gramatica simple 7 / 12)

GramaticaP = {

(1) S −→ c A d(2) A −→ a b(3) A −→ a

}Analisis de c a d

Fallo al emparejar b

S⇒1

cAd⇒2

cabd

Arbol sintactico

A d

S

b

c

a

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 44 / 667

Page 45: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (1.- Gramatica simple 8 / 12)

GramaticaP = {

(1) S −→ c A d(2) A −→ a b(3) A −→ a

}Analisis de c a d

Retroceso

S⇒1

cAd

Arbol sintactico

A d

S

c

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 45 / 667

Page 46: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (1.- Gramatica simple 9 / 12)

GramaticaP = {

(1) S −→ c A d(2) A −→ a b(3) A −→ a

}Analisis de c a d

Segunda regla de A

S⇒1

cAd⇒3

cad

Arbol sintactico

Ac

S

a

d

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 46 / 667

Page 47: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (1.- Gramatica simple 10 / 12)

GramaticaP = {

(1) S −→ c A d(2) A −→ a b(3) A −→ a

}Analisis de c a d

Emparejamiento de a

S⇒1

cAd⇒3

cad

Arbol sintactico

Ac

S

a

d

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 47 / 667

Page 48: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (1.- Gramatica simple 11 / 12)

GramaticaP = {

(1) S −→ c A d(2) A −→ a b(3) A −→ a

}Analisis de c a d

Emparejamiento de d

S⇒1

cAd⇒3

cad

Arbol sintactico

Ac

S

a

d

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 48 / 667

Page 49: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (1.- Gramatica simple 12 / 12)

GramaticaP = {

(1) S −→ c A d(2) A −→ a b(3) A −→ a

}Analisis de c a d

Fin del analisis

S⇒1

cAd⇒3

cad

Arbol sintactico

Ac

S

a

d

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 49 / 667

Page 50: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 1 / 29)

P = {(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero

}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 50 / 667

Page 51: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 2 / 29)

Analisis mediante descenso recursivo con retroceso:

identificador = identificador + numero * identificador

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 51 / 667

Page 52: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 3 / 29)

Analisis de id = id + n * id

S

Arbol sintactico

S

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 52 / 667

Page 53: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 4 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

Emparejamientos: id, =

Arbol sintactico

identificador =

S

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 53 / 667

Page 54: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 5 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

Arbol sintactico

identificador =

S

T

E

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 54 / 667

Page 55: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 6 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = T E ′

⇒5

id = FT ′E ′

Arbol sintactico

F

identificador =

S

T E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 55 / 667

Page 56: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 7 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = F T ′E ′

⇒8

id =(E)T ′E ′

Error al emparejar

Arbol sintactico

F

(identificador =

S

T E’

T’

E

E

)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 56 / 667

Page 57: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 8 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = T E ′

⇒5

id = FT ′E ′

Retroceso

Arbol sintactico

F

identificador =

S

T E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 57 / 667

Page 58: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 9 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = F T ′E ′

⇒9

id = idT ′E ′

Emparejamiento de id

Arbol sintactico

F

identificadoridentificador =

S

T E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 58 / 667

Page 59: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 10 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = id T ′E ′

⇒6

id = id ∗FT ′E ′

Error al emparejar

Arbol sintactico

F

identificadoridentificador =

S

T

E’

T’

E

F T’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 59 / 667

Page 60: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 11 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = F T ′E ′

⇒9

id = idT ′E ′

Retroceso

Arbol sintactico

F

identificadoridentificador =

S

T E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 60 / 667

Page 61: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 12 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = id T ′E ′

⇒7

id = id ε E ′

Arbol sintactico

F

identificadoridentificador =

S

T

ε

E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 61 / 667

Page 62: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 13 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = id T ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε +TE ′

Emparejamiento de +

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

E

T E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 62 / 667

Page 63: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 14 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + T E ′

⇒5

id = id ε + FT ′E ′

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

F

E

T

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 63 / 667

Page 64: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 15 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + F T ′E ′

⇒8

id = id ε + (E)T ′E ′

Error al emparejar

Arbol sintactico

F

identificadoridentificador =

S

(+

T

ε

E’

T’

F

E

T

T’

E’

E

)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 64 / 667

Page 65: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 16 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + T E ′

⇒5

id = id ε + FT ′E ′

Retroceso

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

F

E

T

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 65 / 667

Page 66: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 17 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + F T ′E ′

⇒9

id = id ε + idT ′E ′

Error al emparejar

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

F

E

T

T’

E’

id

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 66 / 667

Page 67: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 18 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + T E ′

⇒5

id = id ε + FT ′E ′

Retroceso

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

F

E

T

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 67 / 667

Page 68: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 19 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + F T ′E ′

⇒10

id = id ε + nT ′E ′

Emparejamiento de n

Arbol sintactico

F

identificadoridentificador =

S

número+

T

ε

E’

T’

F

E

T

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 68 / 667

Page 69: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 20 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + nT ′E ′

⇒6

id = id ε + n ∗FT ′E ′

Emparejamiento de *

Arbol sintactico

F

identificadoridentificador =

S

número *+

T

ε

E’

T’

F

E

T

T’F

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 69 / 667

Page 70: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 21 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ F T ′E ′

⇒8

id = id ε + n ∗ (E)T ′E ′

Error al emparejar

Arbol sintactico

F

identificadoridentificador =

S

número *+ (

T

ε

E’

T’

F

E

T

T’F

T’

E’

)E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 70 / 667

Page 71: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 22 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + nT ′E ′

⇒6

id = id ε + n ∗FT ′E ′

Retroceso

Arbol sintactico

F

identificadoridentificador =

S

número *+

T

ε

E’

T’

F

E

T

T’F

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 71 / 667

Page 72: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 23 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ F T ′E ′

⇒9

id = id ε + n ∗ idT ′E ′

Emparejamiento de id

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 72 / 667

Page 73: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 24 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒6

id = id ε + n ∗ id ∗FT ′E ′

Error al emparejar

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

F T’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 73 / 667

Page 74: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 25 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ F T ′E ′

⇒9

id = id ε + n ∗ idT ′E ′

Retroceso

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 74 / 667

Page 75: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 26 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 75 / 667

Page 76: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 27 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

⇒3

id = id ε + n ∗ id ε +TE ′

Error al emparejar

Arbol sintactico

F

identificadoridentificador =

S

número * ++ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

T E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 76 / 667

Page 77: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 28 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

Retroceso

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 77 / 667

Page 78: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingDescripcion

Ejemplo (2.- Gramatica de expresiones aritmeticas 29 / 29)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

⇒4

id = id ε + n ∗ id ε ε

Cadena generada

Arbol sintactico

F

identificadoridentificador =

S

número * ε+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 78 / 667

Page 79: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

2 Descenso recursivo con retroceso o backtrackingDescripcionImplementacionLimitaciones o inconvenientes

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 79 / 667

Page 80: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Metodo

Se codifica una funcion para cada sımbolo A ∈ VN

Si A posee alguna regla recursiva entonces la funcion esrecursiva.

La funcion simula una a una las reglas de produccion de A.

La funcion devuelve un valor logico:

Si la simulacion de una regla es correcta, la funcion devuelveVerdaderoEn caso contrario, intenta probar con otra regla de A, si existe.Si todas las reglas de A fallan entonces la funcion devuelveFalso.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 80 / 667

Page 81: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Nota (Referencia)

Al probar con una regla, se debe establecer una referencia alcomponente lexico actual.

Dicha referencia sera utilizada si hay retroceso para simularotra regla.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 81 / 667

Page 82: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Simulacion de la regla A −→ X1X2 . . .Xn ∈ P

Para i desde 1 hasta n hacer

Si Xi ∈ VN entonces se llama a la funcion asociada al sımboloXi

Si tiene exito, continua el analisis.En caso contario, fracasa la simulacion de esta regla de A.

Si Xi ∈ VT entonces se intenta emparejar con el componentelexico actual de la cadena de entrada.

Si son iguales, el analisis continua.En caso contario, fracasa la simulacion de esta regla de A.

fin para

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 82 / 667

Page 83: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Nota (Simulacion de la regla A −→ ε)

La simulacion de la regla ε siempre tiene exito.

Si un sımbolo A posee una regla ε,

debera ser simulada en ultimo lugary la funcion siempre devolvera el valor Verdadero.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 83 / 667

Page 84: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas)

Primera parte: codificacion de funciones asociadas asımbolos no terminales de una gramatica.

Segunda parte: uso de las funciones para analizar unaexpresion aritmetica.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 84 / 667

Page 85: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas)

Primera parte: codificacion de funciones asociadas asımbolos no terminales de una gramatica.

Segunda parte: uso de las funciones para analizar unaexpresion aritmetica.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 85 / 667

Page 86: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 1 / 9)

P = {(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero

}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 86 / 667

Page 87: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 2 / 9)

Codificacion de las funciones asociadas a los sımbolos noterminales: S, E, E’, T, T’ y F.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 87 / 667

Page 88: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion S: logico 3 / 9)

inicio

{SIMULACION DE (1) S→ identificador = E}

si emparejar(identificador) = VERDADERO entonces

avanzar entrada

si emparejar(“=”) = VERDADERO entonces

avanzar entrada

si E = VERDADERO entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

· · ·

· · ·

si no {empareja “=”}

DEVOLVER FALSO

fin si

si no {empareja identificador }

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 88 / 667

Page 89: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion E: logico 4 / 9)

inicio

{SIMULACION DE (2) E → T E’}si T = VERDADERO entonces

si E’ = VERDADERO entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

si no

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 89 / 667

Page 90: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion E’: logico 5 / 9)

inicio

referencia← componente lexico actual

{SIMULACION DE (3) E’→ + T E’}

si emparejar (“+”) = VERDADERO entonces

avanzar entrada

si T = VERDADERO entonces

si E’ = VERDADERO entonces

DEVOLVER VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “+” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (4) E’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 90 / 667

Page 91: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T: logico 6 / 9)

inicio

{SIMULACION DE (5) T → F T’}si F = VERDADERO entonces

si T’ = VERDADERO entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

si no

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 91 / 667

Page 92: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T’: logico 7 / 9)

inicio

referencia← componente lexico actual

{SIMULACION DE (6) T’→ * F T’}

si emparejar (“*”) = VERDADERO entonces

avanzar entrada

si F = VERDADERO entonces

si T’ = VERDADERO entonces

devolver VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “*” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (7) T’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 92 / 667

Page 93: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (primera parte) 8 / 9)

inicio

referencia← componente lexico actual

{SIMULACION DE (8) F→ ( E )}

si emparejar (“(”) = VERDADERO entonces

avanzar entrada

si E = VERDADERO entonces

si emparejar (“)”) = VERDADERO entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja “)”}

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no {es verdadero E}

retroceder entrada(referencia)

fin si

si no {empareja “(”}

retroceder entrada(referencia)

fin si

· · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 93 / 667

Page 94: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (segunda parte) 9 / 9)

· · ·

{SIMULACION DE (9) F→ identificador }

si emparejar (identificador) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja identificador }

retroceder entrada(referencia)

fin si

· · ·

· · ·

{SIMULACION DE (10) F→ numero }

si emparejar (numero) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja numero }

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 94 / 667

Page 95: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas)

Primera parte: codificacion de funciones asociadas asımbolos no terminales de una gramatica.

Segunda parte: uso de las funciones para analizar unaexpresion aritmetica.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 95 / 667

Page 96: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 1 / 113)

Uso de las funciones para analizar la sentencia:

identificador = identificador + numero * identificador

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 96 / 667

Page 97: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 2 / 113)

Llamada a la funcion asociada al sımbolo inicial S

Arbol de activacion

S

Pila de activacion

S

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 97 / 667

Page 98: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 3 / 113)

Analisis de id = id + n * id

S

Arbol sintactico

S

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 98 / 667

Page 99: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion S: logico 4 / 113)

inicio

{SIMULACION DE (1) S→ identificador = E}

si emparejar(identificador) = VERDADERO entonces

avanzar entrada

si emparejar(“=”) = VERDADERO entonces

avanzar entrada

si E = VERDADERO entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

· · ·

· · ·

si no {empareja “=”}

DEVOLVER FALSO

fin si

si no {empareja identificador }

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 99 / 667

Page 100: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 5 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

Emparejamientos: id, =

Arbol sintactico

identificador =

S

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 100 / 667

Page 101: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion S: logico 6 / 113)

inicio

{SIMULACION DE (1) S→ identificador = E}

si emparejar(identificador) = VERDADERO entonces

avanzar entrada

si emparejar(“=”) = VERDADERO entonces

si E = VERDADERO entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

· · ·

· · ·

si no {empareja “=”}

DEVOLVER FALSO

fin si

si no {empareja identificador }

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 101 / 667

Page 102: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion S: logico 7 / 113)

inicio

{SIMULACION DE (1) S→ identificador = E}

si emparejar(identificador) = VERDADERO entonces

si emparejar(“=”) = VERDADERO entonces

avanzar entrada

si E = VERDADERO entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

· · ·

· · ·

si no {empareja “=”}

DEVOLVER FALSO

fin si

si no {empareja identificador }

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 102 / 667

Page 103: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion S: logico 8 / 113)

inicio

{SIMULACION DE (1) S→ identificador = E}

si emparejar(identificador) = VERDADERO entonces

avanzar entrada

si emparejar(“=”) = VERDADERO entonces

avanzar entrada

si E = VERDADERO entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

· · ·

· · ·

si no {empareja “=”}

DEVOLVER FALSO

fin si

si no {empareja identificador }

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 103 / 667

Page 104: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 9 / 113)

Llamada a la funcion asociada al sımbolo E

Arbol de activacion

E

S

Pila de activacion

S

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 104 / 667

Page 105: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion E: logico 10 / 113)

inicio

{SIMULACION DE (2) E → T E’}

si T = VERDADERO entonces

si E’ = VERDADERO entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

si no

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 105 / 667

Page 106: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 11 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

Arbol sintactico

identificador =

S

T

E

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 106 / 667

Page 107: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion E: logico 12 / 113)

inicio

{SIMULACION DE (2) E → T E’}si T = VERDADERO entonces

si E’ = VERDADERO entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

si no

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 107 / 667

Page 108: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 13 / 113)

Llamada a la funcion asociada al sımbolo T

Arbol de activacion

E

T

S

Pila de activacion

S

E

T

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 108 / 667

Page 109: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T: logico 14 / 113)

inicio

{SIMULACION DE (5) T → F T’}

si F = VERDADERO entonces

si T’ = verdadero entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

si no

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 109 / 667

Page 110: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 15 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = T E ′

⇒5

id = FT ′E ′

Arbol sintactico

F

identificador =

S

T E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 110 / 667

Page 111: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T: logico 16 / 113)

inicio

{SIMULACION DE (5) T → F T’}si F = VERDADERO entonces

si T’ = verdadero entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

si no

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 111 / 667

Page 112: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 17 / 113)

Llamada a la funcion asociada al sımbolo F

Arbol de activacion

E

F

T

S

Pila de activacion

S

E

T

F

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 112 / 667

Page 113: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (primera parte) 18 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (8) F→ ( E )}

si emparejar (“(”) = VERDADERO entonces

avanzar entrada

si E = VERDADERO entonces

si emparejar (“)”) = VERDADERO entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja “)”}

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no {es verdadero E}

retroceder entrada(referencia)

fin si

si no {empareja “(”}

retroceder entrada(referencia)

fin si

· · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 113 / 667

Page 114: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (primera parte) 19 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (8) F→ ( E )}

si emparejar (“(”) = VERDADERO entonces

avanzar entrada

si E = VERDADERO entonces

si emparejar (“)”) = VERDADERO entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja “)”}

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no {es verdadero E}

retroceder entrada(referencia)

fin si

si no {empareja “(”}

retroceder entrada(referencia)

fin si

· · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 114 / 667

Page 115: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 20 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = F T ′E ′

⇒8

id =(E)T ′E ′

Error al emparejar

Arbol sintactico

F

(identificador =

S

T E’

T’

E

E

)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 115 / 667

Page 116: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (primera parte) 21 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (8) F→ ( E )}

si emparejar (“(”) = VERDADERO entonces

avanzar entrada

si E = VERDADERO entonces

si emparejar (“)”) = VERDADERO entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja “)”}

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no {es verdadero E}

retroceder entrada(referencia)

fin si

si no {empareja “(”}

retroceder entrada(referencia)

fin si

· · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 116 / 667

Page 117: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 22 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = T E ′

⇒5

id = FT ′E ′

Retroceso

Arbol sintactico

F

identificador =

S

T E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 117 / 667

Page 118: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (segunda parte) 23 / 113)

· · ·{SIMULACION DE (9) F→ identificador }

si emparejar (identificador) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja identificador }

retroceder entrada(referencia)

fin si

· · ·

· · ·

{SIMULACION DE (10) F→ numero }

si emparejar (numero) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja numero }

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 118 / 667

Page 119: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 24 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = F T ′E ′

⇒9

id = idT ′E ′

Emparejamiento de id

Arbol sintactico

F

identificadoridentificador =

S

T E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 119 / 667

Page 120: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (segunda parte) 25 / 113)

· · ·

{SIMULACION DE (9) F→ identificador }

si emparejar (identificador) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja identificador }

retroceder entrada(referencia)

fin si

· · ·

· · ·

{SIMULACION DE (10) F→ numero }

si emparejar (numero) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja numero }

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 120 / 667

Page 121: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 26 / 113)

Fin de la funcion asociada al sımbolo F

Regreso a la funcion asociada al sımbolo T

Arbol de activacion

E

F

T

S

Pila de activacion

S

E

T

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 121 / 667

Page 122: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T: logico 27 / 113)

inicio

{SIMULACION DE (5) T → F T’}si F = VERDADERO entonces

si T’ = verdadero entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

si no

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 122 / 667

Page 123: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 28 / 113)

LLamada a la funcion asociada al sımbolo T’

Arbol de activacion

E

F

T

T’

S

Pila de activacion

S

E

T

T’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 123 / 667

Page 124: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T’: logico 29 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (6) T’→ * F T’}

si emparejar (“*”) = VERDADERO entonces

avanzar entrada

si F = VERDADERO entonces

si T’ = VERDADERO entonces

devolver VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “*” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (7) T’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 124 / 667

Page 125: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T’: logico 30 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (6) T’→ * F T’}

si emparejar (“*”) = VERDADERO entonces

avanzar entrada

si F = VERDADERO entonces

si T’ = VERDADERO entonces

devolver VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “*” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (7) T’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 125 / 667

Page 126: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 31 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = id T ′E ′

⇒6

id = id ∗FT ′E ′

Error al emparejar

Arbol sintactico

F

identificadoridentificador =

S

T

E’

T’

E

F T’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 126 / 667

Page 127: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T’: logico 32 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (6) T’→ * F T’}

si emparejar (“*”) = VERDADERO entonces

avanzar entrada

si F = VERDADERO entonces

si T’ = VERDADERO entonces

devolver VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “*” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (7) T’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 127 / 667

Page 128: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 33 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = F T ′E ′

⇒9

id = idT ′E ′

Retroceso

Arbol sintactico

F

identificadoridentificador =

S

T E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 128 / 667

Page 129: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T’: logico 34 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (6) T’→ * F T’}

si emparejar (“*”) = VERDADERO entonces

avanzar entrada

si F = VERDADERO entonces

si T’ = VERDADERO entonces

devolver VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “*” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (7) T’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 129 / 667

Page 130: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 35 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = id T ′E ′

⇒7

id = id ε E ′

Arbol sintactico

F

identificadoridentificador =

S

T

ε

E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 130 / 667

Page 131: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 36 / 113)

Fin de la funcion asociada al sımbolo T’

Regreso a la funcion asociada al sımbolo T

Arbol de activacion

E

T

T’

S

F

Pila de activacion

S

E

T

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 131 / 667

Page 132: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T: logico 37 / 113)

inicio

{SIMULACION DE (5) T → F T’}si F = VERDADERO entonces

si T’ = verdadero entoncesDEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

si no

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 132 / 667

Page 133: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 38 / 113)

Fin de la funcion asociada al sımbolo T

Regreso a la funcion asociada al sımbolo E

Arbol de activacion

E

F

T

T’

S

Pila de activacion

S

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 133 / 667

Page 134: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion E: logico 39 / 113)

inicio

{SIMULACION DE (2) E → T E’}si T = VERDADERO entonces

si E’ = VERDADERO entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

si no

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 134 / 667

Page 135: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 40 / 113)

1a activacion de la funcion asociada al sımbolo E’

Arbol de activacion

E

F

T E’

T’

S

Pila de activacion

S

E

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 135 / 667

Page 136: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion E’: logico 41 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (3) E’→ + T E’}

si emparejar (“+”) = VERDADERO entonces

avanzar entrada

si T = VERDADERO entonces

si E’ = VERDADERO entonces

DEVOLVER VERDADERO

si no {empareja “+” }

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no

retroceder entrada(referencia)

fin si

{SIMULACION DE (4) E’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 136 / 667

Page 137: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion E’: logico 42 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (3) E’→ + T E’}

si emparejar (“+”) = VERDADERO entonces

avanzar entrada

si T = VERDADERO entonces

si E’ = VERDADERO entonces

DEVOLVER VERDADERO

si no {empareja “+” }

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no

retroceder entrada(referencia)

fin si

{SIMULACION DE (4) E’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 137 / 667

Page 138: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 43 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = id T ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε +TE ′

Emparejamiento de +

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

E

T E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 138 / 667

Page 139: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion E’: logico 44 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (3) E’→ + T E’}

si emparejar (“+”) = VERDADERO entonces

avanzar entrada

si T = VERDADERO entonces

si E’ = VERDADERO entonces

DEVOLVER VERDADERO

si no {empareja “+” }

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no

retroceder entrada(referencia)

fin si

{SIMULACION DE (4) E’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 139 / 667

Page 140: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion E’: logico 45 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (3) E’→ + T E’}

si emparejar (“+”) = VERDADERO entonces

avanzar entrada

si T = VERDADERO entonces

si E’ = VERDADERO entonces

DEVOLVER VERDADERO

si no {empareja “+” }

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no

retroceder entrada(referencia)

fin si

{SIMULACION DE (4) E’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 140 / 667

Page 141: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 46 / 113)

Llamada a la funcion asociada al sımbolo T

Arbol de activacion

E

F

T E’

T’ T

S

Pila de activacion

S

E

E’

T

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 141 / 667

Page 142: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T: logico 47 / 113)

inicio

{SIMULACION DE (5) T → F T’}

si F = VERDADERO entonces

si T’ = verdadero entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

si no

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 142 / 667

Page 143: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 48 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + T E ′

⇒5

id = id ε + FT ′E ′

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

F

E

T

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 143 / 667

Page 144: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T: logico 49 / 113)

inicio

{SIMULACION DE (5) T → F T’}si F = VERDADERO entonces

si T’ = verdadero entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

si no

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 144 / 667

Page 145: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 50 / 113)

Llamada a la funcion asociada al sımbolo F

Arbol de activacion

E

F

T E’

T’

F

T

S

Pila de activacion

S

E

E’

T

F

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 145 / 667

Page 146: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (primera parte) 51 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (8) F→ ( E )}

si emparejar (“(”) = VERDADERO entonces

avanzar entrada

si E = VERDADERO entonces

si emparejar (“)”) = VERDADERO entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja “)”}

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no {es verdadero E}

retroceder entrada(referencia)

fin si

si no {empareja “(”}

retroceder entrada(referencia)

fin si

· · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 146 / 667

Page 147: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (primera parte) 52 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (8) F→ ( E )}

si emparejar (“(”) = VERDADERO entonces

avanzar entrada

si E = VERDADERO entonces

si emparejar (“)”) = VERDADERO entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja “)”}

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no {es verdadero E}

retroceder entrada(referencia)

fin si

si no {empareja “(”}

retroceder entrada(referencia)

fin si

· · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 147 / 667

Page 148: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 53 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + F T ′E ′

⇒8

id = id ε + (E)T ′E ′

Error al emparejar

Arbol sintactico

F

identificadoridentificador =

S

(+

T

ε

E’

T’

F

E

T

T’

E’

E

)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 148 / 667

Page 149: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (primera parte) 54 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (8) F→ ( E )}

si emparejar (“(”) = VERDADERO entonces

avanzar entrada

si E = VERDADERO entonces

si emparejar (“)”) = VERDADERO entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja “)”}

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no {es verdadero E}

retroceder entrada(referencia)

fin si

si no {empareja “(”}

retroceder entrada(referencia)

fin si

· · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 149 / 667

Page 150: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 55 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + T E ′

⇒5

id = id ε + FT ′E ′

Retroceso

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

F

E

T

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 150 / 667

Page 151: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (segunda parte) 56 / 113)

· · ·{SIMULACION DE (9) F→ identificador }

si emparejar (identificador) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja identificador }

retroceder entrada(referencia)

fin si

· · ·

· · ·

{SIMULACION DE (10) F→ numero }

si emparejar (numero) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja numero }

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 151 / 667

Page 152: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 57 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + F T ′E ′

⇒9

id = id ε + idT ′E ′

Error al emparejar

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

F

E

T

T’

E’

id

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 152 / 667

Page 153: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (segunda parte) 58 / 113)

· · ·

{SIMULACION DE (9) F→ identificador }

si emparejar (identificador) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja identificador }

retroceder entrada(referencia)

fin si

· · ·

· · ·

{SIMULACION DE (10) F→ numero }

si emparejar (numero) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja numero }

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 153 / 667

Page 154: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 59 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + T E ′

⇒5

id = id ε + FT ′E ′

Retroceso

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

F

E

T

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 154 / 667

Page 155: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (segunda parte) 60 / 113)

· · ·

{SIMULACION DE (9) F→ identificador }

si emparejar (identificador) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja identificador }

retroceder entrada(referencia)

fin si

· · ·

· · ·

{SIMULACION DE (10) F→ numero }

si emparejar (numero) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja numero }

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 155 / 667

Page 156: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 61 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + F T ′E ′

⇒10

id = id ε + nT ′E ′

Emparejamiento de n

Arbol sintactico

F

identificadoridentificador =

S

número+

T

ε

E’

T’

F

E

T

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 156 / 667

Page 157: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (segunda parte) 62 / 113)

· · ·

{SIMULACION DE (9) F→ identificador }

si emparejar (identificador) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja identificador }

retroceder entrada(referencia)

fin si

· · ·

· · ·

{SIMULACION DE (10) F→ numero }

si emparejar (numero) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja numero }

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 157 / 667

Page 158: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 63 / 113)

Fin de la funcion asociada al sımbolo F

Regreso a la funcion asociada al sımbolo T

Arbol de activacion

E

F

T E’

T’

F

T

S

Pila de activacion

S

E

E’

T

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 158 / 667

Page 159: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T: logico 64 / 113)

inicio

{SIMULACION DE (5) T → F T’}si F = VERDADERO entonces

si T’ = verdadero entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

si no

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 159 / 667

Page 160: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 65 / 113)

1a activacion de la funcion asociada al sımbolo T’

Arbol de activacion

E

F

T E’

T’

F

T

T’

S

Pila de activacion

S

E

E’

T

T’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 160 / 667

Page 161: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T’: logico 66 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (6) T’→ * F T’}

si emparejar (“*”) = VERDADERO entonces

avanzar entrada

si F = VERDADERO entonces

si T’ = VERDADERO entonces

devolver VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “*” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (7) T’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 161 / 667

Page 162: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T’: logico 67 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (6) T’→ * F T’}

si emparejar (“*”) = VERDADERO entonces

avanzar entrada

si F = VERDADERO entonces

si T’ = VERDADERO entonces

devolver VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “*” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (7) T’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 162 / 667

Page 163: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 68 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + nT ′E ′

⇒6

id = id ε + n ∗FT ′E ′

Emparejamiento de *

Arbol sintactico

F

identificadoridentificador =

S

número *+

T

ε

E’

T’

F

E

T

T’F

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 163 / 667

Page 164: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T’: logico 69 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (6) T’→ * F T’}

si emparejar (“*”) = VERDADERO entonces

avanzar entrada

si F = VERDADERO entonces

si T’ = VERDADERO entonces

devolver VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “*” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (7) T’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 164 / 667

Page 165: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T’: logico 70 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (6) T’→ * F T’}

si emparejar (“*”) = VERDADERO entonces

avanzar entrada

si F = VERDADERO entonces

si T’ = VERDADERO entonces

devolver VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “*” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (7) T’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 165 / 667

Page 166: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 71 / 113)

Llamada a la funcion asociada al sımbolo F

Arbol de activacion

E

F

T E’

T’

F

T

F

T’

S

Pila de activacion

S

E

E’

T

T’

F

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 166 / 667

Page 167: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (primera parte) 72 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (8) F→ ( E )}

si emparejar (“(”) = VERDADERO entonces

avanzar entrada

si E = VERDADERO entonces

si emparejar (“)”) = VERDADERO entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja “)”}

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no {es verdadero E}

retroceder entrada(referencia)

fin si

si no {empareja “(”}

retroceder entrada(referencia)

fin si

· · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 167 / 667

Page 168: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (primera parte) 73 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (8) F→ ( E )}

si emparejar (“(”) = VERDADERO entonces

avanzar entrada

si E = VERDADERO entonces

si emparejar (“)”) = VERDADERO entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja “)”}

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no {es verdadero E}

retroceder entrada(referencia)

fin si

si no {empareja “(”}

retroceder entrada(referencia)

fin si

· · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 168 / 667

Page 169: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 74 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ F T ′E ′

⇒8

id = id ε + n ∗ (E)T ′E ′

Error al emparejar

Arbol sintactico

F

identificadoridentificador =

S

número *+ (

T

ε

E’

T’

F

E

T

T’F

T’

E’

)E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 169 / 667

Page 170: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (primera parte) 75 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (8) F→ ( E )}

si emparejar (“(”) = VERDADERO entonces

avanzar entrada

si E = VERDADERO entonces

si emparejar (“)”) = VERDADERO entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja “)”}

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no {es verdadero E}

retroceder entrada(referencia)

fin si

si no {empareja “(”}

retroceder entrada(referencia)

fin si

· · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 170 / 667

Page 171: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 76 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + nT ′E ′

⇒6

id = id ε + n ∗FT ′E ′

Retroceso

Arbol sintactico

F

identificadoridentificador =

S

número *+

T

ε

E’

T’

F

E

T

T’F

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 171 / 667

Page 172: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (segunda parte) 77 / 113)

· · ·{SIMULACION DE (9) F→ identificador }

si emparejar (identificador) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja identificador }

retroceder entrada(referencia)

fin si

· · ·

· · ·

{SIMULACION DE (10) F→ numero }

si emparejar (numero) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja numero }

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 172 / 667

Page 173: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 78 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ F T ′E ′

⇒9

id = id ε + n ∗ idT ′E ′

Emparejamiento de id

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 173 / 667

Page 174: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion F: logico (segunda parte) 79 / 113)

· · ·

{SIMULACION DE (9) F→ identificador }

si emparejar (identificador) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja identificador }

retroceder entrada(referencia)

fin si

· · ·

· · ·

{SIMULACION DE (10) F→ numero }

si emparejar (numero) = VERDADERO

entonces

avanzar entrada

DEVOLVER VERDADERO

si no {empareja numero }

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 174 / 667

Page 175: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 80 / 113)

Fin de la funcion asociada al sımbolo F

Regreso a la 1a activacion de la funcion asociada al sımbolo T’

Arbol de activacion

E

F

T E’

T’

F

T

F

T’

S

Pila de activacion

S

E

E’

T

T’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 175 / 667

Page 176: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T’: logico 81 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (6) T’→ * F T’}

si emparejar (“*”) = VERDADERO entonces

avanzar entrada

si F = VERDADERO entonces

si T’ = VERDADERO entonces

devolver VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “*” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (7) T’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 176 / 667

Page 177: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 82 / 113)

2a activacion de la funcion asociada al sımbolo T’

Arbol de activacion

E

F

T E’

T’

F

T

T’F

T’

S

Pila de activacion

S

E

E’

T

T’

T’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 177 / 667

Page 178: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T’: logico 83 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (6) T’→ * F T’}

si emparejar (“*”) = VERDADERO entonces

avanzar entrada

si F = VERDADERO entonces

si T’ = VERDADERO entonces

devolver VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “*” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (7) T’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 178 / 667

Page 179: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T’: logico 84 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (6) T’→ * F T’}

si emparejar (“*”) = VERDADERO entonces

avanzar entrada

si F = VERDADERO entonces

si T’ = VERDADERO entonces

devolver VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “*” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (7) T’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 179 / 667

Page 180: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 85 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒6

id = id ε + n ∗ id ∗FT ′E ′

Error al emparejar

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

F T’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 180 / 667

Page 181: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T’: logico 86 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (6) T’→ * F T’}

si emparejar (“*”) = VERDADERO entonces

avanzar entrada

si F = VERDADERO entonces

si T’ = VERDADERO entonces

devolver VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “*” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (7) T’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 181 / 667

Page 182: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 87 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ F T ′E ′

⇒9

id = id ε + n ∗ idT ′E ′

Retroceso

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 182 / 667

Page 183: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T’: logico 88 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (6) T’→ * F T’}

si emparejar (“*”) = VERDADERO entonces

avanzar entrada

si F = VERDADERO entonces

si T’ = VERDADERO entonces

devolver VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “*” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (7) T’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 183 / 667

Page 184: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 89 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 184 / 667

Page 185: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 90 / 113)

Fin de la 2a activacion de la funcion asociada al sımbolo T’

Regreso a la 1a activacion de la funcion asociada al sımbolo T’

Arbol de activacion

E

F

T E’

T’

F

T

T’F

T’

S

Pila de activacion

S

E

E’

T

T’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 185 / 667

Page 186: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T’: logico 91 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (6) T’→ * F T’}

si emparejar (“*”) = VERDADERO entonces

avanzar entrada

si F = VERDADERO entonces

si T’ = VERDADERO entonces

devolver VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “*” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (7) T’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 186 / 667

Page 187: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 92 / 113)

Fin de la 1a activacion de la funcion asociada al sımbolo T’

Regreso a la funcion asociada al sımbolo T

Arbol de activacion

E

F

T E’

T’

F

T

T’F

T’

S

Pila de activacion

S

E

E’

T

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 187 / 667

Page 188: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion T: logico 93 / 113)

inicio

{SIMULACION DE (5) T → F T’}si F = VERDADERO entonces

si T’ = verdadero entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

si no

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 188 / 667

Page 189: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 94 / 113)

Fin de la llamada a la funcion asociada al sımbolo T

Regreso a la 1a activacion de la funcion asociada al sımbolo E’

Arbol de activacion

E

F

T E’

T’

F

T

T’F

T’

S

Pila de activacion

S

E

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 189 / 667

Page 190: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 95 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 190 / 667

Page 191: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion E’: logico 96 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (3) E’→ + T E’}

si emparejar (“+”) = VERDADERO entonces

avanzar entrada

si T = VERDADERO entonces

si E’ = VERDADERO entonces

DEVOLVER VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “+” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (4) E’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 191 / 667

Page 192: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 97 / 113)

2a activacion de la funcion asociada al sımbolo E’

Arbol de activacion

E

E’F

T E’

T’

F

T

T’F

T’

S

Pila de activacion

S

E

E’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 192 / 667

Page 193: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion E’: logico 98 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (3) E’→ + T E’}

si emparejar (“+”) = VERDADERO entonces

avanzar entrada

si T = VERDADERO entonces

si E’ = VERDADERO entonces

DEVOLVER VERDADERO

si no {empareja “+” }

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no

retroceder entrada(referencia)

fin si

{SIMULACION DE (4) E’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 193 / 667

Page 194: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion E’: logico 99 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (3) E’→ + T E’}

si emparejar (“+”) = VERDADERO entonces

avanzar entrada

si T = VERDADERO entonces

si E’ = VERDADERO entonces

DEVOLVER VERDADERO

si no {empareja “+” }

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no

retroceder entrada(referencia)

fin si

{SIMULACION DE (4) E’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 194 / 667

Page 195: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 100 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

⇒3

id = id ε + n ∗ id ε +TE ′

Error al emparejar

Arbol sintactico

F

identificadoridentificador =

S

número * ++ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

T E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 195 / 667

Page 196: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion E’: logico 101 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (3) E’→ + T E’}

si emparejar (“+”) = VERDADERO entonces

avanzar entrada

si T = VERDADERO entonces

si E’ = VERDADERO entonces

DEVOLVER VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “+” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (4) E’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 196 / 667

Page 197: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 102 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

Retroceso

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 197 / 667

Page 198: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion E’: logico 103 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (3) E’→ + T E’}

si emparejar (“+”) = VERDADERO entonces

avanzar entrada

si T = VERDADERO entonces

si E’ = VERDADERO entonces

DEVOLVER VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “+” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (4) E’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 198 / 667

Page 199: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 104 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

⇒4

id = id ε + n ∗ id ε ε

Arbol sintactico

F

identificadoridentificador =

S

número * ε+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 199 / 667

Page 200: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 105 / 113)

Fin de la 2a activacion de la funcion asociada al sımbolo E’

Regreso a la 1a activacion de la funcion asociada al sımbolo E’

Arbol de activacion

E

E’F

T E’

T’

F

T

T’F

T’

S

Pila de activacion

S

E

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 200 / 667

Page 201: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion E’: logico 106 / 113)

inicio

referencia← componente lexico actual

{SIMULACION DE (3) E’→ + T E’}

si emparejar (“+”) = VERDADERO entonces

avanzar entrada

si T = VERDADERO entonces

si E’ = VERDADERO entonces

DEVOLVER VERDADERO

si no

retroceder entrada(referencia)

fin si

· · ·

· · ·

si no

retroceder entrada(referencia)

fin si

si no {empareja “+” }

retroceder entrada(referencia)

fin si

{SIMULACION DE (4) E’→ ε}

DEVOLVER VERDADERO

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 201 / 667

Page 202: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 107 / 113)

Fin de la 1a activacion de la funcion asociada al sımbolo E’

Regreso a la llamada a la funcion asociada al sımbolo E

Arbol de activacion

E

E’F

T E’

T’

F

T

T’F

T’

S

Pila de activacion

S

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 202 / 667

Page 203: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion E: logico 108 / 113)

inicio

{SIMULACION DE (2) E → T E’}si T = VERDADERO entonces

si E’ = VERDADERO entoncesDEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

si no

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 203 / 667

Page 204: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 109 / 113)

Fin de la llamada a la funcion asociada al sımbolo E

Regreso a la llamada a la funcion asociada al sımbolo S

Arbol de activacion

E’F

T E’

T’

F

T

T’F

T’

S

E

Pila de activacion

S

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 204 / 667

Page 205: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Funcion S: logico 110 / 113)

inicio

{SIMULACION DE (1) S→ identificador = E}

si emparejar(identificador) = VERDADERO entonces

avanzar entrada

si emparejar(“=”) = VERDADERO entonces

avanzar entrada

si E = VERDADERO entonces

DEVOLVER VERDADERO

si no

DEVOLVER FALSO

fin si

· · ·

· · ·

si no {empareja “=”}

DEVOLVER FALSO

fin si

si no {empareja identificador }

DEVOLVER FALSO

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 205 / 667

Page 206: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (Gramatica de expresiones aritmeticas 111 / 113)

Fin de la llamada a la funcion asociada al sımbolo inicial S

Arbol de activacion

E’F

T E’

T’

F

T

T’F

T’

S

E

Pila de activacion

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 206 / 667

Page 207: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 112 / 113)

Analisis de id = id + n * id

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = idεE ′

⇒3

id = idε + TE ′

⇒5

id = idε + FT ′E ′

⇒10

id = idε + nT ′E ′

⇒6

id = idε + n ∗ FT ′E ′

⇒9

id = idε + n ∗ idT ′E ′

⇒7

id = idε + n ∗ idεE ′

⇒4

id = idε + n ∗ idεε

Cadena analizada

Arbol sintactico

F

identificadoridentificador =

S

número * ε+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 207 / 667

Page 208: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingImplementacion

Ejemplo (2.- Gramatica de expresiones aritmeticas 113 / 113)

Arbol de activacion

E

E’F

T E’

T’

F

T

T’F

T’

S

Arbol sintactico

F

identificadoridentificador =

S

número * ε+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 208 / 667

Page 209: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

2 Descenso recursivo con retroceso o backtrackingDescripcionImplementacionLimitaciones o inconvenientes

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 209 / 667

Page 210: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingLimitaciones o inconvenientes

Limitaciones o inconvenientes 1 / 2

1.- Ineficiencia computacionalLas reglas de la gramatica siempre se simulan segun un ordenpreestablecido, que puede provocar numerosos retrocesospara probar otras reglas.Si se ha generado codigo durante el analisis entonces dichocodigo debe ser descartado si se produce un retroceso.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 210 / 667

Page 211: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingLimitaciones o inconvenientes

Limitaciones o inconvenientes 2 / 2

2.- No localizacion de erroresSi la cadena de entrada es incorrecta, no localiza la ubicaciondel error, ya que siempre termina en la funcion asociada delsımbolo inicial.

3.- Riesgo de recursion infinitaLas funciones pueden provocar una recursion infinita si lagramatica posee recursividad inmediata o general por laizquierda.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 211 / 667

Page 212: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingLimitaciones o inconvenientes

Ejemplos (Gramaticas con recursividad por la izquierda)

1.- Gramatica con recursividad inmediata por la izquierda.

2.- Gramatica con recursividad general por la izquierda.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 212 / 667

Page 213: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingLimitaciones o inconvenientes

Ejemplo (1.- Recursividad inmediata por la izquierda 1 / 2)

P = {(1) S −→ L E(2) L −→ L identificador =(3) L −→ identificador =(4) E −→ E + T(5) E −→ T(6) T −→ T * F(7) T −→ F(8) F −→ ( E )(9) F −→ identificador

(10) F −→ numero

}Esta gramatica genera sentencias de asignacion multiple.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 213 / 667

Page 214: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingLimitaciones o inconvenientes

Ejemplo (1.- Recursividad inmediata por la izquierda 2 / 2)

Se genera una recursion infinita al analizar la sentencia:

identificador = identificador = numero

Arbol de activacion

L

L

L

S

...

Arbol sintactico

L

L

L

E

...

S

=identificador

identificador =

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 214 / 667

Page 215: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingLimitaciones o inconvenientes

Ejemplo (2.- Recursividad general por la izquierda 1 / 2)

P = {(1) S −→ A a(2) A −→ S b(3) A −→ c

}Esta gramatica genera el lenguaje L(G ) = c(ba)∗a

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 215 / 667

Page 216: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Descenso recursivo con retroceso o backtrackingLimitaciones o inconvenientes

Ejemplo (2.- Recursividad general por la izquierda 2 / 2)

Se genera una recursion infinita al analizar la sentencia:

c b a a

Arbol de activacion

A

A

S

...

S

Arbol sintactico

A

A

S

...

S

a

b

a

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 216 / 667

Page 217: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido del tema

1 Introduccion

2 Descenso recursivo con retroceso o backtracking

3 Analisis sintactico descendente predictivo

4 Deteccion y recuperacion de errores

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 217 / 667

Page 218: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

3 Analisis sintactico descendente predictivoDescripcionGramaticas LL(k)FasesConjunto PrimeroConjunto SiguienteConstruccion de la tabla predictivaConflictos en la tabla predictivaImplementacion recursivaImplementacion iterativa

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 218 / 667

Page 219: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Objetivo

Comprobar si la gramatica puede generar la cadena de entradamediante

la generacion de una derivacion por la izquierdao la construccion del arbol sintactico de forma descendente.

Utiliza una tabla predictiva para determinar que regla deproduccion (si existe) se puede usar en cada paso

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 219 / 667

Page 220: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Notas (Tabla predictiva)

La tabla predictiva indica cual es la unica regla deproduccion (si existe) que permite continuar el analisis.

Si la tabla predictiva no indica ninguna regla entonces lacadena de entrada no puede ser generada por la gramatica.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 220 / 667

Page 221: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 1 / 27)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 221 / 667

Page 222: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 2 / 27)

Analisis mediante descenso recursivo con retroceso:

identificador = identificador + numero * identificador $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 222 / 667

Page 223: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 3 / 27)

Analisis de id = id + n * id $

S

Arbol sintactico

S

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 223 / 667

Page 224: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 4 / 27)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 224 / 667

Page 225: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 5 / 27)

Analisis de id = id + n * id $

S ⇒1

id = E

Emparejamientos: id, =

Arbol sintactico

identificador =

S

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 225 / 667

Page 226: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 6 / 27)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 226 / 667

Page 227: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 7 / 27)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

Arbol sintactico

identificador =

S

T

E

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 227 / 667

Page 228: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 8 / 27)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 228 / 667

Page 229: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 9 / 27)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = T E ′

⇒5

id = FT ′E ′

Arbol sintactico

F

identificador =

S

T E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 229 / 667

Page 230: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 10 / 27)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 230 / 667

Page 231: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 11 / 27)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = F T ′E ′

⇒9

id = idT ′E ′

Emparejamiento de id

Arbol sintactico

F

identificadoridentificador =

S

T E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 231 / 667

Page 232: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 12 / 27)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 232 / 667

Page 233: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 13 / 27)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = id T ′E ′

⇒7

id = id ε E ′

Arbol sintactico

F

identificadoridentificador =

S

T

ε

E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 233 / 667

Page 234: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 14 / 27)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 234 / 667

Page 235: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 15 / 27)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = id T ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε +TE ′

Emparejamiento de +

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

E

T E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 235 / 667

Page 236: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 16 / 27)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 236 / 667

Page 237: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 17 / 27)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + T E ′

⇒5

id = id ε + FT ′E ′

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

F

E

T

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 237 / 667

Page 238: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 18 / 27)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 238 / 667

Page 239: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 19 / 27)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + F T ′E ′

⇒10

id = id ε + nT ′E ′

Emparejamiento de n

Arbol sintactico

F

identificadoridentificador =

S

número+

T

ε

E’

T’

F

E

T

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 239 / 667

Page 240: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 20 / 27)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 240 / 667

Page 241: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 21 / 27)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + nT ′E ′

⇒6

id = id ε + n ∗FT ′E ′

Emparejamiento de *

Arbol sintactico

F

identificadoridentificador =

S

número *+

T

ε

E’

T’

F

E

T

T’F

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 241 / 667

Page 242: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 22 / 27)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 242 / 667

Page 243: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 23 / 27)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ F T ′E ′

⇒9

id = id ε + n ∗ idT ′E ′

Emparejamiento de id

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 243 / 667

Page 244: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 24 / 27)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 244 / 667

Page 245: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 25 / 27)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 245 / 667

Page 246: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 26 / 27)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 246 / 667

Page 247: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoDescripcion

Ejemplo (Gramatica de expresiones aritmeticas 27 / 27)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

⇒4

id = id ε + n ∗ id ε ε

Arbol sintactico

F

identificadoridentificador =

S

número * ε+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 247 / 667

Page 248: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

3 Analisis sintactico descendente predictivoDescripcionGramaticas LL(k)FasesConjunto PrimeroConjunto SiguienteConstruccion de la tabla predictivaConflictos en la tabla predictivaImplementacion recursivaImplementacion iterativa

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 248 / 667

Page 249: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoGramaticas LL(k)

Definicion (Gramatica LL(k))

Una gramatica LL(k) es una gramatica de contexto libre queadmite un analisis descendente predictivo

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 249 / 667

Page 250: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoGramaticas LL(k)

Significado

LL(k): procesa la cadena de entrada de izquierda a derecha.

LL(k): genera una derivacion por la izquierda.

LL(k): numero de componentes lexicos que explora de lacadena de entrada para determinar que regla se va a procesaren cada paso de la derivacion.

Nota

Generalmente, k vale 1.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 250 / 667

Page 251: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoGramaticas LL(k)

Condiciones de una gramatica LL(1)

Para cada par de reglas A −→ α|β se verifican las siguientescondiciones:

1.- No existe ningun sımbolo terminal a ∈ VT que pueda ser elprimer sımbolo de una cadena derivable por α y β, es decir,Primero(α) ∩ Primero(β) = ∅

2.- La palabra vacıa ε solamente puede ser derivada, a lo sumo, opor α o por β, pero no por ambas simultaneamente, es decir,si ε ∈ Primero(α) entonces ε /∈ Primero(β) y viceversa.

3.- Si β (o α) deriva la palabra vacıa ε entonces α (o β) no puedederivar un cadena que comience por un sımbolo terminala ∈ VT que pertenezca al conjunto Siguiente(A), es decir,si ε ∈ Primero(β) entonces Primero(α) ∩ Siguiente(A) = ∅

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 251 / 667

Page 252: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoGramaticas LL(k)

Primera condicion de una gramatica LL(1) 1 / 3

Para cada par de reglas A −→ α|β se verifica que

1.- No existe ningun sımbolo terminal a ∈ VT que pueda ser elprimer sımbolo de una cadena derivable por α y β, es decir,Primero(α) ∩ Primero(β) = ∅

Si A −→ α|β ∈ P

entonces @a ∈ VT tal que

{A⇒α

∗⇒a δ

A⇒β∗⇒a γ

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 252 / 667

Page 253: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoGramaticas LL(k)

Ejemplo (Primera condicion de una gramatica LL(1) 2 / 3)

Gramatica que genera sentencias condicionales

P = {(1) S → si C entonces S si no S fin si ( S → α )

(2) S → si C entonces S fin si ( S → β )

(3) S → . . .

(4) C → . . .

}Primero(α) ∩ Primero(β) =

= Primero(si C entonces S si no S fin si) ∩ Primero(si C entonces S fin si)= {si}6=∅

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 253 / 667

Page 254: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoGramaticas LL(k)

Ejemplo (Primera condicion de una gramatica LL(1) 3 / 3)

Gramatica que genera sentencias condicionales

P = {(1) S → si C entonces S si no S fin si ( S → α )(2) S → si C entonces S fin si ( S → β )(3) S → . . .(4) C → . . .}Conflicto al analizar una sentencia que empieza por si

Primera opcionS⇒

1si C entonces S si no S fin si

Segunda opcionS⇒

2si C entonces S fin si

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 254 / 667

Page 255: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoGramaticas LL(k)

Segunda condicion de una gramatica LL(1) 1 / 3

Para cada par de reglas A −→ α|β se verifica que

2.- la palabra vacıa ε solamente puede ser derivada, a lo sumo, opor α o por β, pero no por ambas simultaneamente, es decir,si ε ∈ Primero(α) entonces ε /∈ Primero(β) y viceversa.

Si A −→ α|β ∈ Pentonces

si A⇒α∗⇒ ε entonces @A⇒β

∗⇒ εsi A⇒β

∗⇒ ε entonces @A⇒α∗⇒ ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 255 / 667

Page 256: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoGramaticas LL(k)

Ejemplo (Segunda condicion de una gramatica LL(1) 2 / 3)

Gramatica

P = {(1) S → ε ( S → α )(2) S → A ( S → β )(3) A → ε(4) A → . . .}ε ∈ Primero(α) ∧ ε ∈ Primero(β)ε ∈ Primero(ε) ∧ ε ∈ Primero(A)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 256 / 667

Page 257: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoGramaticas LL(k)

Ejemplo (Segunda condicion de una gramatica LL(1) 3 / 3)

Gramatica

P = {(1) S → ε(2) S → A(3) A → ε(4) A → . . .}Conflicto al derivar la palabra vacıa ε:

Primera opcionS⇒

Segunda opcionS⇒

2A⇒

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 257 / 667

Page 258: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoGramaticas LL(k)

Tercera condicion de una gramatica LL(1) 1 / 3

Para cada par de reglas A −→ α|β se verifica que

3.- Si β (o α) deriva la palabra vacıa ε entonces α (o β) no puedederivar un cadena que comience por un sımbolo terminala ∈ VT que pertenezca al conjunto Siguiente(A), es decir,si ε ∈ Primero(β) entonces Primero(α) ∩ Siguiente(A) = ∅

Si A −→ α|β ∈ P y β∗⇒ ε entonces @A⇒α

∗⇒ a γdonde a ∈ Siguiente(A)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 258 / 667

Page 259: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoGramaticas LL(k)

Ejemplo (Tercera condicion de una gramatica LL(1) 2 / 3)

Gramatica

P = {(1) S → A a(2) A → B c ( A→ α )(3) A → ε ( A→ β )(4) B → a}ε ∈ Primero(β) = Primero(ε)Primero(Bc) ∩ Siguiente(A) = {a}6=∅

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 259 / 667

Page 260: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoGramaticas LL(k)

Ejemplo (Tercera condicion de una gramatica LL(1) 3 / 3)

Gramatica

P = {(1) S → A a(2) A → B c ( A→ α )(3) A → ε ( A→ β )(4) B → a}Conflicto al derivar una cadena que comienza por a:

Primera opcionS⇒

1A a⇒

3a

Segunda opcionS⇒

1A a⇒

2B c a⇒

4a c a

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 260 / 667

Page 261: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

3 Analisis sintactico descendente predictivoDescripcionGramaticas LL(k)FasesConjunto PrimeroConjunto SiguienteConstruccion de la tabla predictivaConflictos en la tabla predictivaImplementacion recursivaImplementacion iterativa

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 261 / 667

Page 262: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoFases

Fases

1.- Construccion del conjunto Primero.

2.- Construccion del conjunto Siguiente.

3.- Construccion de la tabla predictiva.

4.- Uso de la tabla predictiva para aplicar un metodo de analisisdescendente predictivo

Metodo recursivo: basado en funciones recursivas, pero sinretroceso en la cadena de entrada.Metodo iterativo.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 262 / 667

Page 263: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoFases

Fases

Tabla predictiva

Método recursivo Método iterativo

Gramática

Primero Siguiente

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 263 / 667

Page 264: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

3 Analisis sintactico descendente predictivoDescripcionGramaticas LL(k)FasesConjunto PrimeroConjunto SiguienteConstruccion de la tabla predictivaConflictos en la tabla predictivaImplementacion recursivaImplementacion iterativa

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 264 / 667

Page 265: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Definicion (Primero(α))

Si α ∈ V ∗ = (VN ∪ VT )∗ entonces

Primero(α) = {a | a ∈ VT ∧ α∗⇒ a γ} ∪ {ε | α ∗⇒ ε}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 265 / 667

Page 266: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Nota (Primero(α))

Primero(α) va a estar compuesto por

los sımbolos terminales que aparecen en la primera posicionde una cadena que es derivable a partir de αy la palabra vacıa ε, si α la deriva.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 266 / 667

Page 267: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Algoritmo (Construccion del conjunto Primero 1 / 5)

Caso basico 1: α = ε

Caso basico 2: α = a ∈ VT

Caso basico 3: α = A ∈ VN

Caso general: α = X1X2 . . .Xn ∈ V + = (VN ∪ VT )+

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 267 / 667

Page 268: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Algoritmo (Construccion del conjunto Primero 2 / 5)

Caso basico 1: α = ε

Primero(α) = Primero(ε) = {ε}porque α = ε

0⇒ ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 268 / 667

Page 269: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Algoritmo (Construccion del conjunto Primero 3 / 5)

Caso basico 2: α = a ∈ VT

Primero(α) = Primero(a) = {a}porque α = a

0⇒ a

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 269 / 667

Page 270: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Algoritmo (Construccion del conjunto Primero 4 / 5)

Caso basico 3: α = A ∈ VN

a) Si A→ ε ∈ P entonces ε ∈ Primero(A)b) Si A −→ X1X2 . . .Xn ∈ P

entonces Primero(X1)− {ε} ⊆ Primero(A)Si ε ∈ Primero(Xi ) ∀i ∈ {1, 2, . . . , k − 1} entoncesPrimero(Xk )− {ε} ⊆ Primero(A)Si ε ∈ Primero(Xi ) ∀i ∈ {1, 2, . . . , n} entonces ε ∈ Primero(A)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 270 / 667

Page 271: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Algoritmo (Construccion del conjunto Primero 5 / 5)

Caso general: α = X1X2 . . .Xn ∈ V + = (VN ∪ VT )+

Primero(X1)− {ε} ⊆ Primero(α)Si ε ∈ Primero(Xi ) ∀i ∈ {1, 2, . . . , k − 1} entoncesPrimero(Xk )− {ε} ⊆ Primero(α)Si ε ∈ Primero(Xi ) ∀i ∈ {1, 2, . . . , n} entonces ε ∈ Primero(α)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 271 / 667

Page 272: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplos (Construccion del conjunto Primero)

1.- Gramatica de las expresiones aritmeticas.

2.- Gramatica de las declaraciones.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 272 / 667

Page 273: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (1.- Gramatica de las expresiones aritmeticas 1 / 2)

P = {(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero

}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 273 / 667

Page 274: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (1.- Gramatica de las expresiones aritmeticas 2 / 2)

id ∈ Primero(S) por (1) S → identificador = E

Primero(T )− {ε} ⊆ Primero(E)

por (2) E −→ T E’

+ ∈ Primero(E ′) por (3) E’ −→ + T E’

ε ∈ Primero(E ′) por (4) E’ −→ ε

Primero(F )− {ε} ⊆ Primero(T )

por (5) T −→ F T’

∗ ∈ Primero(T ′) por (6) T’ −→ * F T’

ε ∈ Primero(T ′) por (7) T’ −→ ε

“(′′ ∈ Primero(F ) por (8) F −→ ( E )

id ∈ Primero(F ) por (9) F −→ id

n ∈ Primero(F ) por (10) F −→ n

Primero

S idE “(” , id , nE’ + , εT “(” , id , nT’ * , εF “(” , id , n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 274 / 667

Page 275: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (1.- Gramatica de las expresiones aritmeticas 2 / 2)

id ∈ Primero(S) por (1) S → identificador = E

Primero(T )− {ε} ⊆ Primero(E)

por (2) E −→ T E’

+ ∈ Primero(E ′) por (3) E’ −→ + T E’

ε ∈ Primero(E ′) por (4) E’ −→ ε

Primero(F )− {ε} ⊆ Primero(T )

por (5) T −→ F T’

∗ ∈ Primero(T ′) por (6) T’ −→ * F T’

ε ∈ Primero(T ′) por (7) T’ −→ ε

“(′′ ∈ Primero(F ) por (8) F −→ ( E )

id ∈ Primero(F ) por (9) F −→ id

n ∈ Primero(F ) por (10) F −→ n

Primero

S idE “(” , id , nE’ + , εT “(” , id , nT’ * , εF “(” , id , n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 275 / 667

Page 276: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (1.- Gramatica de las expresiones aritmeticas 2 / 2)

id ∈ Primero(S) por (1) S → identificador = E

Primero(T )− {ε} ⊆ Primero(E)

por (2) E −→ T E’

+ ∈ Primero(E ′) por (3) E’ −→ + T E’

ε ∈ Primero(E ′) por (4) E’ −→ ε

Primero(F )− {ε} ⊆ Primero(T )

por (5) T −→ F T’

∗ ∈ Primero(T ′) por (6) T’ −→ * F T’

ε ∈ Primero(T ′) por (7) T’ −→ ε

“(′′ ∈ Primero(F ) por (8) F −→ ( E )

id ∈ Primero(F ) por (9) F −→ id

n ∈ Primero(F ) por (10) F −→ n

Primero

S idE “(” , id , nE’ + , εT “(” , id , nT’ * , εF “(” , id , n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 276 / 667

Page 277: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (1.- Gramatica de las expresiones aritmeticas 2 / 2)

id ∈ Primero(S) por (1) S → identificador = E

Primero(T )− {ε} ⊆ Primero(E)

por (2) E −→ T E’

+ ∈ Primero(E ′) por (3) E’ −→ + T E’

ε ∈ Primero(E ′) por (4) E’ −→ ε

Primero(F )− {ε} ⊆ Primero(T )

por (5) T −→ F T’

∗ ∈ Primero(T ′) por (6) T’ −→ * F T’

ε ∈ Primero(T ′) por (7) T’ −→ ε

“(′′ ∈ Primero(F ) por (8) F −→ ( E )

id ∈ Primero(F ) por (9) F −→ id

n ∈ Primero(F ) por (10) F −→ n

Primero

S idE “(” , id , nE’ + , εT “(” , id , nT’ * , εF “(” , id , n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 277 / 667

Page 278: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (1.- Gramatica de las expresiones aritmeticas 2 / 2)

id ∈ Primero(S) por (1) S → identificador = E

Primero(T )− {ε} ⊆ Primero(E)

por (2) E −→ T E’

+ ∈ Primero(E ′) por (3) E’ −→ + T E’

ε ∈ Primero(E ′) por (4) E’ −→ ε

Primero(F )− {ε} ⊆ Primero(T )

por (5) T −→ F T’

∗ ∈ Primero(T ′) por (6) T’ −→ * F T’

ε ∈ Primero(T ′) por (7) T’ −→ ε

“(′′ ∈ Primero(F ) por (8) F −→ ( E )

id ∈ Primero(F ) por (9) F −→ id

n ∈ Primero(F ) por (10) F −→ n

Primero

S idE “(” , id , nE’ + , εT “(” , id , nT’ * , εF “(” , id , n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 278 / 667

Page 279: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (1.- Gramatica de las expresiones aritmeticas 2 / 2)

id ∈ Primero(S) por (1) S → identificador = E

Primero(T )− {ε} ⊆ Primero(E)

por (2) E −→ T E’

+ ∈ Primero(E ′) por (3) E’ −→ + T E’

ε ∈ Primero(E ′) por (4) E’ −→ ε

Primero(F )− {ε} ⊆ Primero(T )

por (5) T −→ F T’

∗ ∈ Primero(T ′) por (6) T’ −→ * F T’

ε ∈ Primero(T ′) por (7) T’ −→ ε

“(′′ ∈ Primero(F ) por (8) F −→ ( E )

id ∈ Primero(F ) por (9) F −→ id

n ∈ Primero(F ) por (10) F −→ n

Primero

S idE “(” , id , nE’ + , εT “(” , id , nT’ * , εF “(” , id , n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 279 / 667

Page 280: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (1.- Gramatica de las expresiones aritmeticas 2 / 2)

id ∈ Primero(S) por (1) S → identificador = E

Primero(T )− {ε} ⊆ Primero(E)

por (2) E −→ T E’

+ ∈ Primero(E ′) por (3) E’ −→ + T E’

ε ∈ Primero(E ′) por (4) E’ −→ ε

Primero(F )− {ε} ⊆ Primero(T )

por (5) T −→ F T’

∗ ∈ Primero(T ′) por (6) T’ −→ * F T’

ε ∈ Primero(T ′) por (7) T’ −→ ε

“(′′ ∈ Primero(F ) por (8) F −→ ( E )

id ∈ Primero(F ) por (9) F −→ id

n ∈ Primero(F ) por (10) F −→ n

Primero

S idE “(” , id , nE’ + , εT “(” , id , nT’ * , εF “(” , id , n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 280 / 667

Page 281: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (1.- Gramatica de las expresiones aritmeticas 2 / 2)

id ∈ Primero(S) por (1) S → identificador = E

Primero(T )− {ε} ⊆ Primero(E)

por (2) E −→ T E’

+ ∈ Primero(E ′) por (3) E’ −→ + T E’

ε ∈ Primero(E ′) por (4) E’ −→ ε

Primero(F )− {ε} ⊆ Primero(T )

por (5) T −→ F T’

∗ ∈ Primero(T ′) por (6) T’ −→ * F T’

ε ∈ Primero(T ′) por (7) T’ −→ ε

“(′′ ∈ Primero(F ) por (8) F −→ ( E )

id ∈ Primero(F ) por (9) F −→ id

n ∈ Primero(F ) por (10) F −→ n

Primero

S idE “(” , id , nE’ + , εT “(” , id , nT’ * , εF “(” , id , n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 281 / 667

Page 282: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (1.- Gramatica de las expresiones aritmeticas 2 / 2)

id ∈ Primero(S) por (1) S → identificador = E

Primero(T )− {ε} ⊆ Primero(E)

por (2) E −→ T E’

+ ∈ Primero(E ′) por (3) E’ −→ + T E’

ε ∈ Primero(E ′) por (4) E’ −→ ε

Primero(F )− {ε} ⊆ Primero(T )

por (5) T −→ F T’

∗ ∈ Primero(T ′) por (6) T’ −→ * F T’

ε ∈ Primero(T ′) por (7) T’ −→ ε

“(′′ ∈ Primero(F ) por (8) F −→ ( E )

id ∈ Primero(F ) por (9) F −→ id

n ∈ Primero(F ) por (10) F −→ n

Primero

S idE “(” , id , nE’ + , εT “(” , id , nT’ * , εF “(” , id , n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 282 / 667

Page 283: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (1.- Gramatica de las expresiones aritmeticas 2 / 2)

id ∈ Primero(S) por (1) S → identificador = E

Primero(T )− {ε} ⊆ Primero(E)

por (2) E −→ T E’

+ ∈ Primero(E ′) por (3) E’ −→ + T E’

ε ∈ Primero(E ′) por (4) E’ −→ ε

Primero(F )− {ε} ⊆ Primero(T )

por (5) T −→ F T’

∗ ∈ Primero(T ′) por (6) T’ −→ * F T’

ε ∈ Primero(T ′) por (7) T’ −→ ε

“(′′ ∈ Primero(F ) por (8) F −→ ( E )

id ∈ Primero(F ) por (9) F −→ id

n ∈ Primero(F ) por (10) F −→ n

Primero

S idE “(” , id , nE’ + , εT “(” , id , nT’ * , εF “(” , id , n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 283 / 667

Page 284: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (2.- Gramatica de declaraciones 1 / 2)

P = {(1) S −→ D S(2) S −→ ε(3) D −→ T L ;(4) T −→ int(5) T −→ float(6) L −→ id L’(7) L’ −→ , id L’(8) L’ −→ ε

}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 284 / 667

Page 285: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (2.- Gramatica de declaraciones 2 / 2)

Primero(D)− {ε} ⊆ Primero(S)

por (1) S −→ D S

ε ∈ Primero(S) por (2) S −→ ε

Primero(T )− {ε} ⊆ Primero(D)

por (3) D −→ T L ;

int ∈ (T ) por (5) T −→ int

float ∈ Primero(T ) por (5) T −→ float

id ∈ Primero(L) por (6) L −→ id L’

“,” ∈ Primero(L′) por (7) L’ −→ , id L’

ε ∈ Primero(L′) por (8) L’ −→ ε

Primero

S ε , int , floatD int , floatT int , floatL idL’ “,” , ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 285 / 667

Page 286: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (2.- Gramatica de declaraciones 2 / 2)

Primero(D)− {ε} ⊆ Primero(S)

por (1) S −→ D S

ε ∈ Primero(S) por (2) S −→ ε

Primero(T )− {ε} ⊆ Primero(D)

por (3) D −→ T L ;

int ∈ (T ) por (5) T −→ int

float ∈ Primero(T ) por (5) T −→ float

id ∈ Primero(L) por (6) L −→ id L’

“,” ∈ Primero(L′) por (7) L’ −→ , id L’

ε ∈ Primero(L′) por (8) L’ −→ ε

Primero

S ε , int , floatD int , floatT int , floatL idL’ “,” , ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 286 / 667

Page 287: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (2.- Gramatica de declaraciones 2 / 2)

Primero(D)− {ε} ⊆ Primero(S)

por (1) S −→ D S

ε ∈ Primero(S) por (2) S −→ ε

Primero(T )− {ε} ⊆ Primero(D)

por (3) D −→ T L ;

int ∈ (T ) por (5) T −→ int

float ∈ Primero(T ) por (5) T −→ float

id ∈ Primero(L) por (6) L −→ id L’

“,” ∈ Primero(L′) por (7) L’ −→ , id L’

ε ∈ Primero(L′) por (8) L’ −→ ε

Primero

S ε , int , floatD int , floatT int , floatL idL’ “,” , ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 287 / 667

Page 288: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (2.- Gramatica de declaraciones 2 / 2)

Primero(D)− {ε} ⊆ Primero(S)

por (1) S −→ D S

ε ∈ Primero(S) por (2) S −→ ε

Primero(T )− {ε} ⊆ Primero(D)

por (3) D −→ T L ;

int ∈ (T ) por (5) T −→ int

float ∈ Primero(T ) por (5) T −→ float

id ∈ Primero(L) por (6) L −→ id L’

“,” ∈ Primero(L′) por (7) L’ −→ , id L’

ε ∈ Primero(L′) por (8) L’ −→ ε

Primero

S ε , int , floatD int , floatT int , floatL idL’ “,” , ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 288 / 667

Page 289: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (2.- Gramatica de declaraciones 2 / 2)

Primero(D)− {ε} ⊆ Primero(S)

por (1) S −→ D S

ε ∈ Primero(S) por (2) S −→ ε

Primero(T )− {ε} ⊆ Primero(D)

por (3) D −→ T L ;

int ∈ (T ) por (5) T −→ int

float ∈ Primero(T ) por (5) T −→ float

id ∈ Primero(L) por (6) L −→ id L’

“,” ∈ Primero(L′) por (7) L’ −→ , id L’

ε ∈ Primero(L′) por (8) L’ −→ ε

Primero

S ε , int , floatD int , floatT int , floatL idL’ “,” , ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 289 / 667

Page 290: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (2.- Gramatica de declaraciones 2 / 2)

Primero(D)− {ε} ⊆ Primero(S)

por (1) S −→ D S

ε ∈ Primero(S) por (2) S −→ ε

Primero(T )− {ε} ⊆ Primero(D)

por (3) D −→ T L ;

int ∈ (T ) por (5) T −→ int

float ∈ Primero(T ) por (5) T −→ float

id ∈ Primero(L) por (6) L −→ id L’

“,” ∈ Primero(L′) por (7) L’ −→ , id L’

ε ∈ Primero(L′) por (8) L’ −→ ε

Primero

S ε , int , floatD int , floatT int , floatL idL’ “,” , ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 290 / 667

Page 291: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (2.- Gramatica de declaraciones 2 / 2)

Primero(D)− {ε} ⊆ Primero(S)

por (1) S −→ D S

ε ∈ Primero(S) por (2) S −→ ε

Primero(T )− {ε} ⊆ Primero(D)

por (3) D −→ T L ;

int ∈ (T ) por (5) T −→ int

float ∈ Primero(T ) por (5) T −→ float

id ∈ Primero(L) por (6) L −→ id L’

“,” ∈ Primero(L′) por (7) L’ −→ , id L’

ε ∈ Primero(L′) por (8) L’ −→ ε

Primero

S ε , int , floatD int , floatT int , floatL idL’ “,” , ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 291 / 667

Page 292: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejemplo (2.- Gramatica de declaraciones 2 / 2)

Primero(D)− {ε} ⊆ Primero(S)

por (1) S −→ D S

ε ∈ Primero(S) por (2) S −→ ε

Primero(T )− {ε} ⊆ Primero(D)

por (3) D −→ T L ;

int ∈ (T ) por (5) T −→ int

float ∈ Primero(T ) por (5) T −→ float

id ∈ Primero(L) por (6) L −→ id L’

“,” ∈ Primero(L′) por (7) L’ −→ , id L’

ε ∈ Primero(L′) por (8) L’ −→ ε

Primero

S ε , int , floatD int , floatT int , floatL idL’ “,” , ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 292 / 667

Page 293: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejercicios (Construccion del conjunto Primero)

1.- Gramatica de prototipos

2.- Gramatica que genera L(G) = L(a∗ b∗ c∗)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 293 / 667

Page 294: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejercicio (1.- Gramatica de los prototipos 1 / 2)

P = {(1) S → D S(2) S → ε(3) D → T identificador ( P ) ;(4) T −→ int(5) T −→ float(6) P → ε(7) P → id L(8) L → ε(9) L → , id L

}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 294 / 667

Page 295: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Primero

Ejercicio (2.- Gramatica que genera L(G) = L(a∗ b∗ c∗) 2 / 2)

P = {(1) S → A B C(2) A → a A(3) A → ε(4) B → b B(5) B → ε(6) C → c C(7) C → ε

}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 295 / 667

Page 296: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

3 Analisis sintactico descendente predictivoDescripcionGramaticas LL(k)FasesConjunto PrimeroConjunto SiguienteConstruccion de la tabla predictivaConflictos en la tabla predictivaImplementacion recursivaImplementacion iterativa

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 296 / 667

Page 297: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Definicion (Conjunto Siguiente)

Si A ∈ VN entonces

Siguiente(A) = {a | a ∈ VT ∧ S∗⇒α A a β} ∪ {$ | S ∗⇒α A}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 297 / 667

Page 298: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Nota (Conjunto Siguiente)

Si A es un sımbolo no terminal entonces Siguiente(A) estacompuesto por

los sımbolos terminales que pueden aparecer detras de A enuna derivacion de la gramaticay el sımbolo $ (fin de cadena), si A aparece en la ultimaposicion durante algun paso de la derivacion.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 298 / 667

Page 299: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Nota (Conjunto Siguiente)

La palabra vacıa ε nunca pertenece al conjunto Siguiente(A).

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 299 / 667

Page 300: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Construccion del conjunto Siguiente

1.- $ ∈ Siguiente(S),

donde S es el sımbolo inicial de la gramatica.

2.- Si A→ α B β ∈ P

entonces Primero(β)− {ε} ⊆ Siguiente(B)

3.- Si A→ α B ∈ P ∨ (A→ α B β ∧ ε ∈ Primero(β))

entonces Siguiente(A) ⊆ Siguiente(B)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 300 / 667

Page 301: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (Construccion del conjunto Siguiente: tercera regla)

3.- Si A→ α B ∈ P ∨ (A→ α B β ∧ ε ∈ Primero(β))

entonces Siguiente(A) ⊆ Siguiente(B)

Los sımbolos que siguen al sımbolo A tambien siguen alsımbolo B:

(a) S∗⇒ δ A γ⇒ δ α B γ

(b) S∗⇒ δ A γ⇒ δ α B β γ

+⇒ δ α B γ

porque ε ∈ Primero(β) y, por tanto, β+⇒ ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 301 / 667

Page 302: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplos (Construccion del conjunto Siguiente)

1.- Gramatica de las expresiones aritmeticas.

2.- Gramatica de las declaraciones.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 302 / 667

Page 303: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 1 / 8)

P = {(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero

}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 303 / 667

Page 304: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 2 / 8)

$ ∈ Siguiente(S) (regla 1)

Siguiente(S) ⊆ Siguiente(E)

por (1) S → identificador = E(regla 3)

Primero(E ′)−{ε} ⊆ Siguiente(T )

por (2) E −→ T E’ (regla 2)

Siguiente(E) ⊆ Siguiente(E ′)

por (2) E −→ T E’ (regla 3)

Como ε ∈ Primero(E ′) entonces

Siguiente(E) ⊆ Siguiente(T )

por (2) E −→ T E’ (regla 3)

Primero Siguiente

S id $E “(”, id, n $E’ +, ε $T “(”, id, n + , $T’ *, εF “(”, id, n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 304 / 667

Page 305: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 2 / 8)

$ ∈ Siguiente(S) (regla 1)

Siguiente(S) ⊆ Siguiente(E)

por (1) S → identificador = E(regla 3)

Primero(E ′)−{ε} ⊆ Siguiente(T )

por (2) E −→ T E’ (regla 2)

Siguiente(E) ⊆ Siguiente(E ′)

por (2) E −→ T E’ (regla 3)

Como ε ∈ Primero(E ′) entonces

Siguiente(E) ⊆ Siguiente(T )

por (2) E −→ T E’ (regla 3)

Primero Siguiente

S id $E “(”, id, n $E’ +, ε $T “(”, id, n + , $T’ *, εF “(”, id, n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 305 / 667

Page 306: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 2 / 8)

$ ∈ Siguiente(S) (regla 1)

Siguiente(S) ⊆ Siguiente(E)

por (1) S → identificador = E(regla 3)

Primero(E ′)−{ε} ⊆ Siguiente(T )

por (2) E −→ T E’ (regla 2)

Siguiente(E) ⊆ Siguiente(E ′)

por (2) E −→ T E’ (regla 3)

Como ε ∈ Primero(E ′) entonces

Siguiente(E) ⊆ Siguiente(T )

por (2) E −→ T E’ (regla 3)

Primero Siguiente

S id $E “(”, id, n $E’ +, ε $T “(”, id, n + , $T’ *, εF “(”, id, n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 306 / 667

Page 307: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 2 / 8)

$ ∈ Siguiente(S) (regla 1)

Siguiente(S) ⊆ Siguiente(E)

por (1) S → identificador = E(regla 3)

Primero(E ′)−{ε} ⊆ Siguiente(T )

por (2) E −→ T E’ (regla 2)

Siguiente(E) ⊆ Siguiente(E ′)

por (2) E −→ T E’ (regla 3)

Como ε ∈ Primero(E ′) entonces

Siguiente(E) ⊆ Siguiente(T )

por (2) E −→ T E’ (regla 3)

Primero Siguiente

S id $E “(”, id, n $E’ +, ε $T “(”, id, n + , $T’ *, εF “(”, id, n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 307 / 667

Page 308: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 2 / 8)

$ ∈ Siguiente(S) (regla 1)

Siguiente(S) ⊆ Siguiente(E)

por (1) S → identificador = E(regla 3)

Primero(E ′)−{ε} ⊆ Siguiente(T )

por (2) E −→ T E’ (regla 2)

Siguiente(E) ⊆ Siguiente(E ′)

por (2) E −→ T E’ (regla 3)

Como ε ∈ Primero(E ′) entonces

Siguiente(E) ⊆ Siguiente(T )

por (2) E −→ T E’ (regla 3)

Primero Siguiente

S id $E “(”, id, n $E’ +, ε $T “(”, id, n + , $T’ *, εF “(”, id, n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 308 / 667

Page 309: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 3 / 8)

Primero(E ′)−{ε} ⊆ Siguiente(T )(repetido)

por (3) E’ −→ + T E’ (regla 2)

Siguiente(E ′) ⊆ Siguiente(E ′)(superflua)

por (3) E’ −→ + T E’ (regla 3)

Como ε ∈ Primero(E ′) entonces

Siguiente(E ′) ⊆ Siguiente(T )

por (3) E’ −→ + T E’ (regla 3)

Primero Siguiente

S id $E “(”, id, n $E’ +, ε $T “(”, id, n +, $T’ *, εF “(”, id, n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 309 / 667

Page 310: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 3 / 8)

Primero(E ′)−{ε} ⊆ Siguiente(T )(repetido)

por (3) E’ −→ + T E’ (regla 2)

Siguiente(E ′) ⊆ Siguiente(E ′)(superflua)

por (3) E’ −→ + T E’ (regla 3)

Como ε ∈ Primero(E ′) entonces

Siguiente(E ′) ⊆ Siguiente(T )

por (3) E’ −→ + T E’ (regla 3)

Primero Siguiente

S id $E “(”, id, n $E’ +, ε $T “(”, id, n +, $T’ *, εF “(”, id, n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 310 / 667

Page 311: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 3 / 8)

Primero(E ′)−{ε} ⊆ Siguiente(T )(repetido)

por (3) E’ −→ + T E’ (regla 2)

Siguiente(E ′) ⊆ Siguiente(E ′)(superflua)

por (3) E’ −→ + T E’ (regla 3)

Como ε ∈ Primero(E ′) entonces

Siguiente(E ′) ⊆ Siguiente(T )

por (3) E’ −→ + T E’ (regla 3)

Primero Siguiente

S id $E “(”, id, n $E’ +, ε $T “(”, id, n +, $T’ *, εF “(”, id, n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 311 / 667

Page 312: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 4 / 8)

Primero(T ′)−{ε} ⊆ Siguiente(F )

por (5) T −→ F T’ (regla 2)

Siguiente(T ) ⊆ Siguiente(T ′)

por (5) T −→ F T’ (regla 3)

Como ε ∈ Primero(T ′) entonces

Siguiente(T ) ⊆ Siguiente(F )

por (5) T −→ F T’ (regla 3)

Primero Siguiente

S id $E “(”, id, n $E’ +, ε $T “(”, id, n + , $T’ *, ε + , $F “(”, id, n * , + , $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 312 / 667

Page 313: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 4 / 8)

Primero(T ′)−{ε} ⊆ Siguiente(F )

por (5) T −→ F T’ (regla 2)

Siguiente(T ) ⊆ Siguiente(T ′)

por (5) T −→ F T’ (regla 3)

Como ε ∈ Primero(T ′) entonces

Siguiente(T ) ⊆ Siguiente(F )

por (5) T −→ F T’ (regla 3)

Primero Siguiente

S id $E “(”, id, n $E’ +, ε $T “(”, id, n + , $T’ *, ε + , $F “(”, id, n * , + , $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 313 / 667

Page 314: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 4 / 8)

Primero(T ′)−{ε} ⊆ Siguiente(F )

por (5) T −→ F T’ (regla 2)

Siguiente(T ) ⊆ Siguiente(T ′)

por (5) T −→ F T’ (regla 3)

Como ε ∈ Primero(T ′) entonces

Siguiente(T ) ⊆ Siguiente(F )

por (5) T −→ F T’ (regla 3)

Primero Siguiente

S id $E “(”, id, n $E’ +, ε $T “(”, id, n + , $T’ *, ε + , $F “(”, id, n * , + , $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 314 / 667

Page 315: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 5 / 8)

Primero(T ′)−{ε} ⊆ Siguiente(F )(repetido)

por (6) T’ −→ * F T’ (regla 2)

Siguiente(T ′) ⊆ Siguiente(T ′)(superflua)

por (6) T’ −→ * F T’ (regla 3)

Como ε ∈ Primero(T ′) entonces

Siguiente(T ′) ⊆ Siguiente(F )

por (6) T’ −→ * F T’ (regla 3)

Primero Siguiente

S id $E “(”, id, n $E’ +, ε $T “(”, id, n +, $T’ *, ε +, $F “(”, id, n *, +, $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 315 / 667

Page 316: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 5 / 8)

Primero(T ′)−{ε} ⊆ Siguiente(F )(repetido)

por (6) T’ −→ * F T’ (regla 2)

Siguiente(T ′) ⊆ Siguiente(T ′)(superflua)

por (6) T’ −→ * F T’ (regla 3)

Como ε ∈ Primero(T ′) entonces

Siguiente(T ′) ⊆ Siguiente(F )

por (6) T’ −→ * F T’ (regla 3)

Primero Siguiente

S id $E “(”, id, n $E’ +, ε $T “(”, id, n +, $T’ *, ε +, $F “(”, id, n *, +, $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 316 / 667

Page 317: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 5 / 8)

Primero(T ′)−{ε} ⊆ Siguiente(F )(repetido)

por (6) T’ −→ * F T’ (regla 2)

Siguiente(T ′) ⊆ Siguiente(T ′)(superflua)

por (6) T’ −→ * F T’ (regla 3)

Como ε ∈ Primero(T ′) entonces

Siguiente(T ′) ⊆ Siguiente(F )

por (6) T’ −→ * F T’ (regla 3)

Primero Siguiente

S id $E “(”, id, n $E’ +, ε $T “(”, id, n +, $T’ *, ε +, $F “(”, id, n *, +, $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 317 / 667

Page 318: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 6 / 8)

“)′′ ∈ Siguiente(E)

por (8) F → ( E ) (regla 2) Primero Siguiente

S id $E “(”, id, n $, “)”E’ +, ε $ , “)”T “(”, id, n +, $, “)”T’ *, ε +, $, “)”F “(”, id, n *, +, $, “)”

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 318 / 667

Page 319: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Nota (1.- Gramatica de las expresiones aritmeticas 7 / 8)

Las reglas de produccion que no contienen ningun sımbolo noterminal en su parte derecha no influyen en el conjuntoSiguiente(4) E’ → ε(7) T’ → ε(9) F → identificador

(10) F → numero

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 319 / 667

Page 320: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (1.- Gramatica de las expresiones aritmeticas 8 / 8)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Primero Siguiente

S id $E “(”, id, n $, “)”E’ +, ε $ , “)”T “(”, id, n +, $, “)”T’ *, ε +, $, “)”F “(”, id, n *, +, $, “)”

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 320 / 667

Page 321: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (2.- Gramatica de las declaraciones 1 / 2)

P = {(1) S −→ D S(2) S −→ ε(3) D −→ T L ;(4) T −→ int(5) T −→ float(6) L −→ id L’(7) L’ −→ , id L’(8) L’ −→ ε

}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 321 / 667

Page 322: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (2.- Gramatica de las declaraciones 2 / 2)

$ ∈ Siguiente(S) (regla 1)

Primero(S)− {ε} ⊆ Siguiente(D)

por (1) S −→ D S (regla 2)

Como ε ∈ Primero(S) entonces

Siguiente(S) ⊆ Siguiente(D)

por (1) S −→ D S (regla 3)

Primero(L;)−{ε} ⊆ Siguiente(T )

por (3) D −→ T L ; (regla 2)

; ∈ Siguiente(L)

por (3) D −→ T L ; (regla 2)

Siguiente(L) ⊆ Siguiente(L′)

por (6) L −→ id L’ (regla 3)

Primero Siguiente

S ε, int, float $D int, float int, float , $T int, float idL id ;L′ “,” , ε ;

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 322 / 667

Page 323: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (2.- Gramatica de las declaraciones 2 / 2)

$ ∈ Siguiente(S) (regla 1)

Primero(S)− {ε} ⊆ Siguiente(D)

por (1) S −→ D S (regla 2)

Como ε ∈ Primero(S) entonces

Siguiente(S) ⊆ Siguiente(D)

por (1) S −→ D S (regla 3)

Primero(L;)−{ε} ⊆ Siguiente(T )

por (3) D −→ T L ; (regla 2)

; ∈ Siguiente(L)

por (3) D −→ T L ; (regla 2)

Siguiente(L) ⊆ Siguiente(L′)

por (6) L −→ id L’ (regla 3)

Primero Siguiente

S ε, int, float $D int, float int, float , $T int, float idL id ;L′ “,” , ε ;

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 323 / 667

Page 324: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (2.- Gramatica de las declaraciones 2 / 2)

$ ∈ Siguiente(S) (regla 1)

Primero(S)− {ε} ⊆ Siguiente(D)

por (1) S −→ D S (regla 2)

Como ε ∈ Primero(S) entonces

Siguiente(S) ⊆ Siguiente(D)

por (1) S −→ D S (regla 3)

Primero(L;)−{ε} ⊆ Siguiente(T )

por (3) D −→ T L ; (regla 2)

; ∈ Siguiente(L)

por (3) D −→ T L ; (regla 2)

Siguiente(L) ⊆ Siguiente(L′)

por (6) L −→ id L’ (regla 3)

Primero Siguiente

S ε, int, float $D int, float int, float , $T int, float idL id ;L′ “,” , ε ;

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 324 / 667

Page 325: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (2.- Gramatica de las declaraciones 2 / 2)

$ ∈ Siguiente(S) (regla 1)

Primero(S)− {ε} ⊆ Siguiente(D)

por (1) S −→ D S (regla 2)

Como ε ∈ Primero(S) entonces

Siguiente(S) ⊆ Siguiente(D)

por (1) S −→ D S (regla 3)

Primero(L;)−{ε} ⊆ Siguiente(T )

por (3) D −→ T L ; (regla 2)

; ∈ Siguiente(L)

por (3) D −→ T L ; (regla 2)

Siguiente(L) ⊆ Siguiente(L′)

por (6) L −→ id L’ (regla 3)

Primero Siguiente

S ε, int, float $D int, float int, float , $T int, float idL id ;L′ “,” , ε ;

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 325 / 667

Page 326: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (2.- Gramatica de las declaraciones 2 / 2)

$ ∈ Siguiente(S) (regla 1)

Primero(S)− {ε} ⊆ Siguiente(D)

por (1) S −→ D S (regla 2)

Como ε ∈ Primero(S) entonces

Siguiente(S) ⊆ Siguiente(D)

por (1) S −→ D S (regla 3)

Primero(L;)−{ε} ⊆ Siguiente(T )

por (3) D −→ T L ; (regla 2)

; ∈ Siguiente(L)

por (3) D −→ T L ; (regla 2)

Siguiente(L) ⊆ Siguiente(L′)

por (6) L −→ id L’ (regla 3)

Primero Siguiente

S ε, int, float $D int, float int, float , $T int, float idL id ;L′ “,” , ε ;

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 326 / 667

Page 327: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejemplo (2.- Gramatica de las declaraciones 2 / 2)

$ ∈ Siguiente(S) (regla 1)

Primero(S)− {ε} ⊆ Siguiente(D)

por (1) S −→ D S (regla 2)

Como ε ∈ Primero(S) entonces

Siguiente(S) ⊆ Siguiente(D)

por (1) S −→ D S (regla 3)

Primero(L;)−{ε} ⊆ Siguiente(T )

por (3) D −→ T L ; (regla 2)

; ∈ Siguiente(L)

por (3) D −→ T L ; (regla 2)

Siguiente(L) ⊆ Siguiente(L′)

por (6) L −→ id L’ (regla 3)

Primero Siguiente

S ε, int, float $D int, float int, float , $T int, float idL id ;L′ “,” , ε ;

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 327 / 667

Page 328: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Limitaciones del analisis sintactico descendente predictivo

No se puede realizar si la gramatica posee alguna de lassiguiente propiedades:

Es recursiva por la izquierda.No esta factorizada por la izquierda.Es ambigua.

Nota

Estas condiciones son necesarias pero no suficientes.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 328 / 667

Page 329: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejercicios (Construccion del conjunto Siguiente)

1.- Gramatica de prototipos

2.- Gramatica que genera L(G) = L(a∗ b∗ c∗)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 329 / 667

Page 330: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejercicio (1.- Gramatica de los prototipos 1 / 2)

P = {(1) S → D S(2) S → ε(3) D → T identificador ( P ) ;(4) T −→ int(5) T −→ float(6) P → ε(7) P → id L(8) L → ε(9) L → , id L

}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 330 / 667

Page 331: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConjunto Siguiente

Ejercicio (2.- Gramatica que genera L(G) = L(a∗ b∗ c∗) 2 / 2)

P = {(1) S → A B C(2) A → a A(3) A → ε(4) B → b B(5) B → ε(6) C → c C(7) C → ε

}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 331 / 667

Page 332: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

3 Analisis sintactico descendente predictivoDescripcionGramaticas LL(k)FasesConjunto PrimeroConjunto SiguienteConstruccion de la tabla predictivaConflictos en la tabla predictivaImplementacion recursivaImplementacion iterativa

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 332 / 667

Page 333: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Definicion (Tabla predictiva)

M Sımbolo de entrada

σ1 . . . σj . . . σm $

SA1

. . .Ai Regla k. . .An

S, Ai ∈ VN ∀i ∈ {1, 2, . . . , n}σj ∈ VT ∀j ∈ {1, 2, . . . ,m}$: sımbolo que indica el fin de la cadena de entrada

Regla K: regla del sımbolo Ai que se debe usar cuando σj es el sımbolo actual.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 333 / 667

Page 334: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejemplo (Gramatica de expresiones aritmeticas)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaM Sımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 334 / 667

Page 335: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Algoritmo (Construccion de la tabla predictiva)

[1] Para cada A→ α ∈ P hacer[2] si a ∈ Primero(α)− {ε}[3] entonces A→ α ∈ M[A, a][4] fin si[5][6] si ε ∈ Primero(α)[7] entonces[8] para cada b ∈ Siguiente(A) hacer[9] A→ α ∈ M[A,b][10] fin para[11] fin si[12] fin para

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 335 / 667

Page 336: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Notas (Construccion de la tabla predictiva)

M: tabla predictiva

Las celdas vacıas de M representan situaciones de error quehan de ser tratadas.

Si M posee alguna celda con valores multples entonces lagramatica tiene un conflicto y no admite un analisisdescendente predictivo.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 336 / 667

Page 337: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejemplo (Construccion de la tabla predictiva 1 / 12)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Paso previoPrimero Siguiente

S id $E “(”, id, n $, “)”E’ +, ε $ , “)”T “(”, id, n +, $, “)”T’ *, ε +, $, “)”F “(”, id, n *, +, $, “)”

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 337 / 667

Page 338: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejemplo (Construccion de la tabla predictiva 2 / 12)

Tabla predictivaM Sımbolo de entrada

id = + * ( ) numero $

S 1EE’TT’F

(1) S︸︷︷︸A

→ identificador = E︸ ︷︷ ︸α

Primero(α)− {ε} = Primero(identificador = E) = { identificador }

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 338 / 667

Page 339: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejemplo (Construccion de la tabla predictiva 3 / 12)

Tabla predictivaM Sımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’TT’F

(2) E︸︷︷︸A

→ T E’︸︷︷︸α

Primero(α)− {ε} = Primero(T E’) = { “(”, id, n }

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 339 / 667

Page 340: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejemplo (Construccion de la tabla predictiva 4 / 12)

Tabla predictivaM Sımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3TT’F

(3) E ′︸︷︷︸A

→ + T E’︸ ︷︷ ︸α

Primero(α)− {ε} = Primero(+ T E’) = { + }

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 340 / 667

Page 341: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejemplo (Construccion de la tabla predictiva 5 / 12)

Tabla predictivaM Sımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4TT’F

(4) E ′︸︷︷︸A

→ ε︸︷︷︸α

Como ε ∈ Primero(α), entonces se anade la regla 4 en las celdas M[E’,b]

donde b ∈ Siguiente(E’) = { “)”, $}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 341 / 667

Page 342: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejemplo (Construccion de la tabla predictiva 6 / 12)

Tabla predictivaM Sımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’F

(5) T︸︷︷︸A

→ F T’︸︷︷︸α

Primero(α)− {ε} = Primero(F T’) = { “(”, id, n }

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 342 / 667

Page 343: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejemplo (Construccion de la tabla predictiva 7 / 12)

Tabla predictivaM Sımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 6F

(6) T ′︸︷︷︸A

→ * T E’︸ ︷︷ ︸α

Primero(α)− {ε} = Primero(* F T’) = { * }

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 343 / 667

Page 344: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejemplo (Construccion de la tabla predictiva 8 / 12)

Tabla predictivaM Sımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F

(7) T ′︸︷︷︸A

→ ε︸︷︷︸α

Como ε ∈ Primero(α), entonces se anade la regla 7 en las celdas M[T’,b]

donde b ∈ Siguiente(T’) = { +, “)”, $}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 344 / 667

Page 345: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejemplo (Construccion de la tabla predictiva 9 / 12)

Tabla predictivaM Sımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 8

(8) F︸︷︷︸A

→ ( E )︸ ︷︷ ︸α

Primero(α)− {ε} = Primero( ( E ) ) = { “(” }

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 345 / 667

Page 346: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejemplo (Construccion de la tabla predictiva 10 / 12)

Tabla predictivaM Sımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8

(9) F︸︷︷︸A

→ identificador︸ ︷︷ ︸α

Primero(α)− {ε} = Primero( identificador ) = { identificador }

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 346 / 667

Page 347: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejemplo (Construccion de la tabla predictiva 11 / 12)

Tabla predictivaM Sımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

(10) F︸︷︷︸A

→ numero︸ ︷︷ ︸α

Primero(α)− {ε} = Primero( numero ) = { numero }

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 347 / 667

Page 348: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejemplo (Construccion de la tabla predictiva 12 / 12)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaM Sımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 348 / 667

Page 349: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejercicios (Construccion de la tabla predictiva)

1.- Gramatica de declaraciones

2.- Gramatica de prototipos

3.- Gramatica que genera L(G) = L(a∗ b∗ c∗)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 349 / 667

Page 350: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejercicio (1.- Gramatica de declaraciones 1a / 3)

P = {

(1) S −→ D S(2) S −→ ε(3) D −→ T L ;(4) T −→ int(5) T −→ float(6) L −→ id L’(7) L’ −→ , id L’(8) L’ −→ ε}

Paso previoPrimero Siguiente

S ε, int, float $D int, float int, float, $T int, float idL id ;L′ “,” , ε ;

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 350 / 667

Page 351: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejercicio (1.- Gramatica de declaraciones 1b / 3)

P = {

(1) S −→ D S(2) S −→ ε(3) D −→ T L ;(4) T −→ int(5) T −→ float(6) L −→ id L’(7) L’ −→ , id L’(8) L’ −→ ε}

Tabla predictivaM Sımbolo de entrada

; int float id , $

S 1 1 2D 3 3T 4 5L 6L’ 8 7

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 351 / 667

Page 352: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejercicio (2.- Gramatica de los prototipos 2 / 3)

P = {(1) S → D S(2) S → ε(3) D → T identificador ( P ) ;(4) T −→ int(5) T −→ float(6) P → ε(7) P → id L(8) L → ε(9) L → , id L

}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 352 / 667

Page 353: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConstruccion de la tabla predictiva

Ejercicio (3.- Gramatica que genera L(G) = L(a∗ b∗ c∗) 3 / 3)

P = {(1) S → A B C(2) A → a A(3) A → ε(4) B → b B(5) B → ε(6) C → c C(7) C → ε

}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 353 / 667

Page 354: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

3 Analisis sintactico descendente predictivoDescripcionGramaticas LL(k)FasesConjunto PrimeroConjunto SiguienteConstruccion de la tabla predictivaConflictos en la tabla predictivaImplementacion recursivaImplementacion iterativa

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 354 / 667

Page 355: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConflictos en la tabla predictiva

Definicion (Conflicto en la tabla predictiva)

Se produce un conflicto en una tabla predictiva cuando hayuna celda M[Ai ,σj ] que tiene asignadas dos o mas reglas deproduccion.

Ejemplo (Conflicto en la tabla predictiva)

M Sımbolo de entrada

σ1 . . . σj . . . σm $

SA1

. . .Ai k, k’. . .An

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 355 / 667

Page 356: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConflictos en la tabla predictiva

Definicion (Conflicto en la tabla predictiva)

Se produce un conflicto en una tabla predictiva cuando hayuna celda M[Ai ,σj ] que tiene asignadas dos o mas reglas deproduccion.

Ejemplo (Conflicto en la tabla predictiva)

M Sımbolo de entrada

σ1 . . . σj . . . σm $

SA1

. . .Ai k, k’. . .An

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 356 / 667

Page 357: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConflictos en la tabla predictiva

Nota (Conflicto en la tabla predictiva)

Si una gramatica posee al menos un conflicto entonces

no admite un analisis descendente predictivo.no es una gramatica LL

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 357 / 667

Page 358: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConflictos en la tabla predictiva

Nota (Conflicto en la tabla predictiva)

Si una gramatica posee recursividad por la izquierda o no estafactorizada por la izquierda entonces tendra conflictos en sutabla predictiva

Estas condiciones son necesarias pero no suficientes:

Existen gramaticas que no poseen recursividad por la izquierday que estan factorizadas por la izquierda que tambienpresentan conflictos en su tabla predictiva.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 358 / 667

Page 359: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConflictos en la tabla predictiva

Ejemplos (Conflicto en la tabla predictiva)

1.- Gramatica con recursividad por la izquierda.

2.- Gramatica no factorizada por la izquierda.

3.- Gramatica sin recursividad por la izquierda y factorizada porla izquierda.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 359 / 667

Page 360: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConflictos en la tabla predictiva

Ejemplo (1.- Gramatica con recursividad por la izquierda)

P = {

(1) S −→ S D(2) S −→ D(3) D −→ T L ;(4) T −→ int(5) T −→ float(6) L −→ L , id(7) L’ −→ id}

Tabla predictiva con conflictosM Sımbolo de entrada

; int float , id $S 1, 2 1, 2DTL

(1) S → S D︸︷︷︸α

Primero(α) = Primero(S D) = { int, float }(2) S → D︸︷︷︸

α

Primero(α) = Primero(D) = { int, float }

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 360 / 667

Page 361: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConflictos en la tabla predictiva

Ejemplo (2.- Gramatica no factorizada por la izquierda)

P = {

(1) S → a A(2) A → a A(3) A → a B(4) B → b B(5) B → b C(6) C → c C(7) C → c}

Tabla predictiva con conflictoM Sımbolo de entrada

a b c $SA 2, 3BC

(2) A → a A︸ ︷︷ ︸α

Primero(α) = Primero(a A) = {a}(3) A → a B︸ ︷︷ ︸

α

Primero(α) = Primero(a B) = {a}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 361 / 667

Page 362: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConflictos en la tabla predictiva

Ejemplo (3.- Gramatica sin recursividad por la izquierda yfactorizada por la izquierda)

P = {

(1) S −→ a S(2) S −→ A B(3) A −→ a A(4) A −→ c(5) B −→ b B(6) B −→ d}

Tabla predictiva con conflictosM Sımbolo de entrada

a b c d $S 1, 2 2AB

(1) S → a S︸︷︷︸α

Primero(α) = Primero(a S) = {a}(2) S → A B︸︷︷︸

α

Primero(α) = Primero(A B) = {a, c}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 362 / 667

Page 363: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConflictos en la tabla predictiva

Ejercicio (Conflicto de la tabla predictiva)

Comprueba que la siguiente gramatica del else danzantegenera un conflicto en la tabla predictiva:

P = {(1) S −→ if C then S S’(2) S −→ instruccion(3) S’ −→ else S(4) S’ −→ ε(5) C −→ condicion

}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 363 / 667

Page 364: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConflictos en la tabla predictiva

Gramatica ideal que no genera conflictos

Una gramatica puede generar una tabla predictiva sinconflictos de forma inmediata si cumple dos condiciones:

Esta en la Forma Normal de Greibach:

A −→ σ α ∈ Pdonde σ ∈ VT ∧ α ∈ V ∗N

Para cada sımbolo no terminal A ∈ VN , sus alternativascomienzan por un sımbolo terminal diferente:

Si A −→ σ α | σ’ α′ ∈ P entonces σ 6= σ’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 364 / 667

Page 365: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoConflictos en la tabla predictiva

Ejemplo (Gramatica ideal que no genera conflictos)

P = {

(1) S −→ a A B C(2) A −→ a B D(3) A −→ b D C(4) B −→ b B AD(5) B −→ c(6) C −→ d D(7) D −→ c A B(8) D −→ d}

Tabla predictiva sin conflictosM Sımbolo de entrada

a b c d $S 1A 2 3B 4 5C 6D 7 8

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 365 / 667

Page 366: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

3 Analisis sintactico descendente predictivoDescripcionGramaticas LL(k)FasesConjunto PrimeroConjunto SiguienteConstruccion de la tabla predictivaConflictos en la tabla predictivaImplementacion recursivaImplementacion iterativa

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 366 / 667

Page 367: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Descripcion

Codifica un procedimiento para cada sımbolo no terminal dela gramatica.

El codigo del procedimiento esta basado en la tabla predictiva.

Cada procedimiento determina cual es la unica regla deproduccion que se puede utilizar en cada paso.

Los procedimientos pueden ser recursivas si hay reglas deproduccion recursivas.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 367 / 667

Page 368: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Descripcion

Se codifica ua procedimiento para cada sımbolo A ∈ VN

Se utiliza la tabla predictiva para determinar cual es la unicaregla de A que se puede simular teniendo en cuenta elsımbolo actual de la cadena de entrada:

Si la simulacion de una regla es correcta, el procedimientotermina correctamente.En caso contrario, el procedimiento lanza un error.

Si A posee alguna regla recursiva entonces el procedimiento esrecursivo.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 368 / 667

Page 369: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Nota (Metodo recursivo sin retroceso)

Si la simulacion de una regla falla entonces no se prueba conninguna otra regla.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 369 / 667

Page 370: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Simulacion de la regla A −→ X1X2 . . .Xn ∈ P

Para i desde 1 hasta n hacer

Si Xi = B ∈ VN entonces se llama a la funcion asociada alsımbolo B

Si tiene exito, continua el analisis.En caso contario, fracasa la simulacion de esta regla de A.

Si Xi = σ ∈ VT entonces se intenta emparejar σ con elcomponente lexico actual de la cadena de entrada.

Si son iguales, el analisis continua.En caso contario, fracasa la simulacion de esta regla de A.

fin para

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 370 / 667

Page 371: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Nota (Simulacion de la regla A −→ ε )

La simulacion de la regla ε siempre tiene exito, ya que seejecuta una sentencia nula.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 371 / 667

Page 372: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplos

1.- Codificacion de los procedimientos asociados a los sımbolosno terminales de la gramatica

2.- Uso de los procedimientos para analizar una sentencia.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 372 / 667

Page 373: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (Codificacion de los procedimientos 1 / 15)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 373 / 667

Page 374: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (Codificacion de los procedimientos 2 / 15)

Codificacion de los procedimientos asociados a los sımbolosno terminales: S, E, E’, T, T’ y F.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 374 / 667

Page 375: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (Codificacion de los procedimientos 3 / 15)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 375 / 667

Page 376: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (Codificacion de los procedimientos 4 / 15)

Procedimiento S

inicio

{Regla (1) S→ identificador = E}

si (token = identificador ) entonces

avanzar entrada(token)

si (token = “=”) entonces

avanzar entrada(token)

Llamada a E

si no { token es distinto de “=”}

ERROR

fin si

· · ·

si no { token es otro sımbolo }

ERROR

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 376 / 667

Page 377: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (Codificacion de los procedimientos 5 / 15)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 377 / 667

Page 378: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (Codificacion de los procedimientos 6 / 15)

Procedimiento E

inicio

{Regla (2) E → T E’}si (token = identificador) o (token = numero ) o (token = “(” )

entonces

Llamada a T

Llamada a E’

si no { token es otro sımbolo }ERROR

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 378 / 667

Page 379: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (Codificacion de los procedimientos 7 / 15)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 379 / 667

Page 380: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (Codificacion de los procedimientos 8 / 15)

Procedimiento E’

inicio

{Regla (3) E’ −→ + T E’}

si (token = “+”) entonces

avanzar entrada(token)

Llamada a T

Llamada a E’

si no {token es distinto de “+” }

· · ·

{Regla (4) E’ −→ ε}

si (token = “)”) o (token = $) entonces

{Sentencia nula}

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 380 / 667

Page 381: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (Codificacion de los procedimientos 9 / 15)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 381 / 667

Page 382: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (Codificacion de los procedimientos 10 / 15)

Procedimiento T

inicio

{Regla (5) T → F T’}si (token = identificador) o (token = numero ) o (token = “(” )

entonces

Llamada a F

Llamada a T’

si no

ERROR

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 382 / 667

Page 383: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (Codificacion de los procedimientos 11 / 15)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 383 / 667

Page 384: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (Codificacion de los procedimientos 12 / 15)

Procedimiento T’

inicio

{Regla (5) T’ −→ * F T’}

si (token = “*”)

entonces

avanzar entrada(token)

Llamada a F

Llamada a T’

si no {token es distinto de “*” }

· · ·

{Regla (6) T’ −→ ε}

si (token = “+”) o (token = “)”)

o (token = $) entonces

{Sentencia nula}

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 384 / 667

Page 385: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (Codificacion de los procedimientos 13 / 15)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 385 / 667

Page 386: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (Codificacion de los procedimientos 14 / 15)

Procedimiento F

inicio

{Regla (8) F → ( E )}si (token = “(”) entonces

avanzar entrada(token)

Llamada a E

si (token = “)”) entonces

avanzar entrada(token)

si no { token es distinto de “)”}ERROR

fin si

· · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 386 / 667

Page 387: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (Codificacion de los procedimientos 15 / 15)

Procedimiento F(continuacion)

si no { token es distinto de “(”}

{Regla (9) F→ identificador }

si (token = “id”) entonces

avanzar entrada(token)

si no { token es distinto de “id”}

{Regla (10) F→ numero }

si (token = “numero”)

entonces

avanzar entrada(token)

· · ·

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 387 / 667

Page 388: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 1 / 75)

Analisis de la sentencia:

identificador = identificador + numero * identificador $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 388 / 667

Page 389: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 2 / 75)

Llamada al procedimiento asociado al sımbolo inicial S

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 389 / 667

Page 390: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 3 / 75)

Analisis de id = id + n * id $

S

Arbol sintactico

S

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 390 / 667

Page 391: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 4 / 75)

Procedimiento S

inicio

{Regla (1) S→ identificador = E}

si (token = identificador ) entonces

avanzar entrada(token)

si (token = “=”) entonces

avanzar entrada(token)

Llamada a E

si no { token es distinto de “=”}

ERROR

fin si

· · ·

si no { token es otro sımbolo }

ERROR

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 391 / 667

Page 392: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 5 / 75)

Procedimiento S

inicio

{Regla (1) S→ identificador = E}

si (token = identificador ) entonces

avanzar entrada(token)

si (token = “=”) entonces

avanzar entrada(token)

Llamada a E

si no { token es distinto de “=”}

ERROR

fin si

· · ·

si no { token es otro sımbolo }

ERROR

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 392 / 667

Page 393: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 6 / 75)

Procedimiento S

inicio

{Regla (1) S→ identificador = E}

si (token = identificador ) entonces

avanzar entrada(token)

si (token = “=”) entonces

avanzar entrada(token)

Llamada a E

si no { token es distinto de “=”}

ERROR

fin si

· · ·

si no { token es otro sımbolo }

ERROR

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 393 / 667

Page 394: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 7 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

Emparejamientos: id, =

Arbol sintactico

identificador =

S

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 394 / 667

Page 395: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 8 / 75)

Llamada al procedimiento asociado al sımbolo E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 395 / 667

Page 396: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 9 / 75)

Procedimiento E

inicio

{Regla (2) E→ T E’}

si (token = identificador) o (token = numero ) o (token = “(” )

entonces

Llamada a T

Llamada a E’

si no { token es otro sımbolo }

ERROR

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 396 / 667

Page 397: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 10 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

Arbol sintactico

identificador =

S

T

E

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 397 / 667

Page 398: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 11 / 75)

Llamada al procedimiento asociado al sımbolo T

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 398 / 667

Page 399: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 12 / 75)

Procedimiento T

inicio

{Regla (5) T→ F T’}

si (token = identificador) o (token = numero ) o (token = “(” )

entonces

Llamada a F

Llamada a T’

si no

ERROR

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 399 / 667

Page 400: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 13 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = T E ′

⇒5

id = FT ′E ′

Arbol sintactico

F

identificador =

S

T E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 400 / 667

Page 401: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 14 / 75)

Llamada al procedimiento asociado al sımbolo F

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 401 / 667

Page 402: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 15 / 75)

Procedimiento F

inicio

{Regla (8) F→ ( E )}

si (token = “(”) entonces

avanzar entrada(token)

Llamada a E

si (token = “)”) entonces

avanzar entrada(token)

si no { token es distinto de “)”}

ERROR

fin si

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 402 / 667

Page 403: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 16 / 75)

Procedimiento F(continuacion)

si no { token es distinto de “(”}

{Regla (9) F→ identificador }

si (token = “id”) entonces

avanzar entrada(token)

si no { token es distinto de “id”}

{Regla (10) F→ numero }

si (token = “numero”)

entonces

avanzar entrada(token)

· · ·

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 403 / 667

Page 404: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 17 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = F T ′E ′

⇒9

id = idT ′E ′

Emparejamiento de id

Arbol sintactico

F

identificadoridentificador =

S

T E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 404 / 667

Page 405: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 18 / 75)

Fin de la llamada al procedimiento asociado al sımbolo F

Se devuelve el control al procedimiento asociado al sımbolo T

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 405 / 667

Page 406: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 19 / 75)

Procedimiento T

inicio

{Regla (5) T→ F T’}

si (token = identificador) o (token = numero ) o (token = “(” )

entonces

Llamada a F

Llamada a T’

si no

ERROR

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 406 / 667

Page 407: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 20 / 75)

Llamada al procedimiento asociado al sımbolo T’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 407 / 667

Page 408: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 21 / 75)

Procedimiento T’

inicio

{Regla (5) T’ −→ * F T’}

si (token = “*”)

entonces

avanzar entrada(token)

Llamada a F

Llamada a T’

si no {token es distinto de “*” }

· · ·

{Regla (6) T’ −→ ε}

si (token = “+”) o (token = “)”)

o (token = $) entonces

{Sentencia nula}

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 408 / 667

Page 409: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 22 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = id T ′E ′

⇒7

id = id ε E ′

Arbol sintactico

F

identificadoridentificador =

S

T

ε

E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 409 / 667

Page 410: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 23 / 75)

Fin de la llamada al procedimiento asociado al sımbolo T’

Se devuelve el control al procedimiento asociado al sımbolo T

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 410 / 667

Page 411: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 24 / 75)

Procedimiento T

inicio

{Regla (5) T → F T’}

si (token = identificador) o (token = numero ) o (token = “(” )

entonces

Llamada a F

Llamada a T’

si no

ERROR

fin sifin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 411 / 667

Page 412: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 25 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = id T ′E ′

⇒7

id = id ε E ′

Arbol sintactico

F

identificadoridentificador =

S

T

ε

E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 412 / 667

Page 413: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 26 / 75)

Fin de la llamada al procedimiento asociado al sımbolo T

Se devuelve el control al procedimiento asociado al sımbolo E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 413 / 667

Page 414: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 27 / 75)

Procedimiento E

inicio

{Regla (2) E→ T E’}

si (token = identificador) o (token = numero ) o (token = “(” )

entonces

Llamada a T

Llamada a E’

si no { token es otro sımbolo }

ERROR

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 414 / 667

Page 415: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 28 / 75)

Llamada al procedimiento asociado al sımbolo E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 415 / 667

Page 416: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 29 / 75)

Procedimiento E’

inicio

{Regla (3) E’ −→ + T E’}

si (token = “+”) entonces

avanzar entrada(token)

Llamada a T

Llamada a E’

si no {token es distinto de “+” }

· · ·

{Regla (4) E’ −→ ε}

si (token = “)”) o (token = $) entonces

{Sentencia nula}

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 416 / 667

Page 417: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 30 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = id T ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε +TE ′

Emparejamiento de +

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

E

T E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 417 / 667

Page 418: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 31 / 75)

Procedimiento E’

inicio

{Regla (3) E’ −→ + T E’}

si (token = “+”) entonces

avanzar entrada(token)

Llamada a T

Llamada a E’

si no {token es distinto de “+” }

· · ·

{Regla (4) E’ −→ ε}

si (token = “)”) o (token = $) entonces

{Sentencia nula}

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 418 / 667

Page 419: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 32 / 75)

Llamada al procedimiento asociado al sımbolo T

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 419 / 667

Page 420: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 33 / 75)

Procedimiento T

inicio

{Regla (5) T→ F T’}

si (token = identificador) o (token = numero ) o (token = “(” )

entonces

Llamada a F

Llamada a T’

si no

ERROR

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 420 / 667

Page 421: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 34 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + T E ′

⇒5

id = id ε + FT ′E ′

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

F

E

T

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 421 / 667

Page 422: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 35 / 75)

Llamada al procedimiento asociado al sımbolo F

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 422 / 667

Page 423: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 36 / 75)

Procedimiento F

inicio

{Regla (8) F → ( E )}

si (token = “(”) entonces

avanzar entrada(token)

Llamada a E

si (token = “)”) entonces

avanzar entrada(token)

si no { token es distinto de “)”}ERROR

fin si

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 423 / 667

Page 424: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 37 / 75)

Procedimiento F(continuacion)

si no { token es distinto de “(”}

{Regla (9) F→ identificador }

si (token = “id”) entonces

avanzar entrada(token)

si no { token es distinto de “id”}

{Regla (10) F→ numero }

si (token = “numero”)

entonces

avanzar entrada(token)

· · ·

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 424 / 667

Page 425: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 38 / 75)

Procedimiento F(continuacion)

si no { token es distinto de “(”}

{Regla (9) F→ identificador }

si (token = “id”) entonces

avanzar entrada(token)

si no { token es distinto de “id”}

{Regla (10) F→ numero }

si (token = “numero”)

entonces

avanzar entrada(token)

· · ·

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 425 / 667

Page 426: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 39 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + F T ′E ′

⇒10

id = id ε + nT ′E ′

Emparejamiento de n

Arbol sintactico

F

identificadoridentificador =

S

número+

T

ε

E’

T’

F

E

T

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 426 / 667

Page 427: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 40 / 75)

Fin de la llamada al procedimiento asociado al sımbolo F

Se devuelve el control al procedimiento asociado al sımbolo T

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 427 / 667

Page 428: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 41 / 75)

Procedimiento T

inicio

{Regla (5) T→ F T’}

si (token = identificador) o (token = numero ) o (token = “(” )

entonces

Llamada a F

Llamada a T’

si no

ERROR

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 428 / 667

Page 429: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 42 / 75)

Llamada al procedimiento asociado al sımbolo T’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 429 / 667

Page 430: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 43 / 75)

Procedimiento T’

inicio

{Regla (5) T’ −→ * F T’}

si (token = “*”)

entonces

avanzar entrada(token)

Llamada a F

Llamada a T’

si no {token es distinto de “*” }

· · ·

{Regla (6) T’ −→ ε}

si (token = “+”) o (token = “)”)

o (token = $) entonces

{Sentencia nula}

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 430 / 667

Page 431: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 44 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + nT ′E ′

⇒6

id = id ε + n ∗FT ′E ′

Emparejamiento de *

Arbol sintactico

F

identificadoridentificador =

S

número *+

T

ε

E’

T’

F

E

T

T’F

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 431 / 667

Page 432: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 45 / 75)

Procedimiento T’

inicio

{Regla (5) T’ −→ * F T’}

si (token = “*”)

entonces

avanzar entrada(token)

Llamada a F

Llamada a T’

si no {token es distinto de “*” }

· · ·

{Regla (6) T’ −→ ε}

si (token = “+”) o (token = “)”)

o (token = $) entonces

{Sentencia nula}

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 432 / 667

Page 433: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 46 / 75)

Llamada al procedimiento asociado al sımbolo F

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 433 / 667

Page 434: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 47 / 75)

Procedimiento F

inicio

{Regla (8) F→ ( E )}

si (token = “(”) entonces

avanzar entrada(token)

Llamada a E

si (token = “)”) entonces

avanzar entrada(token)

si no { token es distinto de “)”}

ERROR

fin si

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 434 / 667

Page 435: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 48 / 75)

Procedimiento F(continuacion)

si no { token es distinto de “(”}

{Regla (9) F→ identificador }

si (token = “id”) entonces

avanzar entrada(token)

si no { token es distinto de “id”}

{Regla (10) F→ numero }

si (token = “numero”)

entonces

avanzar entrada(token)

· · ·

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 435 / 667

Page 436: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 49 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ F T ′E ′

⇒9

id = id ε + n ∗ idT ′E ′

Emparejamiento de id

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 436 / 667

Page 437: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 50 / 75)

Fin de la llamada al procedimiento asociado al sımbolo F

Se devuelve el control al procedimiento asociado al sımbolo T’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 437 / 667

Page 438: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 51 / 75)

Procedimiento T’

inicio

{Regla (5) T’ −→ * F T’}

si (token = “*”)

entonces

avanzar entrada(token)

Llamada a F

Llamada a T’

si no {token es distinto de “*” }

· · ·

{Regla (6) T’ −→ ε}

si (token = “+”) o (token = “)”)

o (token = $) entonces

{Sentencia nula}

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 438 / 667

Page 439: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 52 / 75)

Llamada recursiva al procedimiento asociado al sımbolo T’(segunda activacion)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 439 / 667

Page 440: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 53 / 75)

Procedimiento T’

inicio

{Regla (5) T’ −→ * F T’}

si (token = “*”)

entonces

avanzar entrada(token)

Llamada a F

Llamada a T’

si no {token es distinto de “*” }

· · ·

{Regla (6) T’ −→ ε}

si (token = “+”) o (token = “)”)

o (token = $) entonces

{Sentencia nula}

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 440 / 667

Page 441: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 54 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 441 / 667

Page 442: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 55 / 75)

Fin de la segunda activacion del procedimiento asociado alsımbolo T’

Se devuelve el control a la primera activacion delprocedimiento asociado al sımbolo T’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 442 / 667

Page 443: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 56 / 75)

Procedimiento T’

inicio

{Regla (5) T’ −→ * F T’}

si (token = “*”)

entonces

avanzar entrada(token)

Llamada a F

Llamada a T’

si no {token es distinto de “*” }

· · ·

{Regla (6) T’ −→ ε}

si (token = “+”) o (token = “)”)

o (token = $) entonces

{Sentencia nula}

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 443 / 667

Page 444: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 57 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 444 / 667

Page 445: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 58 / 75)

Fin de la primera activacion del procedimiento asociado alsımbolo T’

Se devuelve el control al procedimiento asociado al sımbolo T

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 445 / 667

Page 446: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 59 / 75)

Procedimiento T

inicio

{Regla (5) T→ F T’}

si (token = identificador) o (token = numero ) o (token = “(” )

entonces

Llamada a F

Llamada a T’

si no

ERROR

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 446 / 667

Page 447: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 60 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 447 / 667

Page 448: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 61 / 75)

Fin de la ejecucion del procedimiento asociado al sımbolo T

Se devuelve el control al procedimiento asociado al sımbolo E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 448 / 667

Page 449: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 62 / 75)

Procedimiento E’

inicio

{Regla (3) E’ −→ + T E’}

si (token = “+”) entonces

avanzar entrada(token)

Llamada a T

Llamada a E’

si no {token es distinto de “+” }

· · ·

{Regla (4) E’ −→ ε}

si (token = “)”) o (token = $) entonces

{Sentencia nula}

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 449 / 667

Page 450: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 63 / 75)

LLamada recursiva al procedimiento asociado al sımbolo E’(segunda activacion)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 450 / 667

Page 451: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 64 / 75)

Procedimiento E’

inicio

{Regla (3) E’ −→ + T E’}

si (token = “+”) entonces

avanzar entrada(token)

Llamada a T

Llamada a E’

si no {token es distinto de “+” }

· · ·

{Regla (4) E’ −→ ε}

si (token = “)”) o (token = $) entonces

{Sentencia nula}

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 451 / 667

Page 452: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 65 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

⇒4

id = id ε + n ∗ id ε ε

Arbol sintactico

F

identificadoridentificador =

S

número * ε+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 452 / 667

Page 453: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 66 / 75)

Fin de la ejecucion del procedimiento asociado al sımbolo E’(segunda activacion)

Se devuelve el control al procedimiento asociado al sımbolo E’(primera activacion)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 453 / 667

Page 454: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 67 / 75)

Procedimiento E’

inicio

{Regla (3) E’ −→ + T E’}

si (token = “+”) entonces

avanzar entrada(token)

Llamada a T

Llamada a E’

si no {token es distinto de “+” }

· · ·

{Regla (4) E’ −→ ε}

si (token = “)”) o (token = $) entonces

{Sentencia nula}

si no { token es otro sımbolo }

ERROR

fin si

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 454 / 667

Page 455: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 68 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

⇒4

id = id ε + n ∗ id ε ε

Arbol sintactico

F

identificadoridentificador =

S

número * ε+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 455 / 667

Page 456: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 69 / 75)

Fin de la ejecucion del procedimiento asociado al sımbolo E’(primera activacion)

Se devuelve el control al procedimiento asociado al sımbolo E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 456 / 667

Page 457: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 70 / 75)

Procedimiento E

inicio

{Regla (2) E→ T E’}

si (token = identificador) o (token = numero ) o (token = “(” )

entonces

Llamada a T

Llamada a E’

si no { token es otro sımbolo }

ERROR

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 457 / 667

Page 458: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 71 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

⇒4

id = id ε + n ∗ id ε ε

Arbol sintactico

F

identificadoridentificador =

S

número * ε+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 458 / 667

Page 459: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 72 / 75)

Fin de la ejecucion del procedimiento asociado al sımbolo E

Se devuelve el control al procedimiento asociado al sımbolo S

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 459 / 667

Page 460: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 73 / 75)

Procedimiento S

inicio

{Regla (1) S→ identificador = E}

si (token = identificador ) entonces

avanzar entrada(token)

si (token = “=”) entonces

avanzar entrada(token)

Llamada a E

si no { token es distinto de “=”}

ERROR

fin si

· · ·

si no { token es otro sımbolo }

ERROR

fin si

fin

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 460 / 667

Page 461: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 74 / 75)

Fin de la ejecucion del procedimiento asociado al sımbolo S

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 461 / 667

Page 462: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejemplo (2.- Analisis de una sentencia 75 / 75)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

⇒4

id = id ε + n ∗ id ε ε

Fin del analisis

Arbol sintactico

F

identificadoridentificador =

S

número * ε+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 462 / 667

Page 463: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejercicios (Metodo recursivo)

1.- Gramatica de las expresiones.

id = numero * (identificador + identificador) $

2.- Gramatica de las declaraciones.

int id, id; float id $

3.- Gramatica de prototipos

int id (int id, float id) ; $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 463 / 667

Page 464: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejercicio (1.- Gramatica de expresiones aritmeticas)

Utiliza el metodo recursivo para realizar el analisisdescendente y predictivo de la sentencia:

id = numero * (identificador + identificador) $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 464 / 667

Page 465: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejercicio (2.- Gramatica de declaraciones)

Gramatica de declaraciones

P = {(1) S −→ D S(2) S −→ ε(3) D −→ T L ;(4) T −→ int(5) T −→ float(6) L −→ id L’(7) L’ −→ , id L’(8) L’ −→ ε

}

Analisis de las declaraciones

int id, id; float id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 465 / 667

Page 466: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion recursiva

Ejercicio (3.- Gramatica de prototipos)

Gramatica de prototipos

P = {(1) S −→ D S(2) S −→ ε(3) D −→ T id ( P ) ;(4) T −→ int(5) T −→ float(6) P −→ ε(7) P −→ T id L(8) L −→ , T id L(9) L −→ ε

}

Construccion del conjuntoPrimero

Construccion del conjuntoSiguiente

Construccion de la Tablapredictiva

Analisis del prototipo

int id (int id, float id) ; $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 466 / 667

Page 467: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

3 Analisis sintactico descendente predictivoDescripcionGramaticas LL(k)FasesConjunto PrimeroConjunto SiguienteConstruccion de la tabla predictivaConflictos en la tabla predictivaImplementacion recursivaImplementacion iterativa

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 467 / 667

Page 468: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Componentes

La implementacion iterativa del analisis sintacticodescendente y predictivo consta de cuatro compenentes:

1.- Entrada.2.- Tabla predictiva.3.- Pila del analisis sintactico.4.- Programa de control.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 468 / 667

Page 469: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Componentes

σ σ ... σn21 $

Pila

$

S

Programa de control

Entrada

Tabla predictiva

M

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 469 / 667

Page 470: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Componentes: representacion tabular

Pila Entrada Accion$ S σ1 σ2 · · ·σn $· · · · · · · · ·$ $ Aceptar

Nota (Accion)

Esta columna sera utilizada para indicar cada una de las accionesque realizara el Programa de control.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 470 / 667

Page 471: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Componentes: representacion tabular

Pila Entrada Accion$ S σ1 σ2 · · ·σn $· · · · · · · · ·$ $ Aceptar

Nota (Accion)

Esta columna sera utilizada para indicar cada una de las accionesque realizara el Programa de control.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 471 / 667

Page 472: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

1.- Entrada 1 / 2

Contiene los componentes lexicos o tokens que ha reconocidoel analizador lexico.

$: indica el fin de la cadena de entrada.

Pila Entrada Accion$ S σ1 σ2 · · ·σn $· · · · · · · · ·$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 472 / 667

Page 473: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

1.- Entrada 2 / 2

Pila

$

S

Programa de control

Entrada

Tabla predictiva

M

σ σ ... σn21 $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 473 / 667

Page 474: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

2.- Tabla predictiva 1 / 2

Se genera a partir de la gramatica G utilizada en el analisissintactico.

M Sımbolo de entrada

σ1 . . . σj . . . σm $

SA1

. . .Ai Regla k. . .An

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 474 / 667

Page 475: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

2.- Tabla predictiva 2 / 2

σ σ ... σn21 $

Pila

$

S

Programa de control

Entrada

Tabla predictiva

M

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 475 / 667

Page 476: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

3.- Pila del analisis sintactico 1 / 2

Puede contener sımbolos de la gramatica o el sımbolo $

Configuracion inicial:

$: situado en el fondo de la pilaSımbolo inicial de la gramatica S: situado encima de $.

Pila Entrada Accion$ S σ1 σ2 · · ·σn $· · · · · · · · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 476 / 667

Page 477: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

3.- Pila del analisis sintactico 2 / 2

σ σ ... σn21 $

Pila

$

S

Programa de control

Entrada

Tabla predictiva

M

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 477 / 667

Page 478: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

4.- Programa de control 1 / 15

Guıa el proceso de analisis.

σ σ ... σn21 $

Pila

$

S

Programa de control

Entrada

Tabla predictiva

M

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 478 / 667

Page 479: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

4.- Programa de control 2 / 15

M: tabla predictiva

X ∈ VN ∪ VT ∪ {$}: sımbolo situado en la cima de la pila.

σ ∈ VT ∪ {$}: sımbolo actual de la cadena de entrada.

Pila Entrada Accion$ S σ1 σ2 · · ·σn $· · · · · · · · ·$ · · · X σ · · ·σn $· · · · · · · · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 479 / 667

Page 480: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

4.- Programa de control 3 / 15

Programa de control

Entrada

Tabla predictiva

M

σ1 σ $... ...

Pila

$

X

...

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 480 / 667

Page 481: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

4.- Programa de control 4 / 15

1.- X ∈ VT ∪ {$}a) X = σ = $

Aceptar: la cadena de entrada es aceptada y finaliza el analisiscon exito.

b) X = σ 6= $Emparejar: se elimina el sımbolo σ de la cima de la pila y seavanza en la entrada.

c) X 6= σError: el sımbolo terminal de la cima de la pila no coincide conel sımbolo actual de la entrada.Se debe aplicar un metodo de recuperacion de errores.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 481 / 667

Page 482: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

4.- Programa de control 5 / 15

2.- X = A ∈ VN

a) M[A,σ] = A −→ X1X2 · · ·XN

Se extrae el sımbolo A de la pila y se introducen los sımbolosXi (i ∈ {1, 2, · · · ,N}) en orden inverso.

b) M[A,σ] = vacıaError: no se puede aplicar ninguna regla de produccion.Se debe aplicar un metodo de recuperacion de errores.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 482 / 667

Page 483: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

4.- Programa de control 6 / 15

1.- X ∈ VT ∪ {$}a) X = σ = $

Aceptar: la cadena de entrada es aceptada y finaliza el analisiscon exito.

Pila Entrada Accion$ S σ1 σ2 · · ·σn $· · · · · · · · ·$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 483 / 667

Page 484: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

4.- Programa de control 7 / 15

Programa de control

Entrada

$

Pila

Tabla predictiva

M

σ σ ... σn21 $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 484 / 667

Page 485: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

4.- Programa de control 8 / 15

1.- X ∈ VT ∪ {$}b) X = σ 6= $

Emparejar: se elimina el sımbolo σ de la cima de la pila y seavanza en la entrada.

Pila Entrada Accion$ · · · X’ σ σ σ′ · · ·σn $ Emparejar$ · · · X’ σ′ · · ·σn $· · · · · · · · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 485 / 667

Page 486: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

4.- Programa de control 9 / 15

Pila

$Programa de control

Entrada

σ ... σn $

...

... σ ’ σ

X

M

Tabla predictiva

Pila

$Programa de control

Entrada

σ ... σn $

...

... ’

X

M

σ

Tabla predictiva

(a) (b)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 486 / 667

Page 487: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

4.- Programa de control 10 / 15

1.- X ∈ VT ∪ {$}c) X 6= σ

Error: no coinciden los sımbolos actuales de la entrada y la pila.Se debe aplicar un metodo de recuperacion de errores.

Pila Entrada Accion$ · · · X σ · · ·σn $ Error· · · · · · · · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 487 / 667

Page 488: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

4.- Programa de control 11 / 15

Pila

$Programa de control

Entrada

σ ...

...

M

Tabla predictiva

...σ1 $ X

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 488 / 667

Page 489: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

4.- Programa de control 12 / 15

2.- X = A ∈ VN

a) M[A,σ] = regla kdonde la regla k es A −→ X1X2 · · ·XN

Se extrae el sımbolo A de la pila y se introducen los sımbolosXi (i ∈ {1, 2, · · · ,N}) en orden inverso.

Pila Entrada Accion$ · · · A σ · · ·σn $ k) A −→ X1X2 · · ·XN

$ · · · XN · · ·X2 X1 σ · · ·σn $ · · ·· · · · · · · · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 489 / 667

Page 490: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

4.- Programa de control 13 / 15

Pila

$Programa de control

Entrada

...

...

M

Tabla predictiva

...σ1 σ

A

$

Pila

$

...

X

X

X

...

N

2

1

Programa de control

Entrada

...

M

Tabla predictiva

...σ1 σ $

(a) (b)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 490 / 667

Page 491: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

4.- Programa de control 14 / 15

2.- X = A ∈ VN

b) M[A,σ] = vacıaError: no se puede aplicar ninguna regla de produccion.Se debe aplicar un metodo de recuperacion de errores.

Pila Entrada Accion$ · · · A σ · · ·σn $ Error· · · · · · · · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 491 / 667

Page 492: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

4.- Programa de control 15 / 15

Vacía

Pila

$Programa de control

Entrada

...

...

M

...σ1 σ

A

$

A

σ Tabla predictiva

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 492 / 667

Page 493: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 1 / 40)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Analisis de la sentencia:

id = id + n * id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 493 / 667

Page 494: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 2 / 40)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 494 / 667

Page 495: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 3 / 40)

Pila Entrada Accion$ S id = id + n * id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 495 / 667

Page 496: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 4 / 40)

Analisis de id = id + n * id $

S

Arbol sintactico

S

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 496 / 667

Page 497: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 5 / 40)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 497 / 667

Page 498: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 6 / 40)

Pila Entrada Accion$ S id = id + n * id $ 1) S → identificador = E$ E = id id = id + n * id $ Emparejar$ E = = id + n * id $ Emparejar$ E id + n * id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 498 / 667

Page 499: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 6 / 40)

Pila Entrada Accion$ S id = id + n * id $ 1) S → identificador = E$ E = id id = id + n * id $ Emparejar$ E = = id + n * id $ Emparejar$ E id + n * id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 499 / 667

Page 500: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 6 / 40)

Pila Entrada Accion$ S id = id + n * id $ 1) S → identificador = E$ E = id id = id + n * id $ Emparejar$ E = = id + n * id $ Emparejar$ E id + n * id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 500 / 667

Page 501: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 7 / 40)

Analisis de id = id + n * id $

S ⇒1

id = E

Emparejamientos: id, =

Arbol sintactico

identificador =

S

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 501 / 667

Page 502: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 8 / 40)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 502 / 667

Page 503: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 9 / 40)

Pila Entrada Accion$ S id = id + n * id $ 1) S → identificador = E$ E = id id = id + n * id $ Emparejar$ E = = id + n * id $ Emparejar$ E id + n * id $ 2) E → T E’$ E’ T id + n * id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 503 / 667

Page 504: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 10 / 40)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

Arbol sintactico

identificador =

S

T

E

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 504 / 667

Page 505: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 11 / 40)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 505 / 667

Page 506: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 12 / 40)

Pila Entrada Accion$ S id = id + n * id $ 1) S → identificador = E$ E = id id = id + n * id $ Emparejar$ E = = id + n * id $ Emparejar$ E id + n * id $ 2) E → T E’$ E’ T id + n * id $ 5) T → F T’$ E’ T’ F id + n * id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 506 / 667

Page 507: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 13 / 40)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = T E ′

⇒5

id = FT ′E ′

Arbol sintactico

F

identificador =

S

T E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 507 / 667

Page 508: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 14 / 40)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 508 / 667

Page 509: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 15 / 40)

Pila Entrada Accion$ S id = id + n * id $ 1) S → identificador = E$ E = id id = id + n * id $ Emparejar$ E = = id + n * id $ Emparejar$ E id + n * id $ 2) E → T E’$ E’ T id + n * id $ 5) T → F T’$ E’ T’ F id + n * id $ 9) F → identificador$ E’ T’ id id + n * id $ Emparejar$ E’ T’ + n * id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 509 / 667

Page 510: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 15 / 40)

Pila Entrada Accion$ S id = id + n * id $ 1) S → identificador = E$ E = id id = id + n * id $ Emparejar$ E = = id + n * id $ Emparejar$ E id + n * id $ 2) E → T E’$ E’ T id + n * id $ 5) T → F T’$ E’ T’ F id + n * id $ 9) F → identificador$ E’ T’ id id + n * id $ Emparejar$ E’ T’ + n * id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 510 / 667

Page 511: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 16 / 40)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = F T ′E ′

⇒9

id = idT ′E ′

Emparejamiento de id

Arbol sintactico

F

identificadoridentificador =

S

T E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 511 / 667

Page 512: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 17 / 40)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 512 / 667

Page 513: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 18 / 40)

Pila Entrada Accion$ S id = id + n * id $ 1) S → identificador = E$ E = id id = id + n * id $ Emparejar$ E = = id + n * id $ Emparejar$ E id + n * id $ 2) E → T E’$ E’ T id + n * id $ 5) T → F T’$ E’ T’ F id + n * id $ 9) F → identificador$ E’ T’ id id + n * id $ Emparejar$ E’ T’ + n * id $ 7) T’ → ε$ E’ + n * id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 513 / 667

Page 514: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 19 / 40)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = id T ′E ′

⇒7

id = id ε E ′

Arbol sintactico

F

identificadoridentificador =

S

T

ε

E’

T’

E

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 514 / 667

Page 515: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 20 / 40)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 515 / 667

Page 516: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 21 / 40)

Pila Entrada Accion$ S id = id + n * id $ 1) S → identificador = E$ E = id id = id + n * id $ Emparejar$ E = = id + n * id $ Emparejar$ E id + n * id $ 2) E → T E’$ E’ T id + n * id $ 5) T → F T’$ E’ T’ F id + n * id $ 9) F → identificador$ E’ T’ id id + n * id $ Emparejar$ E’ T’ + n * id $ 7) T’ → ε$ E’ + n * id $ 3) E’ → + T E’$ E’ T + + n * id $ Emparejar$ E’ T n * id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 516 / 667

Page 517: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 21 / 40)

Pila Entrada Accion$ S id = id + n * id $ 1) S → identificador = E$ E = id id = id + n * id $ Emparejar$ E = = id + n * id $ Emparejar$ E id + n * id $ 2) E → T E’$ E’ T id + n * id $ 5) T → F T’$ E’ T’ F id + n * id $ 9) F → identificador$ E’ T’ id id + n * id $ Emparejar$ E’ T’ + n * id $ 7) T’ → ε$ E’ + n * id $ 3) E’ → + T E’$ E’ T + + n * id $ Emparejar$ E’ T n * id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 517 / 667

Page 518: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 22 / 40)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = id T ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε +TE ′

Emparejamiento de +

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

E

T E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 518 / 667

Page 519: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 23 / 40)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 519 / 667

Page 520: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 24 / 40)

Pila Entrada Accion· · · · · · · · ·$ E’ T + + n * id $ Emparejar$ E’ T n * id $ 5) T → F T’$ E’ T’ F n * id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 520 / 667

Page 521: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 25 / 40)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + T E ′

⇒5

id = id ε + FT ′E ′

Arbol sintactico

F

identificadoridentificador =

S

+

T

ε

E’

T’

F

E

T

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 521 / 667

Page 522: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 26 / 40)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 522 / 667

Page 523: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 27 / 40)

Pila Entrada Accion· · · · · · · · ·$ E’ T + + n * id $ Emparejar$ E’ T n * id $ 5) T → F T’$ E’ T’ F n * id $ 10) F → numero$ E’ T’ n n * id $ Emparejar$ E’ T’ * id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 523 / 667

Page 524: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 27 / 40)

Pila Entrada Accion· · · · · · · · ·$ E’ T + + n * id $ Emparejar$ E’ T n * id $ 5) T → F T’$ E’ T’ F n * id $ 10) F → numero$ E’ T’ n n * id $ Emparejar$ E’ T’ * id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 524 / 667

Page 525: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 28 / 40)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + F T ′E ′

⇒10

id = id ε + nT ′E ′

Emparejamiento de n

Arbol sintactico

F

identificadoridentificador =

S

número+

T

ε

E’

T’

F

E

T

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 525 / 667

Page 526: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 29 / 40)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 526 / 667

Page 527: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 30 / 40)

Pila Entrada Accion· · · · · · · · ·$ E’ T + + n * id $ Emparejar$ E’ T n * id $ 5) T → F T’$ E’ T’ F n * id $ 10) F → numero$ E’ T’ n n * id $ Emparejar$ E’ T’ * id $ 6) T’ → * F T’$ E’ T’ F * * id $ Emparejar$ E’ T’ F id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 527 / 667

Page 528: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 30 / 40)

Pila Entrada Accion· · · · · · · · ·$ E’ T + + n * id $ Emparejar$ E’ T n * id $ 5) T → F T’$ E’ T’ F n * id $ 10) F → numero$ E’ T’ n n * id $ Emparejar$ E’ T’ * id $ 6) T’ → * F T’$ E’ T’ F * * id $ Emparejar$ E’ T’ F id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 528 / 667

Page 529: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 31 / 40)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + nT ′E ′

⇒6

id = id ε + n ∗FT ′E ′

Emparejamiento de *

Arbol sintactico

F

identificadoridentificador =

S

número *+

T

ε

E’

T’

F

E

T

T’F

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 529 / 667

Page 530: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 32 / 40)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 530 / 667

Page 531: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 33 / 40)

Pila Entrada Accion· · · · · · · · ·$ E’ T + + n * id $ Emparejar$ E’ T n * id $ 5) T → F T’$ E’ T’ F n * id $ 10) F → numero$ E’ T’ n n * id $ Emparejar$ E’ T’ * id $ 6) T’ → * F T’$ E’ T’ F * * id $ Emparejar$ E’ T’ F id $ 9) F → identificador$ E’ T’ id id $ Emparejar$ E’ T’ $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 531 / 667

Page 532: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 33 / 40)

Pila Entrada Accion· · · · · · · · ·$ E’ T + + n * id $ Emparejar$ E’ T n * id $ 5) T → F T’$ E’ T’ F n * id $ 10) F → numero$ E’ T’ n n * id $ Emparejar$ E’ T’ * id $ 6) T’ → * F T’$ E’ T’ F * * id $ Emparejar$ E’ T’ F id $ 9) F → identificador$ E’ T’ id id $ Emparejar$ E’ T’ $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 532 / 667

Page 533: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 34 / 40)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ F T ′E ′

⇒9

id = id ε + n ∗ idT ′E ′

Emparejamiento de id

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 533 / 667

Page 534: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 35 / 40)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 534 / 667

Page 535: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 36 / 40)

Pila Entrada Accion· · · · · · · · ·$ E’ T + + n * id $ Emparejar$ E’ T n * id $ 5) T → F T’$ E’ T’ F n * id $ 10) F → numero$ E’ T’ n n * id $ Emparejar$ E’ T’ * id $ 6) T’ → * F T’$ E’ T’ F * * id $ Emparejar$ E’ T’ F id $ 9) F → identificador$ E’ T’ id id $ Emparejar$ E’ T’ $ 7) T’ → ε$ E’ $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 535 / 667

Page 536: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 37 / 40)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

Arbol sintactico

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 536 / 667

Page 537: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 38 / 40)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 537 / 667

Page 538: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 39 / 40)

Pila Entrada Accion· · · · · · · · ·$ E’ T + + n * id $ Emparejar$ E’ T n * id $ 5) T → F T’$ E’ T’ F n * id $ 10) F → numero$ E’ T’ n n * id $ Emparejar$ E’ T’ * id $ 6) T’ → * F T’$ E’ T’ F * * id $ Emparejar$ E’ T’ F id $ 9) F → identificador$ E’ T’ id id $ Emparejar$ E’ T’ $ 7) T’ → ε$ E’ $ 4) E’ → ε$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 538 / 667

Page 539: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 39 / 40)

Pila Entrada Accion· · · · · · · · ·$ E’ T + + n * id $ Emparejar$ E’ T n * id $ 5) T → F T’$ E’ T’ F n * id $ 10) F → numero$ E’ T’ n n * id $ Emparejar$ E’ T’ * id $ 6) T’ → * F T’$ E’ T’ F * * id $ Emparejar$ E’ T’ F id $ 9) F → identificador$ E’ T’ id id $ Emparejar$ E’ T’ $ 7) T’ → ε$ E’ $ 4) E’ → ε$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 539 / 667

Page 540: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejemplo (Gramatica de expresiones aritmeticas 40 / 40)

Analisis de id = id + n * id $

S ⇒1

id = E

⇒2

id = TE ′

⇒5

id = FT ′E ′

⇒9

id = idT ′E ′

⇒7

id = id ε E ′

⇒3

id = id ε + TE ′

⇒5

id = id ε + FT ′E ′

⇒10

id = id ε + n T ′E ′

⇒6

id = id ε + n ∗ FT ′E ′

⇒9

id = id ε + n ∗ id T ′E ′

⇒7

id = id ε + n ∗ id ε E ′

⇒4

id = id ε + n ∗ id ε ε

Arbol sintactico

F

identificadoridentificador =

S

número * ε+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 540 / 667

Page 541: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejercicios (Metodo iterativo)

1.- Gramatica de las expresiones.

id = numero * (identificador + identificador) $

2.- Gramatica de las declaraciones.

int id, id; float id $

3.- Gramatica de prototipos

int id (int id, float id) ; $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 541 / 667

Page 542: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejercicio (1.- Gramatica de expresiones aritmeticas)

Utiliza el metodo iterativo para realizar el analisis descendentey predictivo de la sentencia:

id = numero * (identificador + identificador) $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 542 / 667

Page 543: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejercicio (2.- Gramatica de declaraciones)

Gramatica de declaraciones

P = {(1) S −→ D S(2) S −→ ε(3) D −→ T L ;(4) T −→ int(5) T −→ float(6) L −→ id L’(7) L’ −→ , id L’(8) L’ −→ ε

}

Analisis de las declaraciones

int id, id; float id $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 543 / 667

Page 544: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Analisis sintactico descendente predictivoImplementacion iterativa

Ejercicio (3.- Gramatica de prototipos)

Gramatica de prototipos

P = {(1) S −→ D S(2) S −→ ε(3) D −→ T id ( P ) ;(4) T −→ int(5) T −→ float(6) P −→ ε(7) P −→ T id L(8) L −→ , T id L(9) L −→ ε

}

Construccion del conjuntoPrimero

Construccion del conjuntoSiguiente

Construccion de la Tablapredictiva

Analisis del prototipo

int id (int id, float id) ; $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 544 / 667

Page 545: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido del tema

1 Introduccion

2 Descenso recursivo con retroceso o backtracking

3 Analisis sintactico descendente predictivo

4 Deteccion y recuperacion de errores

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 545 / 667

Page 546: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

4 Deteccion y recuperacion de erroresIntroduccionDeteccion de erroresRecuperacion de erroresModo de panicoMetodo de nivel de frase

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 546 / 667

Page 547: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresIntroduccion

Objetivos

Fase de deteccionDebe detectar el mayor numero de errores posibles.

Fase de recuperacionDebe proponer una solucion aceptable que permita que elanalisis continue para detectar mas errores.Es responsabilidad del programador la eleccion de la solucionmas adecuada.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 547 / 667

Page 548: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresIntroduccion

Ejemplo (Deteccion y recuperacion)

Considerese la siguiente sentencia erronea:

id = = id n * id

Se podrıa proponer la siguiente solucion

id = id + n * id

pero las siguientes soluciones tambien son correctas

id = id * n * id

id = n * id

id = id * id

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 548 / 667

Page 549: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresIntroduccion

Nota (Responsabilidad del programador)

Al detectar un error, el analizador solamente propone unasolucion para continuar el analisis.

El programador debera comprobar si la solucion propuesta eso no la mas adecuada.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 549 / 667

Page 550: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

4 Deteccion y recuperacion de erroresIntroduccionDeteccion de erroresRecuperacion de erroresModo de panicoMetodo de nivel de frase

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 550 / 667

Page 551: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresDeteccion de errores

Deteccion de errores 1 / 7

Tipos de errores detectados por el analisis sintacticodescendente predictivo:

1.- El sımbolo situado en la cima de la pila es un sımbolo terminalσ o $ que no coincide con el sımbolo de la entrada.

2.- La celda M[A,σ] esta vacıa, donde A es el sımbolo situado enla cima de la pila y σ es el sımbolo actual de la entrada.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 551 / 667

Page 552: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresDeteccion de errores

Deteccion de errores 2 / 7

1.- El sımbolo situado en la cima de la pila es un sımboloterminal σ o $ que no coincide con el sımbolo de la entrada.

a)

Pila Entrada Accion$ · · · σ σ′ · · ·σn $ Error· · · · · · · · ·

b)

Pila Entrada Accion$ σ′ · · ·σn $ Error· · · · · · · · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 552 / 667

Page 553: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresDeteccion de errores

Deteccion de errores 3 / 7

Pila

$Programa de control

Entrada

σ ...

...

M

Tabla predictiva

...σ1 $ X

Programa de control

Entrada

σ ...’

M

Tabla predictiva

...σ1 $

$

Pila

(a) (b)

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 553 / 667

Page 554: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresDeteccion de errores

Deteccion de errores 4 / 7

2.- La celda M[A,σ] esta vacıa, donde A es el sımbolo situado enla cima de la pila y σ es el sımbolo actual de la entrada.

Pila Entrada Accion$ · · · A σ · · ·σn $ Error· · · · · · · · ·

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 554 / 667

Page 555: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresDeteccion de errores

Deteccion de errores 5 / 7

Vacía

Pila

$Programa de control

Entrada

...

...

M

...σ1 σ

A

$

A

σ Tabla predictiva

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 555 / 667

Page 556: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresDeteccion de errores

Nota (Deteccion de errores 6 / 7)

Se ha realizado la descripcion de la deteccion de errores quese produce si se utiliza el metodo predictivo e iterativo.

La descripcion para el metodo predictivo y recursivo serıasimilar.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 556 / 667

Page 557: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresDeteccion de errores

Nota (Deteccion de errores 7 / 7)

El metodo de descenso recursivo con retroceso o bactrackingno permite detectar la ubicacion del error, porque siempretermina en la funcion asociada al sımbolo inicial de lagramatica.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 557 / 667

Page 558: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

4 Deteccion y recuperacion de erroresIntroduccionDeteccion de erroresRecuperacion de erroresModo de panicoMetodo de nivel de frase

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 558 / 667

Page 559: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresRecuperacion de errores

Metodos de recuperacion de errores 1 / 5

1.- Modo de panico.

2.- Metodo de nivel de frase.

3.- Regla de produccion de control de errores.

4.- Correccion global.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 559 / 667

Page 560: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresRecuperacion de errores

Metodos de recuperacion de errores 2 / 5

1.- Modo de panico

Es el metodo mas facil de aplicar.Busca sımbolos de sincronizacion para continuar el analisis.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 560 / 667

Page 561: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresRecuperacion de errores

Metodos de recuperacion de errores 3 / 5

2.- Metodo de nivel de frase

Realiza transformaciones en la cadena de entrada o en la pilapara continuar el analisis.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 561 / 667

Page 562: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresRecuperacion de errores

Metodos de recuperacion de errores 4 / 5

3.- Regla de produccion de control de errores

Se amplia la gramatica con nuevas reglas de produccion quepermiten generar los errores mas frecuentes.Si se utilizan dichas reglas de produccion entonces elanalizador activa un metodo de recuperacion de errores.

Nota

Este metodo sera descrito en las clases de practicas.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 562 / 667

Page 563: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresRecuperacion de errores

Metodos de recuperacion de errores 4 / 5

3.- Regla de produccion de control de errores

Se amplia la gramatica con nuevas reglas de produccion quepermiten generar los errores mas frecuentes.Si se utilizan dichas reglas de produccion entonces elanalizador activa un metodo de recuperacion de errores.

Nota

Este metodo sera descrito en las clases de practicas.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 563 / 667

Page 564: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresRecuperacion de errores

Metodos de recuperacion de errores 5 / 5

4.- Correccion global

Metodo teorico basado en los anteriores, pero, especialmente,en el metodo de nivel de frase.Trata de obtener un programa correcto (sin errores) realizandoel menor numero de transformaciones de la cadena de entrada.Las transformaciones no estan basadas solamente en el entornolocal, sino en el programa completo.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 564 / 667

Page 565: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

4 Deteccion y recuperacion de erroresIntroduccionDeteccion de erroresRecuperacion de erroresModo de panicoMetodo de nivel de frase

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 565 / 667

Page 566: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Estrategia del metodo de modo de panico

Al detectar un error,

comienza a eliminar sımbolos de la cadena de entrada

hasta que encuentre un componente lexico o token

que pertenezca a un conjunto de sincronizacion

que permita continuar el analisis.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 566 / 667

Page 567: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Metodos de construccion del conjunto de sincronizacion

1.- Metodo basado en el conjunto Siguiente.

2.- Metodo que incorpora sımbolos que indican el comienzo deuna sentencia de mayor jerarquıa.

3.- Metodo basado en el conjunto Primero.

4.- Metodo basado en las reglas de produccion ε.

5.- Caso especial para los sımbolos terminales.

6.- Caso especial para el sımbolo $.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 567 / 667

Page 568: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Metodos de construccion del conjunto de sincronizacion

1.- Metodo basado en el conjunto Siguiente.

Si M[A,σ] = vacıa entoncesa) se eliminan sımbolos de la entrada hasta que se encuentra un

sımbolo σ′ ∈ Siguiente(A)b) y se extrae el sımbolo A de la pila y el analisis continua.

Pila Entrada Accion$ · · · X’ A σ · · ·σ′ · · ·σn $ Error: extraer σ de la entrada· · · · · · · · ·$ · · · X’ A σ′ · · ·σn $ Sincronizacion: extraer A de la pila$ · · · X’ σ′ · · ·σn $ Continua el analisis

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 568 / 667

Page 569: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (1.- Metodo basado en el conjunto Siguiente 1 / 2)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Primero Siguiente

S id $E “(”, id, n $, “)”E’ +, ε $ , “)”T “(”, id, n +, $, “)”T’ *, ε +, $, “)”F “(”, id, n *, +, $, “)”

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 569 / 667

Page 570: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (1.- Metodo basado en el conjunto Siguiente 2 / 2)

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1 Sincr.E 2 2 Sincr. 2 Sincr.E’ 3 4 4T 5 Sincr. 5 Sincr. 5 Sincr.T’ 7 6 7 7F 9 Sincr. Sincr. 8 Sincr. 10 Sincr.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 570 / 667

Page 571: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Metodos de construccion del conjunto de sincronizacion

2.- Metodo que incorpora sımbolos que indican el comienzo deuna sentencia de mayor jerarquıa.

Si M[ A,σ] = vacıa entoncesa) se eliminan sımbolos de la entrada hasta que se encuentra un

sımbolo σ′ ∈ Siguiente(A) o que indica el comienzo de unasentencia de mayor jerarquıa.

b) y se extrae el sımbolo A de la pila y el analisis continua.

Pila Entrada Accion$ · · · X’ A σ · · ·σ′ · · ·σn $ Error: extraer σ de la entrada· · · · · · · · ·$ · · · X’ A σ′ · · ·σn $ Sincronizacion: extraer A de la pila$ · · · X’ σ′ · · ·σn $ Continua el analisis

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 571 / 667

Page 572: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (2.- Sımbolos que indican el comienzo de unasentencia de mayor jerarquıa)

Considerese el siguiente codigo

dato = * 3 ;. . .if . . .

en el que falta el primer factor del producto.

El analisis podrıa continuar a partir de la palabra clave if queindica el comienzo de una sentencia condicional.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 572 / 667

Page 573: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Metodos de construccion del conjunto de sincronizacion

3.- Metodo basado en el conjunto Primero.

Si M[A,σ] = vacıa entoncesa) se eliminan sımbolos de la entrada hasta que se encuentra un

sımbolo σ′ ∈ Primero(A)b) y el analisis continua sin extraer el sımbolo A de la pila.

Pila Entrada Accion$ · · · X’ A σ · · ·σ′ · · ·σn $ Error: extraer σ de la entrada· · · · · · · · ·$ · · · X’ A σ′ · · ·σn $ Sincronizacion: continua el analisis

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 573 / 667

Page 574: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (1.- Metodo basado en el conjunto Primero)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Primero Siguiente

S id $E “(”, id, n $, “)”E’ +, ε $ , “)”T “(”, id, n +, $, “)”T’ *, ε +, $, “)”F “(”, id, n *, +, $, “)”

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 574 / 667

Page 575: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Metodos de construccion del conjunto de sincronizacion

4.- Metodo basado en las reglas de produccion ε.

a) Si ε ∈ Primero(A) entoncesse completan todas las celdas vacıas de A en la tablapredictiva con la regla A −→ ε,aunque dicha regla no pertenezca al conjunto inicial deproducciones de la gramatica.

b) Si M[A,σ] = vacıa entoncesse extrae el sımbolo A de la pila y el analisis continua.

Pila Entrada Accion$ · · · X’ A σ · · ·σn $ Extraer A de la pila$ · · · X’ σ · · ·σn $ Continua el analisis

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 575 / 667

Page 576: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Nota (4.- Metodo basado en las reglas de produccion ε)

Se reduce el numero de errores que se deben controlar.

Este metodo posterga o retrasa la deteccion del error paraque sea tratado por otro sımbolo al que se le haya asignado elconjunto de sincronizacion.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 576 / 667

Page 577: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (4.- Metodo basado en las reglas de produccion ε 1 / 2)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Primero Siguiente

S id $E “(”, id, n $, “)”E’ +, ε $ , “)”T “(”, id, n +, $, “)”T’ *,ε +, $, “)”F “(”, id, n *, +, $, “)”

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 577 / 667

Page 578: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (4.- Metodo basado en las reglas de produccion ε 2 / 2)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 4* 4* 3 4* 4* 4 4* 4T 5 5 5T’ 7* 7* 7 6 7* 7 7* 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 578 / 667

Page 579: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Metodos de construccion del conjunto de sincronizacion

5.- Caso especial para los sımbolos terminales.

Si σ esta situado en la cima de la pila, σ′ es el sımbolo actualde la entrada y σ 6= σ′ entonces

a) Se indica que falta el sımbolo σ en la entradab) Se elimina el sımbolo σ de la pila y el analisis continua.

Pila Entrada Accion$ · · · X’ σ σ′ · · ·σn $ Falta σ en la entrada.

Extraer σ de la pila$ · · · X’ σ′ · · ·σn $ Continua el analisis

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 579 / 667

Page 580: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Metodos de construccion del conjunto de sincronizacion

5.- Caso especial para los sımbolos terminales.

Si σ esta situado en la cima de la pila, σ′ es el sımbolo actualde la entrada y σ 6= σ′ entonces

a) Se indica que falta el sımbolo σ en la entradab) Se elimina el sımbolo σ′ en la entrada y el analisis continua.

Nota

El conjunto de sincronizacion de un sımbolo terminal σ estacompuesto por todos los demas sımbolos terminales y elsımbolo $:

sincronizacion(σ) = (VT ∪ {$})− {σ}

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 580 / 667

Page 581: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Metodos de construccion del conjunto de sincronizacion

6.- Caso especial para el sımbolo $.

Si $ esta situado en la cima de la pila, σ es el sımbolo actualde la entrada y $ 6= σ entonces

a) Se indica que σ es un sımbolo inesperado,b) se elimina de la entrada y el analisis continua.

Pila Entrada Accion$ σ σ′ · · ·σn $ Sımbolo inesperado

Extraer σ de la entrada$ σ′ · · ·σn $ Continua el analisis

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 581 / 667

Page 582: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 1 / 5)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Primero Siguiente

S id $E “(”, id, n $, “)”E’ +, ε $ , “)”T “(”, id, n +, $, “)”T’ *, ε +, $, “)”F “(”, id, n *, +, $, “)”

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 582 / 667

Page 583: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 2 / 5)

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1 Sincr.E 2 2 Sincr. 2 Sincr.E’ 4* 4* 3 4* 4* 4 4* 4T 5 Sincr. 5 Sincr. 5 Sincr.T’ 7* 7* 7 6 7* 7 7* 7F 9 Sincr. Sincr. 8 Sincr. 10 Sincr.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 583 / 667

Page 584: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Nota (Aplicacion del modo de panico 3 / 5)

Reglas de produccion ε

Se han usado para completar las celdas vacıas de los sımbolosque contienen a ε en su conjunto Primero.

Sincronizacion (Sincr.)

Se ha usado el conjunto Siguiente como conjunto desincronizacion.Al alcanzar un sımbolo de sincronizacion en la entrada, seeliminara el sımbolo no terminal de la pila y el analisiscontinuara.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 584 / 667

Page 585: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 4 / 5)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ Error: extraer = de la entrada$ E id n * id $ Sincronizacion

2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T’ → ε$ E’ n * id $ 3*) E’ → ε$ n * id $ Sımbolo inesperado

Extraer n de la entrada

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 585 / 667

Page 586: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 4 / 5)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ Error: extraer = de la entrada$ E id n * id $ Sincronizacion

2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T’ → ε$ E’ n * id $ 3*) E’ → ε$ n * id $ Sımbolo inesperado

Extraer n de la entrada

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 586 / 667

Page 587: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 4 / 5)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ Error: extraer = de la entrada$ E id n * id $ Sincronizacion

2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T’ → ε$ E’ n * id $ 3*) E’ → ε$ n * id $ Sımbolo inesperado

Extraer n de la entrada

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 587 / 667

Page 588: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 4 / 5)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ Error: extraer = de la entrada$ E id n * id $ Sincronizacion

2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T’ → ε$ E’ n * id $ 3*) E’ → ε$ n * id $ Sımbolo inesperado

Extraer n de la entrada

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 588 / 667

Page 589: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 4 / 5)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ Error: extraer = de la entrada$ E id n * id $ Sincronizacion

2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T’ → ε$ E’ n * id $ 3*) E’ → ε$ n * id $ Sımbolo inesperado

Extraer n de la entrada

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 589 / 667

Page 590: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 4 / 5)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ Error: extraer = de la entrada$ E id n * id $ Sincronizacion

2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T’ → ε$ E’ n * id $ 3*) E’ → ε$ n * id $ Sımbolo inesperado

Extraer n de la entrada

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 590 / 667

Page 591: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 4 / 5)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ Error: extraer = de la entrada$ E id n * id $ Sincronizacion

2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T’ → ε$ E’ n * id $ 3*) E’ → ε$ n * id $ Sımbolo inesperado

Extraer n de la entrada

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 591 / 667

Page 592: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 4 / 5)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ Error: extraer = de la entrada$ E id n * id $ Sincronizacion

2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T’ → ε$ E’ n * id $ 3*) E’ → ε$ n * id $ Sımbolo inesperado

Extraer n de la entrada

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 592 / 667

Page 593: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 4 / 5)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ Error: extraer = de la entrada$ E id n * id $ Sincronizacion

2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T’ → ε$ E’ n * id $ 3*) E’ → ε$ n * id $ Sımbolo inesperado

Extraer n de la entrada

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 593 / 667

Page 594: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 4 / 5)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ Error: extraer = de la entrada$ E id n * id $ Sincronizacion

2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T’ → ε$ E’ n * id $ 3*) E’ → ε$ n * id $ Sımbolo inesperado

Extraer n de la entrada

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 594 / 667

Page 595: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 4 / 5)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ Error: extraer = de la entrada$ E id n * id $ Sincronizacion

2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T’ → ε$ E’ n * id $ 3*) E’ → ε$ n * id $ Sımbolo inesperado

Extraer n de la entrada

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 595 / 667

Page 596: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 5 / 5)

Pila Entrada Accion· · · · · · · · ·$ n * id $ Sımbolo inesperado

Extraer n de la entrada$ * id $ Sımbolo inesperado

Extraer * de la entrada$ id $ Sımbolo inesperado

Extraer id de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 596 / 667

Page 597: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 5 / 5)

Pila Entrada Accion· · · · · · · · ·$ n * id $ Sımbolo inesperado

Extraer n de la entrada$ * id $ Sımbolo inesperado

Extraer * de la entrada$ id $ Sımbolo inesperado

Extraer id de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 597 / 667

Page 598: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 5 / 5)

Pila Entrada Accion· · · · · · · · ·$ n * id $ Sımbolo inesperado

Extraer n de la entrada$ * id $ Sımbolo inesperado

Extraer * de la entrada$ id $ Sımbolo inesperado

Extraer id de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 598 / 667

Page 599: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (Aplicacion del modo de panico 5 / 5)

Pila Entrada Accion· · · · · · · · ·$ n * id $ Sımbolo inesperado

Extraer n de la entrada$ * id $ Sımbolo inesperado

Extraer * de la entrada$ id $ Sımbolo inesperado

Extraer id de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 599 / 667

Page 600: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ventajas e inconveniente

Ventajas:

Es facil de aplicar.Evita caer en bucles infinitos, ya que solamente eliminasımbolos de la entrada o la pila.

Inconveniente:

No es capaz de detectar todos los errores posibles.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 600 / 667

Page 601: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejemplo (No deteccion de todos los errores)

Al analizar la sentencia erronea:

id = = id n * id

el metodo de modo de panico ha propuesto la solucion

id = id

pero las siguientes soluciones parecen mas adecuadas

id = id + n * id

id = id * n * id

id = n * id

id = id * id

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 601 / 667

Page 602: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejercicios (Aplicacion del modo de panico)

1.- Gramatica de las expresiones aritmeticas.

2.- Gramatica de las declaraciones.

3.- Gramatica de los prototipos.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 602 / 667

Page 603: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejercicio (1.- Gramatica de las expresiones aritmeticas)

Utiliza el modo de panico para analizar la siguiente sentenciaerronea

id = n (id id

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 603 / 667

Page 604: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejercicio (2.- Gramatica de las declaraciones 1 / 3)

Utiliza el modo de panico para analizar la siguiente sentenciaerronea

int int id id , id ;

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 604 / 667

Page 605: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejercicio (2.- Gramatica de las declaraciones 2 / 3)

P = {

(1) S −→ D S(2) S −→ ε(3) D −→ T L ;(4) T −→ int(5) T −→ float(6) L −→ id L’(7) L’ −→ , id L’(8) L’ −→ ε}

Primero Siguiente

S ε, int, float $D int, float int, float, $T int, float idL id ;L′ “,” , ε ;

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 605 / 667

Page 606: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejercicio (2.- Gramatica de las declaraciones 3 / 3)

P = {

(1) S −→ D S(2) S −→ ε(3) D −→ T L ;(4) T −→ int(5) T −→ float(6) L −→ id L’(7) L’ −→ , id L’(8) L’ −→ ε}

Tabla predictivaM Sımbolo de entrada

; int float id , $

S 1 1 2D 3 3T 4 5L 6L’ 8 7

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 606 / 667

Page 607: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresModo de panico

Ejercicio (3.- Gramatica de los prototipos)

P = {(1) S −→ D S(2) S −→ ε(3) D −→ T id ( P ) ;(4) T −→ int(5) T −→ float(6) P −→ ε(6) P −→ T id L(7) L −→ , T id L(8) L −→ ε

}

1.- Construccion del conjuntoPrimero

2.- Construccion del conjuntoSiguiente

3.- Construccion de la Tablapredictiva

4.- Analisis del prototipoerroneo usando el modo depanico

int int id , , float id) ; $

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 607 / 667

Page 608: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Contenido de la seccion

4 Deteccion y recuperacion de erroresIntroduccionDeteccion de erroresRecuperacion de erroresModo de panicoMetodo de nivel de frase

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 608 / 667

Page 609: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Descripcion 1 / 7

1.- La tabla predictiva se amplıa con una parte inferior.

2.- Se completan con acciones las celdas situadas en la diagonalprincipal de la parte inferior.

3.- Se completan las celdas vacıas con funciones de error

Todas las celdas vacıas de la parte superior.Algunas de las celdas vacıas de la parte inferior.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 609 / 667

Page 610: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Descripcion 2 / 7

1.- La tabla predictiva se amplıa con una parte inferior.

Primer elemento de cada fila: sımbolo terminal o $Representa la situacion en la que el sımbolo actual de laentrada coincide con el sımbolo situado en la cima de la pila

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 610 / 667

Page 611: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Descripcion 3 / 7

M Sımbolo de entrada

σ1 . . . σj . . . σm $

SA1

. . .Ai

. . .An

σ1

. . .σj

. . .σm

$

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 611 / 667

Page 612: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Descripcion: acciones de la parte inferior 4 / 7

2.- Se completan con acciones las celdas situadas en la diagonalprincipal de la parte inferior.

Emparejar

El sımbolo terminal actual de la entrada se corresponde conel sımbolo terminal que esta en la cima de la pila.

Aceptar

El sımbolo $ es el sımbolo actual de la entrada y el sımboloque aparece en la cima de la pila.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 612 / 667

Page 613: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Descripcion 5 / 7

M Sımbolo de entrada

σ1 . . . σj . . . σm $

SA1

. . .Ai

. . .An

σ1 Emparejar. . . . . .σj Emparejar. . . . . .σm Emparejar$ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 613 / 667

Page 614: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Descripcion 6 / 7

3.- Se completan las celdas vacıas con funciones de errorCeldas vacıas que se han de completar

Todas las celdas vacıas de la parte superior.Algunas de las celdas vacıas de la parte inferior.

Metodo local:

Se debe usar una funcion especıfica para cada caso.

Tipos de funciones:

Eliminar un componente lexico de la entradaInsertar un componente lexico en la entradaSustituir un componente lexico de la entradaEliminar el sımbolo de la cima de la pila

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 614 / 667

Page 615: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Nota (Eliminar un sımbolo de la cima de la pila)

Esta accion se debe aplicar con cuidado.

Puede provocar que la cadena reconocida no se correspondacon una cadena que pueda ser generada por la gramatica.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 615 / 667

Page 616: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Descripcion 7 / 7

3.- Se completan las celdas vacıas con funciones de errorCeldas de la parte inferior que se han de completar

Celdas vacıas de las filas de los sımbolos terminales queaparecen en alguna regla de produccion en un lugar que no esel primero.En caso contrario, no hay que completar sus celdas vacıas confunciones de error: estas celdas nunca se consultaran.

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 616 / 667

Page 617: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Metodo de nivel de frase 1 /16)

P = {

(1) S → identificador = E(2) E → T E’(3) E’ → + T E’(4) E’ → ε(5) T → F T’(6) T’ → * F T’(7) T’ → ε(8) F → ( E )(9) F → identificador

(10) F → numero}

Primero Siguiente

S id $E “(”, id, n $, “)”E’ +, ε $ , “)”T “(”, id, n +, $, “)”T’ *, ε +, $, “)”F “(”, id, n *, +, $, “)”

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 617 / 667

Page 618: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Metodo de nivel de frase: tabla predictiva 2 / 16)

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 618 / 667

Page 619: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Metodo de nivel de frase: parte inferior 3 / 16)

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

id=+*()

numero$

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 619 / 667

Page 620: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Metodo de nivel de frase: diagonal inferior 4 /16)

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 3 4 4T 5 5 5T’ 7 6 7 7F 9 8 10

id Emp.= Emp.+ Emp.* Emp.( Emp.) Emp.

numero Emp.$ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 620 / 667

Page 621: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Metodo de nivel de frase: reglas epsilon 5 /16)

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1E 2 2 2E’ 4* 4* 3 4* 4* 4 4* 4T 5 5 5T’ 7* 7* 7 6 7* 7 7* 7F 9 8 10

id Emp.= Emp.+ Emp.* Emp.( Emp.) Emp.

numero Emp.$ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 621 / 667

Page 622: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Metodo de nivel de frase: parte superior 6 / 16)

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1 E1 E2 E2 E2 E2 E2 E3E 2 E2 E4 E4 2 E2 2 E5E’ 4* 4* 3 4* 4* 4 4* 4T 5 E2 E4 E4 5 E2 5 E5T’ 7* 7* 7 6 7* 7 7* 7F 9 E2 E4 E4 8 E2 10 E5

id Emp.= Emp.+ Emp.* Emp.( Emp.) Emp.

numero Emp.$ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 622 / 667

Page 623: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Metodo de nivel de frase: parte inferior 7 / 16)

Tabla predictivaSımbolo de entrada

id = + * ( ) numero $

S 1 E1 E2 E2 E2 E2 E2 E3E 2 E2 E4 E4 2 E2 2 E5E’ 4* 4* 3 4* 4* 4 4* 4T 5 E2 E4 E4 5 E2 5 E5T’ 7* 7* 7 6 7* 7 7* 7F 9 E2 E4 E4 8 E2 10 E5

id Emp.= E6 Emp. E7 E7 E7 E7 E6 E8+ Emp.* Emp.( Emp.) E9 E9 E10 E10 E9 Emp. E9 E11

numero Emp.$ E2 E2 E2 E2 E2 E2 E2 Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 623 / 667

Page 624: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Metodo de nivel de frase: errores 8 /16)

E1

Sımbolo inesperado: falta identificadorInsertar identificador en la entrada

E2

Sımbolo inesperadoEliminar sımbolo de la entrada

E3

Final de entrada inesperadaEliminar sımbolo de la pila

E4

Sımbolo inesperado: falta operandoInsertar identificador en la entrada

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 624 / 667

Page 625: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Metodo de nivel de frase: errores 9 /16)

E5

Final de entrada inesperadaInsertar identificador en la entrada

E6

Sımbolo inesperado: falta sımbolo = en la entradaInsertar = en la entrada

E7

Sımbolo inesperado: falta sımbolo = en la entradaEliminar sımbolo de la entrada

E8

Fin de entrada inesperado: falta sımbolo = en la entradaInsertar = en la entrada

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 625 / 667

Page 626: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Metodo de nivel de frase: errores 10 / 16)

E9

Sımbolo inesperado: falta sımbolo ) en la entradaEliminar sımbolo de la entrada

E10

Sımbolo inesperado: falta sımbolo ) en la entradaInsertar ) en la entrada

E11

Fin de entrada inesperado: falta sımbolo ) en la entradaInsertar ) en la entrada

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 626 / 667

Page 627: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Sentencias con errores 11 / 16)

1.- id = = id n * id

2.- id id * + n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 627 / 667

Page 628: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Primera sentencia con errores 12 / 16)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ E2: eliminar sımbolo de la entrada$ E id n * id $ 2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T → ε$ E’ n * id $ 4*) E → ε$ n * id $ E2: eliminar sımbolo de la entrada$ * id $ E2: eliminar sımbolo de la entrada$ id $ E2: eliminar sımbolo de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 628 / 667

Page 629: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Primera sentencia con errores 12 / 16)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ E2: eliminar sımbolo de la entrada$ E id n * id $ 2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T → ε$ E’ n * id $ 4*) E → ε$ n * id $ E2: eliminar sımbolo de la entrada$ * id $ E2: eliminar sımbolo de la entrada$ id $ E2: eliminar sımbolo de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 629 / 667

Page 630: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Primera sentencia con errores 12 / 16)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ E2: eliminar sımbolo de la entrada$ E id n * id $ 2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T → ε$ E’ n * id $ 4*) E → ε$ n * id $ E2: eliminar sımbolo de la entrada$ * id $ E2: eliminar sımbolo de la entrada$ id $ E2: eliminar sımbolo de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 630 / 667

Page 631: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Primera sentencia con errores 12 / 16)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ E2: eliminar sımbolo de la entrada$ E id n * id $ 2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T → ε$ E’ n * id $ 4*) E → ε$ n * id $ E2: eliminar sımbolo de la entrada$ * id $ E2: eliminar sımbolo de la entrada$ id $ E2: eliminar sımbolo de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 631 / 667

Page 632: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Primera sentencia con errores 12 / 16)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ E2: eliminar sımbolo de la entrada$ E id n * id $ 2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T → ε$ E’ n * id $ 4*) E → ε$ n * id $ E2: eliminar sımbolo de la entrada$ * id $ E2: eliminar sımbolo de la entrada$ id $ E2: eliminar sımbolo de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 632 / 667

Page 633: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Primera sentencia con errores 12 / 16)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ E2: eliminar sımbolo de la entrada$ E id n * id $ 2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T → ε$ E’ n * id $ 4*) E → ε$ n * id $ E2: eliminar sımbolo de la entrada$ * id $ E2: eliminar sımbolo de la entrada$ id $ E2: eliminar sımbolo de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 633 / 667

Page 634: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Primera sentencia con errores 12 / 16)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ E2: eliminar sımbolo de la entrada$ E id n * id $ 2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T → ε$ E’ n * id $ 4*) E → ε$ n * id $ E2: eliminar sımbolo de la entrada$ * id $ E2: eliminar sımbolo de la entrada$ id $ E2: eliminar sımbolo de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 634 / 667

Page 635: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Primera sentencia con errores 12 / 16)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ E2: eliminar sımbolo de la entrada$ E id n * id $ 2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T → ε$ E’ n * id $ 4*) E → ε$ n * id $ E2: eliminar sımbolo de la entrada$ * id $ E2: eliminar sımbolo de la entrada$ id $ E2: eliminar sımbolo de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 635 / 667

Page 636: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Primera sentencia con errores 12 / 16)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ E2: eliminar sımbolo de la entrada$ E id n * id $ 2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T → ε$ E’ n * id $ 4*) E → ε$ n * id $ E2: eliminar sımbolo de la entrada$ * id $ E2: eliminar sımbolo de la entrada$ id $ E2: eliminar sımbolo de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 636 / 667

Page 637: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Primera sentencia con errores 12 / 16)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ E2: eliminar sımbolo de la entrada$ E id n * id $ 2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T → ε$ E’ n * id $ 4*) E → ε$ n * id $ E2: eliminar sımbolo de la entrada$ * id $ E2: eliminar sımbolo de la entrada$ id $ E2: eliminar sımbolo de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 637 / 667

Page 638: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Primera sentencia con errores 12 / 16)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ E2: eliminar sımbolo de la entrada$ E id n * id $ 2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T → ε$ E’ n * id $ 4*) E → ε$ n * id $ E2: eliminar sımbolo de la entrada$ * id $ E2: eliminar sımbolo de la entrada$ id $ E2: eliminar sımbolo de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 638 / 667

Page 639: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Primera sentencia con errores 12 / 16)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ E2: eliminar sımbolo de la entrada$ E id n * id $ 2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T → ε$ E’ n * id $ 4*) E → ε$ n * id $ E2: eliminar sımbolo de la entrada$ * id $ E2: eliminar sımbolo de la entrada$ id $ E2: eliminar sımbolo de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 639 / 667

Page 640: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Primera sentencia con errores 12 / 16)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ E2: eliminar sımbolo de la entrada$ E id n * id $ 2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T → ε$ E’ n * id $ 4*) E → ε$ n * id $ E2: eliminar sımbolo de la entrada$ * id $ E2: eliminar sımbolo de la entrada$ id $ E2: eliminar sımbolo de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 640 / 667

Page 641: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Primera sentencia con errores 12 / 16)

Pila Entrada Accion$ S id = = id n * id $ 1) S → identificador = E$ E = id id = = id n * id $ Emparejar$ E = = = id n * id $ Emparejar$ E = id n * id $ E2: eliminar sımbolo de la entrada$ E id n * id $ 2) E → T E’$ E’ T id n * id $ 5) T → F T’$ E’ T’ F id n * id $ 9) F → identificador$ E’ T’ id id n * id $ Emparejar$ E’ T’ n * id $ 7*) T → ε$ E’ n * id $ 4*) E → ε$ n * id $ E2: eliminar sımbolo de la entrada$ * id $ E2: eliminar sımbolo de la entrada$ id $ E2: eliminar sımbolo de la entrada$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 641 / 667

Page 642: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Primera sentencia con errores 13 / 16)

Sentencia de entrada:

id = = id n * id

Sentencia propuesta por el metodo de nivel de frase:

id = id

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 642 / 667

Page 643: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 14 / 16)

Pila Entrada Accion$ S id id * + n $ 1) S → identificador = E$ E = id id id * + n $ Emparejar$ E = id * + n $ E6: insertar =$ E = = id * + n $ Emparejar$ E id * + n $ 2) E → T E’$ E’ T id * + n $ 5) T → F T’$ E’ T’ F id * + n $ 9) F → identificador$ E’ T’ id id * + n $ Emparejar$ E’ T’ * + n $ 6) T’ → * F T’$ E’ T’ F * * + n $ Emparejar$ E’ T’ F + n $ E4: insertar id$ E’ T’ F id + n $ 9) F → identificador

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 643 / 667

Page 644: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 14 / 16)

Pila Entrada Accion$ S id id * + n $ 1) S → identificador = E$ E = id id id * + n $ Emparejar$ E = id * + n $ E6: insertar =$ E = = id * + n $ Emparejar$ E id * + n $ 2) E → T E’$ E’ T id * + n $ 5) T → F T’$ E’ T’ F id * + n $ 9) F → identificador$ E’ T’ id id * + n $ Emparejar$ E’ T’ * + n $ 6) T’ → * F T’$ E’ T’ F * * + n $ Emparejar$ E’ T’ F + n $ E4: insertar id$ E’ T’ F id + n $ 9) F → identificador

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 644 / 667

Page 645: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 14 / 16)

Pila Entrada Accion$ S id id * + n $ 1) S → identificador = E$ E = id id id * + n $ Emparejar$ E = id * + n $ E6: insertar =$ E = = id * + n $ Emparejar$ E id * + n $ 2) E → T E’$ E’ T id * + n $ 5) T → F T’$ E’ T’ F id * + n $ 9) F → identificador$ E’ T’ id id * + n $ Emparejar$ E’ T’ * + n $ 6) T’ → * F T’$ E’ T’ F * * + n $ Emparejar$ E’ T’ F + n $ E4: insertar id$ E’ T’ F id + n $ 9) F → identificador

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 645 / 667

Page 646: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 14 / 16)

Pila Entrada Accion$ S id id * + n $ 1) S → identificador = E$ E = id id id * + n $ Emparejar$ E = id * + n $ E6: insertar =$ E = = id * + n $ Emparejar$ E id * + n $ 2) E → T E’$ E’ T id * + n $ 5) T → F T’$ E’ T’ F id * + n $ 9) F → identificador$ E’ T’ id id * + n $ Emparejar$ E’ T’ * + n $ 6) T’ → * F T’$ E’ T’ F * * + n $ Emparejar$ E’ T’ F + n $ E4: insertar id$ E’ T’ F id + n $ 9) F → identificador

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 646 / 667

Page 647: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 14 / 16)

Pila Entrada Accion$ S id id * + n $ 1) S → identificador = E$ E = id id id * + n $ Emparejar$ E = id * + n $ E6: insertar =$ E = = id * + n $ Emparejar$ E id * + n $ 2) E → T E’$ E’ T id * + n $ 5) T → F T’$ E’ T’ F id * + n $ 9) F → identificador$ E’ T’ id id * + n $ Emparejar$ E’ T’ * + n $ 6) T’ → * F T’$ E’ T’ F * * + n $ Emparejar$ E’ T’ F + n $ E4: insertar id$ E’ T’ F id + n $ 9) F → identificador

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 647 / 667

Page 648: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 14 / 16)

Pila Entrada Accion$ S id id * + n $ 1) S → identificador = E$ E = id id id * + n $ Emparejar$ E = id * + n $ E6: insertar =$ E = = id * + n $ Emparejar$ E id * + n $ 2) E → T E’$ E’ T id * + n $ 5) T → F T’$ E’ T’ F id * + n $ 9) F → identificador$ E’ T’ id id * + n $ Emparejar$ E’ T’ * + n $ 6) T’ → * F T’$ E’ T’ F * * + n $ Emparejar$ E’ T’ F + n $ E4: insertar id$ E’ T’ F id + n $ 9) F → identificador

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 648 / 667

Page 649: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 14 / 16)

Pila Entrada Accion$ S id id * + n $ 1) S → identificador = E$ E = id id id * + n $ Emparejar$ E = id * + n $ E6: insertar =$ E = = id * + n $ Emparejar$ E id * + n $ 2) E → T E’$ E’ T id * + n $ 5) T → F T’$ E’ T’ F id * + n $ 9) F → identificador$ E’ T’ id id * + n $ Emparejar$ E’ T’ * + n $ 6) T’ → * F T’$ E’ T’ F * * + n $ Emparejar$ E’ T’ F + n $ E4: insertar id$ E’ T’ F id + n $ 9) F → identificador

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 649 / 667

Page 650: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 14 / 16)

Pila Entrada Accion$ S id id * + n $ 1) S → identificador = E$ E = id id id * + n $ Emparejar$ E = id * + n $ E6: insertar =$ E = = id * + n $ Emparejar$ E id * + n $ 2) E → T E’$ E’ T id * + n $ 5) T → F T’$ E’ T’ F id * + n $ 9) F → identificador$ E’ T’ id id * + n $ Emparejar$ E’ T’ * + n $ 6) T’ → * F T’$ E’ T’ F * * + n $ Emparejar$ E’ T’ F + n $ E4: insertar id$ E’ T’ F id + n $ 9) F → identificador

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 650 / 667

Page 651: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 14 / 16)

Pila Entrada Accion$ S id id * + n $ 1) S → identificador = E$ E = id id id * + n $ Emparejar$ E = id * + n $ E6: insertar =$ E = = id * + n $ Emparejar$ E id * + n $ 2) E → T E’$ E’ T id * + n $ 5) T → F T’$ E’ T’ F id * + n $ 9) F → identificador$ E’ T’ id id * + n $ Emparejar$ E’ T’ * + n $ 6) T’ → * F T’$ E’ T’ F * * + n $ Emparejar$ E’ T’ F + n $ E4: insertar id$ E’ T’ F id + n $ 9) F → identificador

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 651 / 667

Page 652: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 14 / 16)

Pila Entrada Accion$ S id id * + n $ 1) S → identificador = E$ E = id id id * + n $ Emparejar$ E = id * + n $ E6: insertar =$ E = = id * + n $ Emparejar$ E id * + n $ 2) E → T E’$ E’ T id * + n $ 5) T → F T’$ E’ T’ F id * + n $ 9) F → identificador$ E’ T’ id id * + n $ Emparejar$ E’ T’ * + n $ 6) T’ → * F T’$ E’ T’ F * * + n $ Emparejar$ E’ T’ F + n $ E4: insertar id$ E’ T’ F id + n $ 9) F → identificador

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 652 / 667

Page 653: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 14 / 16)

Pila Entrada Accion$ S id id * + n $ 1) S → identificador = E$ E = id id id * + n $ Emparejar$ E = id * + n $ E6: insertar =$ E = = id * + n $ Emparejar$ E id * + n $ 2) E → T E’$ E’ T id * + n $ 5) T → F T’$ E’ T’ F id * + n $ 9) F → identificador$ E’ T’ id id * + n $ Emparejar$ E’ T’ * + n $ 6) T’ → * F T’$ E’ T’ F * * + n $ Emparejar$ E’ T’ F + n $ E4: insertar id$ E’ T’ F id + n $ 9) F → identificador

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 653 / 667

Page 654: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 14 / 16)

Pila Entrada Accion$ S id id * + n $ 1) S → identificador = E$ E = id id id * + n $ Emparejar$ E = id * + n $ E6: insertar =$ E = = id * + n $ Emparejar$ E id * + n $ 2) E → T E’$ E’ T id * + n $ 5) T → F T’$ E’ T’ F id * + n $ 9) F → identificador$ E’ T’ id id * + n $ Emparejar$ E’ T’ * + n $ 6) T’ → * F T’$ E’ T’ F * * + n $ Emparejar$ E’ T’ F + n $ E4: insertar id$ E’ T’ F id + n $ 9) F → identificador

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 654 / 667

Page 655: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 15 / 16)

Pila Entrada Accion$ E’ T’ F id + n $ 9) F → identificador$ E’ T’ id id + n $ Emparejar$ E’ T’ + n $ 7) T’ → ε$ E’ + n $ 3) E’ → + T E’$ E’ T + + n $ Emparejar$ E’ T n $ 5) T → F T’$ E’ T’ F n $ 10) F → n$ E’ T’ n n $ Emparejar$ E’ T’ $ 7) T’ → ε$ E’ $ 4) E’ → ε$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 655 / 667

Page 656: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 15 / 16)

Pila Entrada Accion$ E’ T’ F id + n $ 9) F → identificador$ E’ T’ id id + n $ Emparejar$ E’ T’ + n $ 7) T’ → ε$ E’ + n $ 3) E’ → + T E’$ E’ T + + n $ Emparejar$ E’ T n $ 5) T → F T’$ E’ T’ F n $ 10) F → n$ E’ T’ n n $ Emparejar$ E’ T’ $ 7) T’ → ε$ E’ $ 4) E’ → ε$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 656 / 667

Page 657: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 15 / 16)

Pila Entrada Accion$ E’ T’ F id + n $ 9) F → identificador$ E’ T’ id id + n $ Emparejar$ E’ T’ + n $ 7) T’ → ε$ E’ + n $ 3) E’ → + T E’$ E’ T + + n $ Emparejar$ E’ T n $ 5) T → F T’$ E’ T’ F n $ 10) F → n$ E’ T’ n n $ Emparejar$ E’ T’ $ 7) T’ → ε$ E’ $ 4) E’ → ε$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 657 / 667

Page 658: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 15 / 16)

Pila Entrada Accion$ E’ T’ F id + n $ 9) F → identificador$ E’ T’ id id + n $ Emparejar$ E’ T’ + n $ 7) T’ → ε$ E’ + n $ 3) E’ → + T E’$ E’ T + + n $ Emparejar$ E’ T n $ 5) T → F T’$ E’ T’ F n $ 10) F → n$ E’ T’ n n $ Emparejar$ E’ T’ $ 7) T’ → ε$ E’ $ 4) E’ → ε$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 658 / 667

Page 659: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 15 / 16)

Pila Entrada Accion$ E’ T’ F id + n $ 9) F → identificador$ E’ T’ id id + n $ Emparejar$ E’ T’ + n $ 7) T’ → ε$ E’ + n $ 3) E’ → + T E’$ E’ T + + n $ Emparejar$ E’ T n $ 5) T → F T’$ E’ T’ F n $ 10) F → n$ E’ T’ n n $ Emparejar$ E’ T’ $ 7) T’ → ε$ E’ $ 4) E’ → ε$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 659 / 667

Page 660: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 15 / 16)

Pila Entrada Accion$ E’ T’ F id + n $ 9) F → identificador$ E’ T’ id id + n $ Emparejar$ E’ T’ + n $ 7) T’ → ε$ E’ + n $ 3) E’ → + T E’$ E’ T + + n $ Emparejar$ E’ T n $ 5) T → F T’$ E’ T’ F n $ 10) F → n$ E’ T’ n n $ Emparejar$ E’ T’ $ 7) T’ → ε$ E’ $ 4) E’ → ε$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 660 / 667

Page 661: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 15 / 16)

Pila Entrada Accion$ E’ T’ F id + n $ 9) F → identificador$ E’ T’ id id + n $ Emparejar$ E’ T’ + n $ 7) T’ → ε$ E’ + n $ 3) E’ → + T E’$ E’ T + + n $ Emparejar$ E’ T n $ 5) T → F T’$ E’ T’ F n $ 10) F → n$ E’ T’ n n $ Emparejar$ E’ T’ $ 7) T’ → ε$ E’ $ 4) E’ → ε$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 661 / 667

Page 662: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 15 / 16)

Pila Entrada Accion$ E’ T’ F id + n $ 9) F → identificador$ E’ T’ id id + n $ Emparejar$ E’ T’ + n $ 7) T’ → ε$ E’ + n $ 3) E’ → + T E’$ E’ T + + n $ Emparejar$ E’ T n $ 5) T → F T’$ E’ T’ F n $ 10) F → n$ E’ T’ n n $ Emparejar$ E’ T’ $ 7) T’ → ε$ E’ $ 4) E’ → ε$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 662 / 667

Page 663: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 15 / 16)

Pila Entrada Accion$ E’ T’ F id + n $ 9) F → identificador$ E’ T’ id id + n $ Emparejar$ E’ T’ + n $ 7) T’ → ε$ E’ + n $ 3) E’ → + T E’$ E’ T + + n $ Emparejar$ E’ T n $ 5) T → F T’$ E’ T’ F n $ 10) F → n$ E’ T’ n n $ Emparejar$ E’ T’ $ 7) T’ → ε$ E’ $ 4) E’ → ε$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 663 / 667

Page 664: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 15 / 16)

Pila Entrada Accion$ E’ T’ F id + n $ 9) F → identificador$ E’ T’ id id + n $ Emparejar$ E’ T’ + n $ 7) T’ → ε$ E’ + n $ 3) E’ → + T E’$ E’ T + + n $ Emparejar$ E’ T n $ 5) T → F T’$ E’ T’ F n $ 10) F → n$ E’ T’ n n $ Emparejar$ E’ T’ $ 7) T’ → ε$ E’ $ 4) E’ → ε$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 664 / 667

Page 665: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 15 / 16)

Pila Entrada Accion$ E’ T’ F id + n $ 9) F → identificador$ E’ T’ id id + n $ Emparejar$ E’ T’ + n $ 7) T’ → ε$ E’ + n $ 3) E’ → + T E’$ E’ T + + n $ Emparejar$ E’ T n $ 5) T → F T’$ E’ T’ F n $ 10) F → n$ E’ T’ n n $ Emparejar$ E’ T’ $ 7) T’ → ε$ E’ $ 4) E’ → ε$ $ Aceptar

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 665 / 667

Page 666: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

Deteccion y recuperacion de erroresMetodo de nivel de frase

Ejemplo (Segunda sentencia con errores 16 / 16)

Sentencia de entrada:

id id * + n

Sentencia propuesta por el metodo de nivel de frase:

id = id * id + n

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 666 / 667

Page 667: PROCESADORES DE LENGUAJES - UCO · Procesadores de Lenguajes Tema IV.- An alisis Sint actico Descendente Programa 1 Introducci on 2 Descenso recursivo con retroceso o backtracking

Procesadores de Lenguajes Tema IV.- Analisis Sintactico Descendente

PROCESADORES DE LENGUAJESTEMA IV.- ANALISIS SINTACTICO DESCENDENTE

Prof. Dr. Nicolas Luis Fernandez Garcıa

Departamento de Informatica y Analisis NumericoEscuela Politecnica Superior de Cordoba

Universidad de Cordoba

Universidad de Cordoba. Escuela Politecnica Superior de Cordoba Ingenierıa Informatica 667 / 667


Recommended