You are on page 1of 7

Facultad de Ciencias de la Computación

COMPILADORES
M.C. Pedro Bello López

Lista de ejercicios muestra del Primer Examen Parcial

1. Escribir expresiones regulares para los siguientes lenguajes:


a) Identificadores de Pascal.
b) Constantes numéricas reales en formato exponencial (por ejemplo -2.34E-2)

2. Dadas las siguientes expresiones regulares, dibujar los patrones correspondientes.


a) 1* (0 | 0 1)*
b) ((0 | 1)* (1 0 | 0 1)* 1 | (1 1 | 0 0)

3. Decir con palabras que lenguaje generan las siguientes expresiones regulares
a) (11 | 0)* (00 | 1) *
b) 01 (((10)* | 111) * | 0 ) * 1
c) a+ bc? d*

4. Crear un Analizador Léxico que reconozca los siguientes elementos:

a) IDENTIFICADORES: un identificador no puede ser mayor a 5 caracteres y deberá


iniciar con una letra y podrá ser seguida de letras, dígitos o guión bajo (“_”). Un
identificador no podrá terminar con “_”.

b) Una constante entera descrita a continuación:


Una constante entera, consistente en una secuencia de dígitos, se supone octal si comienza
con un 0 (dígito cero), en caso contrario se supone decimal. Las constantes octales no
contienen Los dígitos 8 y 9. Una secuencia de dígitos comenzando por 0x (dígito cero
seguido de x) se toma por un entero hexadecimal.

c) Una constante en punto flotante descritos a continuación:


Una constante en punto flotante consta de una parte entera, un punto decimal y una parte
fraccional, a su vez puede llevar opcionalmente notación científica que se describe con una
e o E, un exponente entero con un signo opcional seguido de una constante entera. Tanto la
parte entera, la parte fraccional y la notación científica son de la forma constante entera
(descrita en el inciso b).

5. Complete el siguiente crucigrama de conceptos


HORIZONTALES:
1.-No genera código objeto
2.-Tardo en construirse 18 años-persona
3.-Este lenguaje no genera código objeto
6.-Este compilador genera lenguaje objeto para una maquina diferente
9.-Manejar estos elementos es importante en los compiladores
10.-El Analizador Sintáctico da como salida este tipo de estructura
VERTICALES:
1.-Es un generador automático de analizadores léxicos
3.-Es un programa que toma un archivo fuente y genera un archivo objeto
7.-el analizador sintáctico también es llamado…
9.-Siglas del lenguaje intermedio (universal computer oriented lenguaje)

6. Completa el siguiente párrafo.


Para diseñar un compilador es necesario tomar en cuenta una serie de _________: En la
primera________ se utiliza el _______________, el cual se encarga de por ejemplo
sustituir macros, eliminar comentarios, etc. de ahí pasamos a las segunda ________ que es
fundamental y consta del analizador__________________, el analizador _____________ y
el generador de código que traduce el código fuente a un código __________ o a un código
___________, según se trate de un compilador o un interprete. Para la tercera _________
no siempre se realiza y consiste en hacer _______________ sobre el código generado.
Finalmente en la cuarta ___________ se traduce el código a un código ____________ o
______________.

7. En la siguiente sopa de letras encuentra cada uno de los 12 conceptos y da una breve
descripción de ellos.
8. Contestar Verdadero o Falso

9. Crear un Analizador Léxico que reconozca los siguientes elementos:


Operaciones: Suma, resta, multiplicación y división
Asignación: “=”
Número Decimal. Ej: 85, 85D (Pueden o no terminar con D)
Número Octal Ej: 76O(Terminan con O)
Número Hexadecimal Ej: a8fH, 5H, A5BH, 01BH (Terminan con H)
Número Binario Ej: 011100B, 11100B (Terminan con B)
Identificadores : Una letra posiblemente seguida de más letras o dígitos (incluyendo las
letras A,B,C,D,E,F,H,O).
a) Crear el DT
b) Crear la Matriz de transiciones
c) Decir como separa este analizador léxico la entrada: (Aplicando la formula)
AHB = 85O+ A*01B+1

10. Analice el siguiente problema y resuelva los incisos indicados:


Diptongos:
Cuando en una sílaba hay dos vocales juntas, una de ellas es abierta y la otra cerrada
o bien ambas son cerradas se dice que hay diptongo.
Ejemplos: ca-len-da-rio, aire, causa, aceite, deuda, boina
Triptongos:
Cuando en una sílaba hay tres vocales, habrá triptongo. En los triptongos, las
vocales de los extremos deben ser cerradas y la del medio debe ser abierta
Ejemplos: a-ve-ri-güáis, limpiáis, acariciéis, miau

Nota: las vocales abiertas son (a, e, o) y las vocales cerradas son (i, u)
a) Elabora la Expresión Regular asociada a los diptongos
b) Elabora la Expresión Regular asociada a los Triptongos
c) Elabora el patrón asociado a la Expresión Regular de los diptongos
d) Elabora un sólo AFD para reconocer Diptongos y Triptongos a la vez.

11. Elabore diagrama de transiciciones para determinar si un número pertenece al conjunto


de NUMEROS ROMANOS en el intervalo 1..3000.
La numeración romana utiliza siete letras mayúsculas a las que corresponden los siguientes
valores:
Letras I V X L C D M
Valores 1 5 10 50 100 500 1.000
Ejemplos: XVI = 16; LXVI = 66
Si a la derecha de una cifra romana se escribe otra igual o menor, el valor de ésta se suma a
la anterior.
Ejemplos: VI = 6; XXI = 21; LXVII = 67
La cifra "I" precediendo a la "V" o la "X", les resta una unidad; la "X", precediendo a la "L"
o a la "C", les resta diez unidades y la "C", precediendo a la "D" o la "M", les resta cien
unidades.
Ejemplos: IV = 4; IX = 9; XL = 40; XC = 90; CD = 400; CM = 900
En ningún número se puede poner una misma letra más de tres veces seguidas.
Ejemplos: XIII = 13; XIV = 14; XXXIII = 33; XXXIV = 34
La "V", la "L" y la "D" no pueden duplicarse porque otras letras ("X", "C", "M")
representan su valor duplicado.
Ejemplos: X = 10; C = 100; M = 1.000
Si entre dos cifras cualesquiera existe otra menor, ésta restará su valor a la siguiente.
Ejemplos: XIX = 19; LIV = 54; CXXIX = 129
Algunos números romanos
1 = I 2 = II 3 = III 4 = IV 5 = V 6 = VI
7 = VII 8 = VIII 9 = IX 10 = X 11 = XI 12 = XII
13 = XIII 14 = XIV 15 = XV 16 = XVI 17 = XVII 18 = XVIII
19 = XIX 20 = XX 21 = XXI 29 = XXIX 30 = XXX 31 = XXXI
39 = XXXIX 40 = XL 50 = L 51 = LI 59 = LIX 60 = LX
61 = LXI 68 = LXVIII 69 = LXIX 70 = LXX 71 = LXXI 74 = LXXIV
75 = LXXV 77 = LXXVII 78 = LXXVIII 79 = LXXIX 80 = LXXX 81 = LXXXI
88 = LXXXVIII 89 = LXXXIX 90 = XC 91 = XCI 99 = XCIX 100 = C
101 = CI 109 = CIX 114 = CXIV 149 = CXLIX 399 = CCCXCIX 400 = CD
444 = CDXLIV 445 = CDXLV 449 = CDXLIX 450 = CDL 899 = DCCCXCIX 900 = CM
989 = CMLXXXIX 990 = CMXC 999 = CMXCIX 1.000 = M

12. Compruebe si las expresiones regulares son equivalentes:


1(0 | 1) (0 | 1)1 y 1001 | 1011 | 1101 | 1111

13. Identificar los lexemas que constituyen los tokens en los siguientes programas.
Proponer nombres razonables para los tokens.
Pascal:
function max ( i , j : integer ) : integer ;
{
return maximum of integers i and j
}
begin
i f i > j then max : = i
else max : = j
end ;
C:
int max ( int i , int j ) {
/ _ r e t u r n maximum of integ er s i and j _ /
return i > j ? i : j ;
}

Fortran 77:
FUNCTION MAX ( I , J )
C RETURN MAXIMUM OF INTEGERS I AND J
IF ( I . GT . J ) THEN
MAX = I
ELSE
MAX = J
END IF
RETURN

14. Describir los lenguajes representados por las siguientes expresiones regulares:
a) 0 (0 | 1)* 0
b) (( e | 0 ) 1* )*
c) (0 | 1)* 00 (0 | 1)*
d) (0 | e)( 1 | 10)*
e) (0 | 1)* 011
f) 0* 1* 2*

15. Dado el alfabeto _ = {a, b} represente los siguientes lenguajes mediante una expresión
regular (si ello es posible).
a) Cadenas de a’s y b’s comenzando con a
b) Cadenas de a’s y b’s que contengan un numero par de a’s.
c) Cadenas que acaben en ab y que tengan al menos cuatro caracteres de longitud.

16. Dado el alfabeto _ = {0, 1} represente los siguientes lenguajes mediante una expresión
regular (si ello es posible).
a) Todas las cadenas de 0 y 1 que no contienen la subcadena 011.
b) Cadenas de 0 y 1 con un número par de dígitos 0 y un número impar de dígitos 1.

17. Elaborar un Diagrama de Transiciones para el AFD que funcione como un analizador
léxico, de acuerdo a los siguientes elementos:

18. Complete las siguientes definiciones


a) El _________________ permite mayor interactividad con el código en tiempo de
desarrollo.
b) ________ es un generador automático de analizadores léxicos.
c) Un ___________________ es un programa que toma un archivo fuente y genera un
archivo objeto.
d) El compilador _____________ genera lenguaje objeto para una maquina diferente.
e) El analizador léxico también es conocido como ___________________.
f) La salida teórica de la fase del analizador sintáctico es un ________________________.
g) La _____________________ sirve para guardar y usar la información que se va
generando en las diferentes etapas del compilador.
h) La _________________________ sirve para conseguir que el programa objeto sea más
rápido en la ejecución y necesite menos memoria a la hora de ejecutarse.
i) El __________________ es un programa que acepta como entrada código maquina y lo
traduce a un lenguaje de alto nivel.
j) _______________ se considera uno de los primeros compiladores modernos que tardo en
realizarse 18 años/persona.

19. De respuesta a los siguientes cuestionamientos sobre el Analizador Léxico


d) Cuál es su objetivo
e) Cómo es su funcionamiento
f) Cómo se especifica correctamente
g) Qué recibe como entrada y que da como salida
h) Cuáles son las formas de crear un A. Léxico

20. Dé 3 ejemplos de cadenas pertenecientes a los conjuntos definidos por cada una de las
siguientes expresiones regulares:
a) (1+ (0|1)* 2)+
b) (ba)* ( (a|b) (b|aa) )+
c) x (x|y)+ z | y x*y

21. Defina el lenguaje L mediante una expresión regular.


L = { 12i+1 {a,b}3 02j , i >= 0 y j > 0}

22. Dibuje los AF que reconocen los lenguajes y realice la descripción formal del AFD
i) a*bb
ii) bba*
iii) a(a|b)*
iv) a(ab)*

23. Dibuje el AF para “Todos los números binarios que contienen el grupo 00 por lo menos
una vez”

24. Determine si la palabra “ aaba ” está o no encada uno de los siguientes conjuntos:
a) (a | b)
b) a∗b∗a∗
c) aaa∗ba
d) (aa)∗(ba)∗
e) (aaa)∗b∗a
f) (aaa | bbb)(bb | ba)

25. Dado el siguiente diagrama de transición

i) Determinar las cadenas que son aceptadas o no por el autómata


a) bab b) aaba c) aaaaaab d) babababab
ii) Determinar si los lenguajes dados son aceptados o no por el autómata
a) (a)* b) aa* c) ab*
d) (ab)* e) a*b* f) a(a | b)*

26. Encuentre una expresión regular que represente la intersección de los lenguajes
representados por cada uno de los siguientes pares de expresiones regulares
a) (x | y*) con (x | y)*
b) (x(x | y)*) con ((x | y)*y)
c) (((x | y)y)(x | y)*) con (y(x | y)*y)

27. Determinar y decir en palabras el lenguaje regular que genera el siguiente AF

You might also like