Segundo Parcial 1C 2012 (Teoría de Lenguajes)

De Cuba-Wiki

Ejercicio 1

Dada la gramática extendida: con P:

a) Dar una gramática LL(1) que reconozca el mismo lenguaje que G1.

b) Dar la implementación del parser recursivo iterativo ELL(1) para los no terminales B y D de la gramática original.

Ejercicio 2

Dada la gramática , con P1:

Decidir si G es SLR. Para eso, construir la tabla. De haber conflictos, solucionarlos modificando la tabla, pero no la gramática.

Ejercicio 3

Dado un generador de notas de canciones (en cifrado estadounidense), se solicita agregarle una funcionalidad que permita detectar la presencia de versos de distintas cancione conocidas y rechazar algunas melodías que no satisfacen ciertas características.

Dados dos versos de cada una de las famosas canciones Funky Town y Low Rider:

FunkyTown(FT): ccacg - gcfec
LowRider(LR): bbbbbcdg - bcbg

y la gramática G2, se pide dar una gramática de atributos que sintetice:

a) la cantidad de versos de cada canción (FT y LR) contenidos en una canción dada.

b) la cantidad de versos que no son de ninguna de estas canciones (FT,LR).


Además, se solicita que las canciones generadas sean de tal forma que no puedan aparecer versos contiguos de FT y de LR (dados versos de distinta canción, entre ellos tiene que haber al menos un verso que no pertenezca a ninguna de ellas).

con P3:


Ejemplos:

  • ccacg-gcfec-bbbbbcdg-bcbg- no es una canción generable, dado que no hay un verso de otra canción que separe cgfec-bbbbbcdg.
  • gcfec-ccbc-bcbg-bbbbbcdg-ccbc-gcbc- es una canción posible. Devuelve 2 versos de LR, 1 verso de FT y 3 versos que no son de ninguna de ellas.


Notas:

  • Dos versos iguales cuentan como 2, no como 1.
  • Se puede asumir que se cuenta con una función de igualdad de strings.