file (1)

3
Universidad de la Rep´ ublica Facultad de Ciencias Centro de Matem´ atica Introducci´ on a la Computaci´ on – Curso 2007 Pr´ actico 0: EBNF y Diagramas Sint´ acticos El objetivo de este pr´ actico es ejercitar el uso del EBNF y los Diagramas Sint´ acticos para definir lenguajes. Una de las aplicaciones de estos conceptos es la definici´ on de la sint´ axis de lenguajes de programaci´ on y la creaci´ on de compiladores para estos lenguajes. Existen programas como Yacc los cuales pueden a partir de la especificaci´ on de un lenguaje generar un programa de computadora que verifica autom´ aticamente si un archivo de texto contiene o no una tira del lenguaje. Esto sirve por ejemplo para generar verificadores de sint´ axis para lenguajes como Pascal. Tambi´ en juega un rol en la creaci´ on de compiladores para diversos lenguajes de programaci´ on. Este tipo de conceptos tambi´ en pueden ser utiles a la hora de dise˜ nar programas que ne- cesitan verificar la estructura de entradas del usuario. Un ejemplo de esto son los formularios web. Muchos lenguajes de programaci´ on como Pearl utilizan notaciones similares al EBNF (llamadas Expresiones Regulares) para facilitar la creaci´ on de este tipo de programas. El Instituto de Computaci´ on de Facultad de Ingenier´ ıa dicta un curso llamado “Teor´ ıa 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 Computaci´ on como opcionales de la Licenciatura en Matem´ atica). 1. Describir por extensi´ on 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 conjugaci´ on 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: L 1 · L 2 = {xy : x L 1 y y L 2 } 2. Describir los siguientes lenguajes y contruir un Diagrama Sint´ actico para cada uno: OJOS = ‘0’{‘11’}‘0’. CEROCIEN = {‘0’|‘100’}. ESPEJOS = {‘0’‘1’|‘1’‘0’}. 1

description

plp

Transcript of file (1)

  • Universidad de la RepublicaFacultad de CienciasCentro de Matematica

    Introduccion a la Computacion Curso 2007

    Practico 0: EBNF y Diagramas Sintacticos

    El objetivo de este practico es ejercitar el uso del EBNF y los Diagramas Sintacticos paradefinir lenguajes.

    Una de las aplicaciones de estos conceptos es la definicion de la sintaxis de lenguajes deprogramacion y la creacion de compiladores para estos lenguajes. Existen programas comoYacc los cuales pueden a partir de la especificacion de un lenguaje generar un programa decomputadora que verifica automaticamente si un archivo de texto contiene o no una tiradel lenguaje. Esto sirve por ejemplo para generar verificadores de sintaxis para lenguajescomo Pascal. Tambien juega un rol en la creacion de compiladores para diversos lenguajesde programacion.

    Este tipo de conceptos tambien pueden ser utiles a la hora de disenar programas que ne-cesitan verificar la estructura de entradas del usuario. Un ejemplo de esto son los formulariosweb. 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 Teorade Lenguajes en el que se estudia detalladamente el tema de los lenguajes formales (alos interesados se les recomienda preguntar en el CMAT por las posibilidades para realizarmaterias 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 companeros 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 lenguajeses 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}.ESPEJOS = {01|10}.

    1

  • 3. a) Indicar en las siguientes tablas si la tira en cada fila pertenece al lenguaje cuyadefinicion en EBNF se da en cada columna (para ser completamente formales sedebera dar una expresion del tipo L = expr. donde expr es la expresion en latabla 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 unode 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 >

    0010101101010101

    [1]({0}|1) [01|10|{0}] {0|1}10< nula >

    0010101101010101

    4. Escribir los Diagramas Sintacticos y las EBNF correspondientes a los siguientes len-guajes:

    a) Tiras definidas sobre el vocabulario {0, 1} que contienen la tira 000 y/o la tira111.

    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 numeros de telefono celulares incluyendo un -, un , o nada como separadorde 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 eldominio 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 sub-dominios como desee y cuantas veces desee. Solo se pueden usar letras y dgi-tos aparte de los caracteres reservados @ y .. Ejemplos de direcciones validas:[email protected] y [email protected]. Ejemplos de di-recciones no validas: [email protected], yoruga@uy, [email protected] y [email protected] no seraan validas.

    2

  • g) Idem al anterior, pero para los dominios que se usan en todo el mundo. Parasimplificar 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 pertenecena dicho lenguaje.

    2 3 2 + 2 = 3 2 (2 + 3) >= 314 9 () (34 + 20) 2 = 3 (2 = 2) = (3 = 3)

    3