Está en la página 1de 178

Análisis Sintáctico Descendente

Ing. Adrian Ulises Mercado Martinez

Universidad Nacional Autónoma de México

Abril, 2020
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Temas

1 Introducción
Derivación de una cadena por la izquierda
Construcción del árbol sintáctico a partir de
derivaciones izquierdas

2 Eliminación de la recursividad izquierda

3 Factorización por la izquierda

4 Análisis Sintáctico Descendente Recursivo

5 Análisis Sintáctico Descendente LL(1)

6 Construcción de la tabla LL(1)

7 Análisis Sintáctico LL(1)

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Sección 1 Introducción

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Introducción

1 El análisis sintáctico descendente utiliza derivaciones


por la izquierda
2 Construye el árbol sintáctico de la raı́z hacia las hojas
3 Existen dos tipos de análisis sintáctico descendente
1 Recursivo
2 LL(k)

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Introducción

1 El análisis sintáctico descendente utiliza derivaciones


por la izquierda
2 Construye el árbol sintáctico de la raı́z hacia las hojas
3 Existen dos tipos de análisis sintáctico descendente
1 Recursivo
2 LL(k)

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Introducción

1 El análisis sintáctico descendente utiliza derivaciones


por la izquierda
2 Construye el árbol sintáctico de la raı́z hacia las hojas
3 Existen dos tipos de análisis sintáctico descendente
1 Recursivo
2 LL(k)

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Introducción

1 El análisis sintáctico descendente utiliza derivaciones


por la izquierda
2 Construye el árbol sintáctico de la raı́z hacia las hojas
3 Existen dos tipos de análisis sintáctico descendente
1 Recursivo
2 LL(k)

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Introducción

1 El análisis sintáctico descendente utiliza derivaciones


por la izquierda
2 Construye el árbol sintáctico de la raı́z hacia las hojas
3 Existen dos tipos de análisis sintáctico descendente
1 Recursivo
2 LL(k)

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente

Derivar la cadena
Sea la siguiente ω = id + id * id
gramática: E ⇒ T E’ ⇒ F T’ E’
E → T E’ ⇒ id T’ E’ ⇒ id E’
E’ → + T E’ | ε ⇒ id + T E’ ⇒ id + F T’ E’
⇒ id + id T’ E’
T → F T’
⇒ id + id * F T’ E’
T’ → * F T’ | ε ⇒ id + id * id T’ E’
F → ( E ) | id ⇒ id + id * id E’
⇒ id + id * id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente

Derivar la cadena
Sea la siguiente ω = id + id * id
gramática: E ⇒ T E’ ⇒ F T’ E’
E → T E’ ⇒ id T’ E’ ⇒ id E’
E’ → + T E’ | ε ⇒ id + T E’ ⇒ id + F T’ E’
⇒ id + id T’ E’
T → F T’
⇒ id + id * F T’ E’
T’ → * F T’ | ε ⇒ id + id * id T’ E’
F → ( E ) | id ⇒ id + id * id E’
⇒ id + id * id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente

Derivar la cadena
Sea la siguiente ω = id + id * id
gramática: E ⇒ T E’ ⇒ F T’ E’
E → T E’ ⇒ id T’ E’ ⇒ id E’
E’ → + T E’ | ε ⇒ id + T E’ ⇒ id + F T’ E’
⇒ id + id T’ E’
T → F T’
⇒ id + id * F T’ E’
T’ → * F T’ | ε ⇒ id + id * id T’ E’
F → ( E ) | id ⇒ id + id * id E’
⇒ id + id * id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente

Derivar la cadena
Sea la siguiente ω = id + id * id
gramática: E ⇒ T E’ ⇒ F T’ E’
E → T E’ ⇒ id T’ E’ ⇒ id E’
E’ → + T E’ | ε ⇒ id + T E’ ⇒ id + F T’ E’
⇒ id + id T’ E’
T → F T’
⇒ id + id * F T’ E’
T’ → * F T’ | ε ⇒ id + id * id T’ E’
F → ( E ) | id ⇒ id + id * id E’
⇒ id + id * id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente

Derivar la cadena
Sea la siguiente ω = id + id * id
gramática: E ⇒ T E’ ⇒ F T’ E’
E → T E’ ⇒ id T’ E’ ⇒ id E’
E’ → + T E’ | ε ⇒ id + T E’ ⇒ id + F T’ E’
⇒ id + id T’ E’
T → F T’
⇒ id + id * F T’ E’
T’ → * F T’ | ε ⇒ id + id * id T’ E’
F → ( E ) | id ⇒ id + id * id E’
⇒ id + id * id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente

Derivar la cadena
Sea la siguiente ω = id + id * id
gramática: E ⇒ T E’ ⇒ F T’ E’
E → T E’ ⇒ id T’ E’ ⇒ id E’
E’ → + T E’ | ε ⇒ id + T E’ ⇒ id + F T’ E’
⇒ id + id T’ E’
T → F T’
⇒ id + id * F T’ E’
T’ → * F T’ | ε ⇒ id + id * id T’ E’
F → ( E ) | id ⇒ id + id * id E’
⇒ id + id * id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente

Derivar la cadena
Sea la siguiente ω = id + id * id
gramática: E ⇒ T E’ ⇒ F T’ E’
E → T E’ ⇒ id T’ E’ ⇒ id E’
E’ → + T E’ | ε ⇒ id + T E’ ⇒ id + F T’ E’
⇒ id + id T’ E’
T → F T’
⇒ id + id * F T’ E’
T’ → * F T’ | ε ⇒ id + id * id T’ E’
F → ( E ) | id ⇒ id + id * id E’
⇒ id + id * id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente

Derivar la cadena
Sea la siguiente ω = id + id * id
gramática: E ⇒ T E’ ⇒ F T’ E’
E → T E’ ⇒ id T’ E’ ⇒ id E’
E’ → + T E’ | ε ⇒ id + T E’ ⇒ id + F T’ E’
⇒ id + id T’ E’
T → F T’
⇒ id + id * F T’ E’
T’ → * F T’ | ε ⇒ id + id * id T’ E’
F → ( E ) | id ⇒ id + id * id E’
⇒ id + id * id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente

Derivar la cadena
Sea la siguiente ω = id + id * id
gramática: E ⇒ T E’ ⇒ F T’ E’
E → T E’ ⇒ id T’ E’ ⇒ id E’
E’ → + T E’ | ε ⇒ id + T E’ ⇒ id + F T’ E’
⇒ id + id T’ E’
T → F T’
⇒ id + id * F T’ E’
T’ → * F T’ | ε ⇒ id + id * id T’ E’
F → ( E ) | id ⇒ id + id * id E’
⇒ id + id * id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente

Derivar la cadena
Sea la siguiente ω = id + id * id
gramática: E ⇒ T E’ ⇒ F T’ E’
E → T E’ ⇒ id T’ E’ ⇒ id E’
E’ → + T E’ | ε ⇒ id + T E’ ⇒ id + F T’ E’
⇒ id + id T’ E’
T → F T’
⇒ id + id * F T’ E’
T’ → * F T’ | ε ⇒ id + id * id T’ E’
F → ( E ) | id ⇒ id + id * id E’
⇒ id + id * id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente

Derivar la cadena
Sea la siguiente ω = id + id * id
gramática: E ⇒ T E’ ⇒ F T’ E’
E → T E’ ⇒ id T’ E’ ⇒ id E’
E’ → + T E’ | ε ⇒ id + T E’ ⇒ id + F T’ E’
⇒ id + id T’ E’
T → F T’
⇒ id + id * F T’ E’
T’ → * F T’ | ε ⇒ id + id * id T’ E’
F → ( E ) | id ⇒ id + id * id E’
⇒ id + id * id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente

Derivar la cadena
Sea la siguiente ω = id + id * id
gramática: E ⇒ T E’ ⇒ F T’ E’
E → T E’ ⇒ id T’ E’ ⇒ id E’
E’ → + T E’ | ε ⇒ id + T E’ ⇒ id + F T’ E’
⇒ id + id T’ E’
T → F T’
⇒ id + id * F T’ E’
T’ → * F T’ | ε ⇒ id + id * id T’ E’
F → ( E ) | id ⇒ id + id * id E’
⇒ id + id * id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente

Derivar la cadena
Sea la siguiente ω = id + id * id
gramática: E ⇒ T E’ ⇒ F T’ E’
E → T E’ ⇒ id T’ E’ ⇒ id E’
E’ → + T E’ | ε ⇒ id + T E’ ⇒ id + F T’ E’
⇒ id + id T’ E’
T → F T’
⇒ id + id * F T’ E’
T’ → * F T’ | ε ⇒ id + id * id T’ E’
F → ( E ) | id ⇒ id + id * id E’
⇒ id + id * id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente

Derivar la cadena
Sea la siguiente ω = id + id * id
gramática: E ⇒ T E’ ⇒ F T’ E’
E → T E’ ⇒ id T’ E’ ⇒ id E’
E’ → + T E’ | ε ⇒ id + T E’ ⇒ id + F T’ E’
⇒ id + id T’ E’
T → F T’
⇒ id + id * F T’ E’
T’ → * F T’ | ε ⇒ id + id * id T’ E’
F → ( E ) | id ⇒ id + id * id E’
⇒ id + id * id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente

Derivar la cadena
Sea la siguiente ω = id + id * id
gramática: E ⇒ T E’ ⇒ F T’ E’
E → T E’ ⇒ id T’ E’ ⇒ id E’
E’ → + T E’ | ε ⇒ id + T E’ ⇒ id + F T’ E’
⇒ id + id T’ E’
T → F T’
⇒ id + id * F T’ E’
T’ → * F T’ | ε ⇒ id + id * id T’ E’
F → ( E ) | id ⇒ id + id * id E’
⇒ id + id * id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Construcción del árbol sintáctico a partir de derivaciones izquierdas

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Construcción del árbol sintáctico a partir de derivaciones izquierdas

T E’

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Construcción del árbol sintáctico a partir de derivaciones izquierdas

T E’

F T’

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Construcción del árbol sintáctico a partir de derivaciones izquierdas

T E’

F T’

id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Construcción del árbol sintáctico a partir de derivaciones izquierdas

T E’

F T’

id ε

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Construcción del árbol sintáctico a partir de derivaciones izquierdas

T E’

F T’ + T E’

id ε

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Construcción del árbol sintáctico a partir de derivaciones izquierdas

T E’

F T’ + T E’

F T’
id ε

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Construcción del árbol sintáctico a partir de derivaciones izquierdas

T E’

F T’ + T E’

F T’
id ε

id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Construcción del árbol sintáctico a partir de derivaciones izquierdas

T E’

F T’ + T E’

F T’
id ε

id * F T’

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Construcción del árbol sintáctico a partir de derivaciones izquierdas

T E’

F T’ + T E’

F T’
id ε

id * F T’

id

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Construcción del árbol sintáctico a partir de derivaciones izquierdas

T E’

F T’ + T E’

F T’
id ε

id * F T’

id ε

AUMM
Introducción Eliminación de la recursividad izquierda Factorizaci
Derivaci
ón por
ón de
la izquierda
una cadena
Anpor
álisislaSint
izquierda
áctico Descendente
Construcción
Red

Análisis Sintáctico Descendente


Construcción del árbol sintáctico a partir de derivaciones izquierdas

T E’

F T’ + T E’

F T’ ε
id ε

id * F T’

id ε

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Sección 2 Eliminación de la recursividad


izquierda

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Eliminación de la recursividad izquierda

Ejemplo:
E→E+T|T
A→Aα|β
E → T E’
Se reescribe
E’→ + T E’ | ε
como:
T→T*F|F
A → β A’
T → F T’
y
T’→ * F T’ | ε
A’ → α A’| ε
F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Entrada: Una gramática propia: G
Salida: Una gramática equivalente: G’ sin recursividad
izquierda
1 Asignar un orden a los no terminales tal que: A1 ,
A2 ,. . . ,An ;
2 para i=1 hasta n hacer
3 para j=1 hasta i-1 hacer
4 para cada producción de la forma Ai →Aj γ
hacer
5 sustituir por A→ δ1 γ|δ2 γ| . . . |δk γ;
6 donde;
7 Aj → δ1 |δ2 | . . . |δk ;
8 fin
9 fin
10 Eliminar la recursividad inmediata;
11 fin
AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Sección 3 Factorización por la izquierda

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Gramática con factores comunes por la izquierda


Decimos que si una gramática presenta un no terminal
con producciones como las siguientes:
A → A αβ1 |αβ2 | . . . |αβn |γ
Donde
α es el factor común a n producciones
βi es la parte de la producción que es diferente
cualquier otra β
γ son las producciones que no inician con α
La gramática tiene factores comunes por la izquierda

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Gramática con factores comunes por la izquierda


Decimos que si una gramática presenta un no terminal
con producciones como las siguientes:
A → A αβ1 |αβ2 | . . . |αβn |γ
Donde
α es el factor común a n producciones
βi es la parte de la producción que es diferente
cualquier otra β
γ son las producciones que no inician con α
La gramática tiene factores comunes por la izquierda

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Gramática con factores comunes por la izquierda


Decimos que si una gramática presenta un no terminal
con producciones como las siguientes:
A → A αβ1 |αβ2 | . . . |αβn |γ
Donde
α es el factor común a n producciones
βi es la parte de la producción que es diferente
cualquier otra β
γ son las producciones que no inician con α
La gramática tiene factores comunes por la izquierda

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Gramática con factores comunes por la izquierda


Decimos que si una gramática presenta un no terminal
con producciones como las siguientes:
A → A αβ1 |αβ2 | . . . |αβn |γ
Donde
α es el factor común a n producciones
βi es la parte de la producción que es diferente
cualquier otra β
γ son las producciones que no inician con α
La gramática tiene factores comunes por la izquierda

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Factorización por la izquierda

Ejemplo:
A→A E→T+E|T
αβ1 |αβ2 | . . . |αβn |γ E → T E’
Se reescribe E’→ + E | ε
como: T→F*T|T
A → α A’ | γ T → F T’
y T’→ * T | ε
A’ → β1 |β2 | . . . |βn F → ( E ) | id
F → ( E ) | id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

Entrada: Una gramática: G


Salida: Una gramática equivalente G’ sin factores
izquierdos
1 para cada no terminal A ∈ G hacer
2 si A → αβ1 |αβ2 | . . . |αβn |γ entonces
3 Reemplazar por;
4 A → α A’ | γ;
5 A’ → β1 |β2 | . . . |βn ;
6 fin
7 fin

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Sección 4 Análisis Sintáctico Descendente


Recursivo

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

Análisis sintáctico descendente recursivo


Se basa en la idea de construir una función para cada
no terminal.
Si encuentra:
Un no terminal se llama a la función correspondiente.
Un terminal se debe comparar con el token de la
entrada.
La cadena vacı́a, indica que no debe hacer nada.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

Análisis sintáctico descendente recursivo


Se basa en la idea de construir una función para cada
no terminal.
Si encuentra:
Un no terminal se llama a la función correspondiente.
Un terminal se debe comparar con el token de la
entrada.
La cadena vacı́a, indica que no debe hacer nada.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

Análisis sintáctico descendente recursivo


Se basa en la idea de construir una función para cada
no terminal.
Si encuentra:
Un no terminal se llama a la función correspondiente.
Un terminal se debe comparar con el token de la
entrada.
La cadena vacı́a, indica que no debe hacer nada.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

Análisis sintáctico descendente recursivo


Se basa en la idea de construir una función para cada
no terminal.
Si encuentra:
Un no terminal se llama a la función correspondiente.
Un terminal se debe comparar con el token de la
entrada.
La cadena vacı́a, indica que no debe hacer nada.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Entrada: Una gramática: G
Salida: Un programa para la gramática
1 para cada no terminal A ∈ G hacer
2 Función A():
3 para cada producción A→ Y1 Y2 . . . Yk hacer
4 para i=1 hasta k hacer
5 si Yi ∈ N entonces
6 Yi ()
7 si no, si Yi = token actual entonces
8 consumir(Yi )
9 en otro caso
10 error()
11 fin
12 fin
13 fin
14 fin
15 fin AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

Ejemplo
S→if E then S else S
S→ begin S L
S→ print E
L→ end
L→: S L
E→ num = num

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


1 typedef enum ( I F =1 , THEN , ELSE , BEGIN , END, PRINT , DPUNT
, NUM, EQ) token ;
2
3 i n t current token ;
4
5 void eat ( i n t tok ) {
6 i f ( tok == current token ) current token = yylex ( ) ;
7 else error ( ) ;
8 }
9
10 void S ( ) {
11 switch ( current token ) {
12 case I F : eat ( I F ) ; E ( ) ; eat ( THEN ) ; S ( ) ; eat ( ELSE ) ;
13 S ( ) ; break ;
14 case BEGIN : eat ( BEGIN ) ; S ( ) ; L ( ) ;
15 break ;
16 case PRINT : eat ( PRINT ) ; E ( ) ; break ;
17 default : e r r o r ( ) ;
18 }
19 }
20 AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


1 void L ( ) {
2 switch ( current token ) {
3 case END : eat (END) ; break ;
4 case DPUNT : eat (DPUNT) ; S ( ) ; L ( ) ; break ;
5 default : e r r o r ( ) ;
6 }
7 }
8
9 void E ( ) {
10 eat (NUM) ;
11 eat (EQ) ;
12 eat (NUM) ;
13 }
14
15 i n t main ( ) {
16 current token = yylex ( ) ;
17 E() ;
18 }
19

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Sección 5 Análisis Sintáctico Descendente

LL(1)

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

Sı́mbolos Anulables
Un sı́mbolo es anulable si puede ser sustituido por la
cadena vacı́a.
Al conjunto de anulables lo denotaremos como An

1 An = {} –Conjuntos de anulables
2 para cada X ∈ N hacer
3 si X→ ε entonces
4 An = An ∪{X}
5 si no, si X→Y1 . . . Yk entonces
6 si Y1 . . . Yk ∈ An entonces
7 An = An ∪{X}
8 fin
9 fin
10 fin
AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

FIRST
1 Es el conjunto de terminales con los que puede
comenzar una cadena
2 Se compone exclusivamente de sı́mbolos terminales
y de la cadena vacı́a.
3 Se puede calcular para cadenas, terminales y no
terminales.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

FIRST
1 Es el conjunto de terminales con los que puede
comenzar una cadena
2 Se compone exclusivamente de sı́mbolos terminales
y de la cadena vacı́a.
3 Se puede calcular para cadenas, terminales y no
terminales.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

FIRST
1 Es el conjunto de terminales con los que puede
comenzar una cadena
2 Se compone exclusivamente de sı́mbolos terminales
y de la cadena vacı́a.
3 Se puede calcular para cadenas, terminales y no
terminales.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

FIRST
1 Es el conjunto de terminales con los que puede
comenzar una cadena
2 Se compone exclusivamente de sı́mbolos terminales
y de la cadena vacı́a.
3 Se puede calcular para cadenas, terminales y no
terminales.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


1 Función FIRST(X ):
2 si X ∈ Σ entonces
3 FIRST(X )={X }
4 si no, si X ∈ N entonces
5 para cada producción X→Y1 Y2 . . . Yk hacer
6 para i=1 hasta k hacer
7 si Y1 , . . . ,Yi−1 ∈ An ó i=1 entonces
8 FIRST(X )=FIRST(X )∪FIRST(Yi )
9 fin
10 fin
11 si Y1 , . . . ,Yk ∈ An ó k = 0 /*ε*/ entonces
12 FIRST(X )=FIRST(X )∪{ε}
13 fin
14 fin
15 fin
16 fin
AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

FOLLOW
1 Es el conjunto de terminales que pueden seguir a un
no terminal.
2 Se compone exclusivamente de sı́mbolos terminales.
3 Se puede calcular para no terminales.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

FOLLOW
1 Es el conjunto de terminales que pueden seguir a un
no terminal.
2 Se compone exclusivamente de sı́mbolos terminales.
3 Se puede calcular para no terminales.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

FOLLOW
1 Es el conjunto de terminales que pueden seguir a un
no terminal.
2 Se compone exclusivamente de sı́mbolos terminales.
3 Se puede calcular para no terminales.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

FOLLOW
1 Es el conjunto de terminales que pueden seguir a un
no terminal.
2 Se compone exclusivamente de sı́mbolos terminales.
3 Se puede calcular para no terminales.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

1 Función FOLLOW(A):
2 para cada Producción B→ α A Y1 . . . Yk hacer
3 para i=1 hasta k hacer
4 si Y1 , . . . ,Yi−1 ∈ An ó i=1 entonces
5 FOLLOW(A)=FOLLOW(A)∪FIRST(Yi )
6 fin
7 fin
8 si Y1 , . . . ,Yk ∈ An ó k=0 entonces
9 FOLLOW(A)=FOLLOW(A)∪FOLLOW(B)
10 fin
11 fin
12 fin

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Entrada: Una gramática G
1 Función Anulable FIRST FOLLOW(G):
2 Hacer An igual a N0 en todos los renglones
3 Hacer FIRST = FOLLOW = Φ
4 repetir
5 para cada Producción X→ Y1 . . . Yk hacer
6 si Y1 , . . . ,Yk ∈ An ó k = 0 /*ε*/ entonces
7 An[X] = ”Sı́”
8 fin
9 si X es es sı́mbolo inicial entonces
10 FOLLOW[X]=FOLLOW[X]∪{$}
11 fin
12 para i=1 hasta k hacer
13 si Y1 , . . . ,Yi −1 ∈ An ó i=1 entonces
14 FIRST[X]=FRIST[X]∪FIRST[Yi ]
15 fin
16 si Yi +1 , . . . ,Yk ∈ An ó i=k entonces
17 FOLLOW[Yi ]=FOLLOW[Yi ]∪FOLLOW[X]
18 fin
19 t=i+1
20 para j=i+1 hasta k hacer
21 si Yt . . . Yj −1 ∈ An ó j=t entonces
22 FOLLOW[Yi )=FOLLOW(Yi )∪FIRST(Yj )
23 fin
24 fin
25 fin
26 fin
27 hasta que FIRST, FOLLOW y An no cambien
28 fin

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E
E’→+ T E’ | ε
E’
T→F T’ T
T’→* F T’ | ε T’
F→( E ) | id F

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E
E’→+ T E’ | ε
E’
T→F T’ T
T’→* F T’ | ε T’
F→( E ) | id F

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no
E’→+ T E’ | ε
E’ no
T→F T’ T no
T’→* F T’ | ε T’ no
F→( E ) | id F no

Iniciar con Anulable igual no

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no
E’→+ T E’ | ε
E’ no
T→F T’ T no
T’→* F T’ | ε T’ no
F→( E ) | id F no

FRIST y FOLLOW igual al conjunto vacı́o.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no
E’→+ T E’ | ε
E’ sı́
T→F T’ T no
T’→* F T’ | ε T’ no
F→( E ) | id F no

Como E’→ ε ∴ E’ es anulable

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no
E’→+ T E’ | ε
E’ sı́
T→F T’ T no
T’→* F T’ | ε T’ sı́
F→( E ) | id F no

Como T’→ ε ∴ T’ es anulable

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no
E’→+ T E’ | ε
E’ sı́
T→F T’ T no
T’→* F T’ | ε T’ sı́
F→( E ) | id F no (

FIRST(F) por F→(E) agregamos (

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no
E’→+ T E’ | ε
E’ sı́
T→F T’ T no
T’→* F T’ | ε T’ sı́
F→( E ) | id F no ( id

FIRST(F) por F→id agregamos id

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no
E’→+ T E’ | ε
E’ sı́
T→F T’ T no
T’→* F T’ | ε T’ sı́ *
F→( E ) | id F no ( id

FIRST(T’) por T’→* F T’ agregamos *

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no
E’→+ T E’ | ε
E’ sı́
T→F T’ T no
T’→* F T’ | ε T’ sı́ *ε
F→( E ) | id F no ( id

FIRST(T’) por T’→ ε agregamos ε

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no
E’→+ T E’ | ε
E’ sı́
T→F T’ T no ( id
T’→* F T’ | ε T’ sı́ *ε
F→( E ) | id F no ( id

FIRST(T) por T→F T’ agregamos FIRST(F) y F es NO anulable,


NO agregamos FIRST(T’)

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no
E’→+ T E’ | ε
E’ sı́ +
T→F T’ T no ( id
T’→* F T’ | ε T’ sı́ *ε
F→( E ) | id F no ( id

FIRST(E’) por E’→+ T E’ agregamos +

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no
E’→+ T E’ | ε
E’ sı́ +ε
T→F T’ T no ( id
T’→* F T’ | ε T’ sı́ *ε
F→( E ) | id F no ( id

FIRST(E’) por E’→ ε agregamos ε

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no ( id
E’→+ T E’ | ε
E’ sı́ +ε
T→F T’ T no ( id
T’→* F T’ | ε T’ sı́ *ε
F→( E ) | id F no ( id

FIRST(T) por E→T E’ agregamos FIRST(T) y T es NO anulable,


NO agregamos FIRST(E’)

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no ( id $
E’→+ T E’ | ε
E’ sı́ +ε
T→F T’ T no ( id
T’→* F T’ | ε T’ sı́ *ε
F→( E ) | id F no ( id

FOLLOW(E): agregamos $ por ser el sı́mbolo inicial

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no ( id $)
E’→+ T E’ | ε
E’ sı́ +ε
T→F T’ T no ( id
T’→* F T’ | ε T’ sı́ *ε
F→( E ) | id F no ( id

FOLLOW(E): Por F→(E) está seguido de )

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no ( id $)
E’→+ T E’ | ε
E’ sı́ +ε $)
T→F T’ T no ( id
T’→* F T’ | ε T’ sı́ *ε
F→( E ) | id F no ( id

FOLLOW(E’); Por E→T E’, al estar E’ al final agregamos


FOLLOW(E)

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no ( id $)
E’→+ T E’ | ε
E’ sı́ +ε $)
T→F T’ T no ( id
T’→* F T’ | ε T’ sı́ *ε
F→( E ) | id F no ( id

FOLLOW(E’); Por E’→+ T E’, al estar E’ al final agregamos


FOLLOW(E’)

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no ( id $)
E’→+ T E’ | ε
E’ sı́ +ε $)
T→F T’ T no ( id +
T’→* F T’ | ε T’ sı́ *ε
F→( E ) | id F no ( id

FOLLOW(T): Por E→T E’, agregamos el FIRST(E’) SIN INCLUIR


ε

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no ( id $)
E’→+ T E’ | ε
E’ sı́ +ε $)
T→F T’ T no ( id +$)
T’→* F T’ | ε T’ sı́ *ε
F→( E ) | id F no ( id

FOLLOW(T): Por E→T E’, debido a que E’ es anulable, al


quitarla, T queda al final de la producción y agregamos
FOLLOW(E)

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no ( id $)
E’→+ T E’ | ε
E’ sı́ +ε $)
T→F T’ T no ( id +$)
T’→* F T’ | ε T’ sı́ *ε
F→( E ) | id F no ( id

FOLLOW(T): Por E’→+ T E’, agregamos el FIRST(E’) SIN


INCLUIR ε

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no ( id $)
E’→+ T E’ | ε
E’ sı́ +ε $)
T→F T’ T no ( id +$)
T’→* F T’ | ε T’ sı́ *ε
F→( E ) | id F no ( id

FOLLOW(T): Por E’→+T E’, debido a que E’ es anulable, al


quitarla T queda al final de la producción y agregamos
FOLLOW(E’)

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no ( id $)
E’→+ T E’ | ε
E’ sı́ +ε $)
T→F T’ T no ( id +$)
T’→* F T’ | ε T’ sı́ *ε +$)
F→( E ) | id F no ( id

FOLLOW(T’); Por T→F T’, al estar T’ al final agregamos


FOLLOW(T)

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no ( id $)
E’→+ T E’ | ε
E’ sı́ +ε $)
T→F T’ T no ( id +$)
T’→* F T’ | ε T’ sı́ *ε +$)
F→( E ) | id F no ( id

FOLLOW(T’); Por E’→* F T’, al estar T’ al final agregamos


FOLLOW(T’)

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no ( id $)
E’→+ T E’ | ε
E’ sı́ +ε $)
T→F T’ T no ( id +$)
T’→* F T’ | ε T’ sı́ *ε +$)
F→( E ) | id F no ( id *

FOLLOW(F): Por E→F T’, agregamos el FIRST(T’) SIN INCLUIR


ε

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no ( id $)
E’→+ T E’ | ε
E’ sı́ +ε $)
T→F T’ T no ( id +$)
T’→* F T’ | ε T’ sı́ *ε +$)
F→( E ) | id F no ( id *+$)

FOLLOW(F): Por T→F T’, debido a que T’ es anulable, al


quitarla, F queda al final de la producción y agregamos
FOLLOW(T)

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no ( id $)
E’→+ T E’ | ε
E’ sı́ +ε $)
T→F T’ T no ( id +$)
T’→* F T’ | ε T’ sı́ *ε +$)
F→( E ) | id F no ( id *+$)

FOLLOW(F): Por T’→* F T’, agregamos el FIRST(T’) SIN


INCLUIR ε

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’ Anulable FIRST FOLLOW


E no ( id $)
E’→+ T E’ | ε
E’ sı́ +ε $)
T→F T’ T no ( id +$)
T’→* F T’ | ε T’ sı́ *ε +$)
F→( E ) | id F no ( id *+$)

FOLLOW(F): Por T’→*F T’, debido a que T’ es anulable, al


quitarla F queda al final de la producción y agregamos
FOLLOW(E’)

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Sección 6 Construcción de la tabla LL(1)

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

Entrada: Una gramática G


Salida: La tabla de análisis LL(1): M
1 para cada producción A→ α ∈ G hacer
2 para cada terminal a ∈ FIRST(α) hacer
3 M[A,a] = A→ α;
4 fin
5 si ε ∈ FIRST(α) entonces
6 para cada terminal b ∈ FOLOW(A) hacer
7 M[A,b] = A→ α;
8 fin
9 fin
10 fin

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’
E’→+ T E’ | ε
T→F T’
T’→* F T’ | ε
F→( E ) | id
id + * ( ) $
E
E’
T
T’
F

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’
E’→+ T E’ | ε
T→F T’
T’→* F T’ | ε
F→( E ) | id
id + * ( ) $
E
E’
T
T’
F

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’
E’→+ T E’ | ε
T→F T’
T’→* F T’ | ε
F→( E ) | id
id + * ( ) $
E
E’
T
T’
F
Construir la tabla asignado los renglones a los NO
TERMINALES y las columnas a los terminales, incluyendo fin
de archivo

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’
E’→+ T E’ | ε
T→F T’
T’→* F T’ | ε
F→( E ) | id
id + * ( ) $
E E→T E’ E→T E’
E’
T
T’
F
E→T E’, FIRST(T E’))={(, id}

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’
E’→+ T E’ | ε
T→F T’
T’→* F T’ | ε
F→( E ) | id
id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’
T
T’
F
E’→+ T E’, FIRST(+ T E’))={+}

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’
E’→+ T E’ | ε
T→F T’
T’→* F T’ | ε
F→( E ) | id
id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T
T’
F
E’→ ε, FIRST(ε){ε}, como contiene a ε se debe considerar
el FOLLOW(E’)={$, )}

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’
E’→+ T E’ | ε
T→F T’
T’→* F T’ | ε
F→( E ) | id
id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’
F
T→F T’, FIRST(F T’))={(, id}

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’
E’→+ T E’ | ε
T→F T’
T’→* F T’ | ε
F→( E ) | id
id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→* F T’
F
T’→* F T’, FIRST(* F T’))={*}

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’
E’→+ T E’ | ε
T→F T’
T’→* F T’ | ε
F→( E ) | id
id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F
T’→ ε, FIRST(ε){ε}, como contiene a ε se debe considerar
el FOLLOW(T’)={+, $, )}

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’
E’→+ T E’ | ε
T→F T’
T’→* F T’ | ε
F→( E ) | id
id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→(E)
F→(E), FIRST((E))={(}

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

E→T E’
E’→+ T E’ | ε
T→F T’
T’→* F T’ | ε
F→( E ) | id
id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)
F→id, FIRST(id)={(id}

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Sección 7 Análisis Sintáctico LL(1)

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

Una cadena de entrada para ser analizada.


Una pila para guardar los sı́mbolos analizados.
Una tabla de análisis sintáctico: M
Salida: la cadena es aceptada o no.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

Una cadena de entrada para ser analizada.


Una pila para guardar los sı́mbolos analizados.
Una tabla de análisis sintáctico: M
Salida: la cadena es aceptada o no.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

Una cadena de entrada para ser analizada.


Una pila para guardar los sı́mbolos analizados.
Una tabla de análisis sintáctico: M
Salida: la cadena es aceptada o no.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente

Una cadena de entrada para ser analizada.


Una pila para guardar los sı́mbolos analizados.
Una tabla de análisis sintáctico: M
Salida: la cadena es aceptada o no.

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


Entrada: Una cadena ω y una tabla de análisis M
Resultado: Si la cadena es aceptada o no
1 p: apuntador al primer caracter de ω;
2 X: apuntador a la cima de la pila;
3 Hacer ω = ω$;
4 push($), push(S);
5 mientras X 6= $ hacer
6 si X = p entonces
7 pop() y avanzar a p;
8 si no, si X ∈ Σ y X6=p entonces
9 error();
10 si no, si M[X, p] = X→ Y1 Y2 . . . Yk entonces
11 pop();
12 para i=k hasta 1 hacer
13 push(Yi );
14 fin
15 si no, si M[X,p]= error entonces
16 error();
17 fin
18 fin
19 si X = $ y X=p entonces
20 aceptar();
21 en otro caso
22 error();
23 fin

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM
Introducción Eliminación de la recursividad izquierda Factorización por la izquierda Análisis Sintáctico Descendente Re

Análisis Sintáctico Descendente


id + * ( ) $
E E→T E’ E→T E’
E’ E’→+ T E’ E’→ ε E’→ ε
T T→F T’ T→F T’
T’ T’→ ε T’→* F T’ T’→ ε T’→ ε
F F→ id F→(E)

PILA ENTRADA ACCIÓN


E$ id + id * id $ E → T E’
TE’$ id+ id *id $ T → F T’
FT’E’$ id + id * id $ F → id
id T’ E’ $ id + id * id $ avanzar
T’ E’ $ + id * id $ T’ → ε
E’ $ + id * id $ E’→ +TE’
+ T E’ $ + id * id $ avanzar
T E’ $ id * id $ T → FT’
F T’ E’ $ id * id F → id
id T’ E’ $ id * id $ avanzar
T’ E’ $ * id $ T’ → ∗FT’
* F T’ E’ $ * id $ avanzar
F T’ E’ $ id $ F → id
id T’ E’ $ id $ avanzar
T’ E’ $ $ T’ → ε
E’ $ $ E’ → ε
$ $ aceptar()

AUMM

También podría gustarte