Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Compiladores
Docente:
Presentado por:
Puno – Perú
2020
Ejercicios de Traductor Simple
(Presentado por: Christian André Urviola García)
Ejercicios para la sección 2.2
Ejercicio 2.2.1: Considere la siguiente gramática libre de contexto:
Primero se debe tomar la segunda producción “SS*” como referencia para que S tome
esa forma, luego de “SS*” la segunda “S” toma forma de “a” y la primera “S” toma forma
de “SS+”, desde aquí las dos “S” toman forma de “a” respectivamente, y finalmente se
obtiene la cadena “aa+a*”
b) Construya un árbol de análisis sintáctico para esta cadena.
a) Genera el lenguaje de 0 y 1 de igual cantidad. Por ejemplo 01, 0011, 000111, etc.
Ya que “S” siempre puede tomar la forma de 01, o la forma de una S entre otro
0 y otro 1 en los extremos.
b) Genera el lenguaje de las “a”. Puede generar solo una “a” (gracias a la última
producción); Puede generar también cadenas iniciando con los terminales de “+”
y “-” y terminando por puras “a”; y también puede generar cadenas de a
separadas por una o más terminales de “+” y “-”, pero siempre debe iniciar con
una o más combinaciones de “+” y “-”
c) Lenguaje de paréntesis, genera el lenguaje de vacíos, separados por vacíos que
están entre paréntesis, o vacíos entre paréntesis que están dentro de otros entre
paréntesis.
d) Genera cadenas de “a” y “b”. Separadas por vacíos, estás pueden ser mas de una
“a” o “b” en diferentes combinaciones a causa de reemplazar “S” en la primera
o segunda “S” generado previamente por la primera o segunda producción.
Siempre estás cadenas deben terminar por un vacío.
e) Genera el lenguaje de cadenas de “a” separados por “+” o “*” o por expresiones
del mismo lenguaje dentro de “()”. Puede que haya cadenas que terminen con
“)” (debido a la última producción) o con un “*” (debido a la 4ta producción)
digito-> 0|1|2|3|4|5|6|7|8|9
vocal-> a|e|i|o|u
Ejercicio 2.2.5:
a) Muestre que todas las cadenas binarias generadas por la siguiente gramática
tienen valores que pueden dividirse entre 3. Sugerencia: Use la inducción en el
número de nodos en un árbol de análisis sintáctico.
11->3
1001->9
110->6
10010->18
100111->39
111001->57
Todos ellos son divisibles entre 3. Y por más que se le aumente muchos 0s a cada uno
seguirá siendo divisible entre 3. Si se le agrega intercaladamente ya sea por la derecha
o izquierda 11s 1001s o 0s seguirá siendo divisible entre 3. Ejm:
10011100111001000000011-> 5140995
Ejercicio 2.2.6: Construya una gramática libre de contexto para los números romanos.
repu-> I | II | III
repd-> X | XX | XXX
repc -> C | CC | CCC
repm -> M | MM | MMM
anteriormin -> IV| IX
anteriormed -> XL | XC
anteriormax -> CD | CM
anterior -> anteriormin | anteriormed | anteriormax