Está en la página 1de 9

Universidad Nacional del Altiplano Puno

FACULTAD DE INGENIERÍA MECÁNICA ELÉCTRICA,


ELECTRÓNICA Y SISTEMAS

ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

TAREA 03: EJERCICIOS DE TRADUCTOR SIMPLE

Compiladores

Docente:

Mayenka Fernández Chambi

Presentado por:

Christian André Urviola García.

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:

a) Muestre cómo puede generarse la cadena aa+a* mediante esta gramática.

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.

c) ¿Qué lenguaje genera esta gramática? Justifique su respuesta


Genera un lenguaje de “a”. Genera solo una “a” (a causa de que S->a) o varias separadas
por “+” o “*”, y que al final de las cadenas generadas siempre existirá un “+” o un “*” o
más; también puede generar una cadena de puras “a” juntas al inicio y al final los
terminales “+” o “*” (estos 2 últimos se generan gracias a la primera y segunda
producción).
Ejercicio 2.2.2: ¿Qué lenguaje se genera mediante las siguientes gramáticas? En cada
caso, justifique su respuesta.

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)

Ejercicio 2.2.3: ¿Cuáles de las gramáticas en el ejercicio 2.2.2 son ambiguas?


Las gramáticas ambiguas son las letras “d)” y “e)”.
d) Porque si se quiere generar la cadena “abab” genera más de un árbol:
e) Y e por que si se quiere generar la cadena “a+a+a” se genera también más de un
árbol:
Ejercicio 2.2.4: Construya gramáticas libres de contexto no ambiguas para cada uno de
los siguientes lenguajes. En cada caso muestre que su gramática es correcta.
a) Expresiones aritméticas en notación prefija.
lista -> +lista digito | -lista digito| digito

digito-> 0|1|2|3|4|5|6|7|8|9

b) Listas asociativas por la izquierda de identificadores separados por comas.


lista -> lista + dígitoderecha | lista-dígitoderecha | dígitoizquierda| lista+lista | lista-lista
dígitoizquierda->0|1|2|3|4|5|6|7|8|9
dígitoderecha -> 0;|1;|2;|3;|4;|5;|6;|7;|8;|9;
c) Listas asociativas por la derecha de identificadores separados por comas.
letra ->vocal; letra| vocal;

vocal-> a|e|i|o|u

d) Expresiones aritméticas de enteros e identificadores con los cuatro operadores


binarios +, −, *, /.!

expresión -> expresión + term | expresión – term | term


term -> term * factor | term / factor | factor
factor -> digito | id | (expresión)
digito-> 0|1|2|3|4|5|6|7|8|9
e) Agregue el operador unario de suma y de resta a los operadores aritméticos de
(d).
expresión -> expresión + term | expresión – term | term
term -> term * factor | term / factor | factor

factor -> digito | id | (expresión)|+factor| -factor


digito-> 0|1|2|3|4|5|6|7|8|9

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

Un número es divisible entre 3 si la suma de sus dígitos es divisible entre 3:


5+1+4+0+9+9+5= 33 -> 33%3 = 0
Entonces es divisible entre 3.
b) ¿La gramática genera todas las cadenas binarias con valores divisibles entre 3?
Si absolutamente todas las cadenas generadas por la gramática indicad son divisibles
entre 3.

Ejercicio 2.2.6: Construya una gramática libre de contexto para los números romanos.

romano->norep | rep | anterior | noreprep | rep norep| repconrep |


repmin anteriormin | repmed anteriormed | noreprepant
rep-> repu | repd | repc| repm

repconrep-> remin | repmed| repcomplet


repmin-> repc repd | repm repc repd
repmed-> repm repc
repcomplet-> repd repu| repc repd repu | repm repc repd repu
norep-> V | L | D

noreprep-> noreprepmin | noreprepmed | noreprepmed noreprepmin|noreprepmax |


noreprepmax noreprepmed | noreprepmax noreprepmed noreprepmin
noreprepmin -> Vrepu
noreprepmed -> Lrepd
noreprepmax -> Drepm

noreprepant-> noreprepmin anteriormin | noreprepmed anteriormed | noreprepmed


anteriormed anteriormin | noreprepmax anteriormax |noreprepmax anteriormax
anteriormed | norepprepmax anteriormax anteriormed anterior min

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

También podría gustarte