Está en la página 1de 3

Jon Martín Varela

Procesadores de Lenguaje – PLE

Hoja de problemas puntuable n. 3 – Ing. Informática

José L. Balcázar, Dept. MatEsCo, Universidad de Cantabria

Problema único. Consideramos la siguiente gramática incontextual:

S: S’ (’ S ’)’ | λ

1. Escribe varias entradas que sean generadas por esta gramática; exhibe un árbol
sintáctico para cada una de ellas.

Varias posibles entradas generadas por esta gramática, podrían ser, por ejemplo:
- ()
- ()()
- (())

Para ( ) el árbol sintáctico es:

Para ( ) ( ) el árbol sintáctico es:

Para ( ( ) ) el árbol sintáctico es:


2. Escribe varias entradas que no se puedan generar por esta gramática; para cada una
de ellas, explica por qué razón no se pueden generar.

- ())
- (()

No se pueden generar, ya que S solo tiene producciones a S ( S ) y a λ, por lo que siempre que
S derive en la primera expresión, generará tanto un paréntesis abierto como uno cerrado. Por
tanto, se podrá generar cualquier entrada que incluya cualquier número de paréntesis
equilibrado.

3. Extiende la gramática con un nuevo símbolo inicial T siguiendo el criterio bison.

La gramática con ese nuevo símbolo inicial, sería:

T: S
S: S’(‘S’)’ | λ

4. Calcula Anulable, FIRST y FOLLOW de S y de T.

Para calcular anulable, seguiremos el ejemplo visto en clase y lo haremos de la misma manera:

T S | S’(‘S’)’ λ
----------------------------------------------------------------
Falso Falso |
| Falso Cierto
Falso Cierto |
| Falso Cierto
Cierto Cierto |
| Falso Cierto
Cierto Cierto |

Por tanto, tanto T como S son anulables.Ahora calcularemos el FIRST, siguiendo lo visto en
clase también:

T S | S’(‘S’)’ λ
----------------------------------------------------------------------------------------------
Ø Ø |
| Ø U { ‘(‘ } = { ‘(‘ } Ø
Ø { ‘(‘ } |
| { ‘(‘ } U { ‘(‘ } = { ‘(‘ } Ø
{ ‘(‘ } { ‘(‘ } |
{ ‘(‘ } Ø
{ ‘(‘ } { ‘(‘ } |

Por tanto, el FIRST tanto de T como de S será ‘(‘. Calcularemos ahora el FOLLOW:

FOLLOW( T ): { $, FOLLOW( S ) }
FOLLOW( S ): 1/- S’(‘ S ‘)’
1a/- { ‘(‘ }
1b/- { ‘(‘,’)’ }

Por tanto, los FOLLOW quedan de la siguiente manera:

FOLLOW ( T ): { ‘(‘, ‘)’, $ }


FOLLOW( S ): { ‘(‘,’)’ }

5. (Parte para hacer en clase el viernes; inténtala de todos modos a ver hasta dónde
logras llegar.) Enumera los ítems LR(0), calcula el autómata indeterminista LR(0),
determinízalo, construye la tabla de análisis LR(0) y aplica el analizador LR(0) sobre las
entradas que diste como respuesta en los puntos 1 y 2.

Los ítems encontrados son 10:

Con lo cual, el autómata indeterminista será:

También podría gustarte