You are on page 1of 3

Universidad de la Rep

ublica
Facultad de Ciencias
Centro de Matem
atica

Introduccion a la Computacion Curso 2007

ctico 0: EBNF y Diagramas Sinta


cticos
Pra
El objetivo de este practico es ejercitar el uso del EBNF y los Diagramas Sintacticos para
definir lenguajes.
Una de las aplicaciones de estos conceptos es la definicion de la sintaxis de lenguajes de
programacion y la creacion de compiladores para estos lenguajes. Existen programas como
Yacc los cuales pueden a partir de la especificacion de un lenguaje generar un programa de
computadora que verifica automaticamente si un archivo de texto contiene o no una tira
del lenguaje. Esto sirve por ejemplo para generar verificadores de sintaxis para lenguajes
como Pascal. Tambien juega un rol en la creacion de compiladores para diversos lenguajes
de programacion.
Este tipo de conceptos tambien pueden ser utiles a la hora de dise
nar programas que necesitan verificar la estructura de entradas del usuario. Un ejemplo de esto son los formularios
web. Muchos lenguajes de programacion como Pearl utilizan notaciones similares al EBNF
(llamadas Expresiones Regulares) para facilitar la creacion de este tipo de programas.
El Instituto de Computacion de Facultad de Ingeniera dicta un curso llamado Teora
de Lenguajes en el que se estudia detalladamente el tema de los lenguajes formales (a
los interesados se les recomienda preguntar en el CMAT por las posibilidades para realizar
materias de Computacion como opcionales de la Licenciatura en Matematica).
1. Describir por extension los siguientes lenguajes y sus respectivos vocabularios:
a) Los digitos
b) Las letras de su nombre de pila
c) Los nombres de pila de 5 compa
neros de clase
d ) La conjugacion en presente de la tercera persona de los verbos: saltar, caminar,
bailar.
e) La concatenacion de los dos lenguajes anteriores donde concatenar dos lenguajes
es formar el lenguaje cuyas cadenas se obtienen pegando la de los dos lenguajes.
Formalmente:
L1 L2 = {xy : x L1 y y L2 }
2. Describir los siguientes lenguajes y contruir un Diagrama Sintactico para cada uno:
OJOS = 0{11}0.
CEROCIEN = {0|100}.
ESP EJOS = {01|10}.

3.

a) Indicar en las siguientes tablas si la tira en cada fila pertenece al lenguaje cuya
definicion en EBNF se da en cada columna (para ser completamente formales se
debera dar una expresion del tipo L = expr. donde expr es la expresion en la
tabla y el punto indica el fin de la definicion).
b) Escribir una tira de longitud al menos 5 que contenga al menos un 1 de cada uno
de los lenguajes o explicar porque no existe tal tira.
c) Escribir el Diagrama Sintactico Correspondiente a cada uno de los lenguajes.
{0|1}1

[0|1]{0|1}

[0]{10}[1]

< nula >


0
01
010
1101
010101
[1]({0}|1)

[01|10|{0}]

{0|1}10

< nula >


0
01
010
1101
010101
4. Escribir los Diagramas Sintacticos y las EBNF correspondientes a los siguientes lenguajes:
a) Tiras definidas sobre el vocabulario {0, 1} que contienen la tira 000 y/o la tira
111.
b) Tiras que a lo sumo tienen dos 1s.
c) Tiras con numero par de 0s.
d ) Las CIs incluyendo los dos . y el -. Por ejemplo: 1.456.987-3
e) Los n
umeros de telefono celulares incluyendo un -, un , o nada como separador
de los primeros 3 dgitos, los cuales solo pueden ser: 099, 096 o 094. Por ejemplo:
099-123456, 096 654321 o 094123456.
f ) Las direcciones de correo electronico con dominio en Uruguay. Asuma que el
dominio UY esta dividido en los sub-dominios: edu.uy, org.uy, com.uy, net.uy,
gub.uy y mil.uy. Cada organizacion puede dividir su dominio en tantos subdominios como desee y cuantas veces desee. Solo se pueden usar letras y dgitos aparte de los caracteres reservados @ y .. Ejemplos de direcciones validas:
jperez@seccS.dptoD.areaA.emprE.com.uy y tito22@org22.org.uy. Ejemplos de direcciones no validas: estudioso@edu.uy, yoruga@uy, anonimo@.com.uy y anonimo2@..com.uy no seraan validas.
2

g) Idem al anterior, pero para los dominios que se usan en todo el mundo. Para
simplificar asuma que:
1) en todos los pases se divide en los mismos sub-dominios,
2) los codigos de los pases son cualquier par de letra (no importa que no exista),
3) y que por razones historicas existen dominios sin codigo de pas. Asuma que
son los mismos, es decir: edu, org, com, net, gub y mil.
5. Dado el siguiente Diagrama Sintactico y suponiendo que digito = (0|1|2|3|4|5|6|7|8|9).:

Escribir un EBNF para cada diagrama y decidir cuales de las siguientes tiras pertenecen
a dicho lenguaje.
2
14 9
2
(34 + 20) 2 >= 3

3
()
((23))
(2 = 2) = (3 = 3)

2+2=3
(34 + 20) 2 <= 3
1 + 2 3 4 <> 1000

2 (2 + 3) >= 3
2 == 3
4 5

You might also like