Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Lenguajes de Programacion Práctica # 1 Tema 1: Descripción de Lenguajes BNF (BACKUS NAUS FORM) 1. Dado el alfabeto Σ = {a, b}, sea L el lenguaje de las palabras en las que se cumplen todas las condiciones siguientes: ✔ Al menos tienen 2 símbolos “b”. ✔ En ningún sitio tienen 2 o más símbolos, “a” consecutivos. ✔ Si la palabra empieza por “b”, no podrá terminar por “a”. Palabras válidas: bb, bab, babbbabab, abba, abbbaba, abb Palabras no válidas: b, aabb, bba, baab. Se desea que se proporcione una gramática que describa el mismo lenguaje mediante el uso de BNF. 2. Defina una gramática utilizando notación BNF para cada uno de los siguientes conjuntos : ✔ Identificadores comenzando por una letra seguida de cero o mas letras, dígitos o caracteres de subrayado. Por ejemplo: Saldo_1. ✔ Las constantes hexadecimales sin signo del Lenguaje C que comienzan con 0x o 0X seguido de uno o más dígitos hexadecimales. Por ejemplo: 0x80, 0X1FA. ✔ Constantes binarias enteras con signo opcional y terminado en la letra B. Por ejemplo: −101B, +10010B. ✔ Constantes reales hexadecimales con signo opcional. Por ejemplo: −1AF.2 ✔ Cadenas de letras minúsculas que contienen las cinco vocales en orden. Por ej.: lxacdeyyitoputt. 3. Para cada ejemplo del ejercicio 2, muestre el árbol de sintaxis asociado. 4. En el sistema operativo VENTANAS, los archivos se nombran de una forma muy simple, con varios elementos escritos consecutivamente y sin blancos intermedios: ✔ Unidad: Es un elemento opcional, que consiste en una letra (normalmente las primeras del alfabeto: A, B, C...) seguida de dos puntos “:”. ✔ Directorio: Es un elemento opcional encerrado entre dos barras “/”, que consta de nombres de directorios separados a su vez por barras “/”. El nombre de un directorio es una secuencia cualquiera de caracteres alfanuméricos. ✔ Nombre y extensión: El primero es obligatorio, mientras que la segunda es opcional; en caso de escribirse la extensión, ambos elementos se separan con un punto. Los dos campos están formados por caracteres alfanuméricos, aunque el nombre del archivo no tiene restricción de longitud y la extensión del archivo se limita a un máximo de 3 caracteres. Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Lenguajes de Programacion Ejemplos: C:/VENTANAS/TEMP/TRASH PRACTICA_0.DOC A:PRACTICA_0.DATA a) Defina una gramática que describa la sintaxis de los archivos del sistema operativo VENTANAS, especificada en EBNF. b) Para la gramática definida en la parte (a) muestre el diagrama sintáctico equivalente. 5. En una lista de nombres en español, cada elemento se separan entre si con comas y los dos últimos con la conjunción “y”. En el caso en el que se haga referencia a un solo nombre, estará excluido de la regla anterior. Por ejemplo: Ejemplos: Luis Luis y Lopy Juan, Cesar y Sosa Mata, Gil, Elisa, Sosa y Elisa Escriba mediante BNF, una gramática que permita describir estas listas. 6. Se tiene un archivo de texto que contiene un conjunto de referencias bibliográficas usadas con fines académicos. Las referencias bibliográficas se estructuran de la siguiente manera: ✔ Se inicia con un autor o autores separados por punto y coma entre sí, y finaliza en punto; seguidamente el título del libro, luego la edición, después la editorial del libro y por último el año en que fue editado dicho libro. ✔ El autor consta del apellido en letras mayúsculas y la inicial del nombre. El apellido y la inicial del nombre están separados por una coma. ✔ El título del libro comienza y termina con comillas dobles y está formado por un conjunto de palabras que empiezan con letra mayúscula. Las palabras entre sí se separan por espacios en blanco. ✔ La edición consta de un entero positivo seguido de la palabra edición y finaliza en un punto. La edición y el título se encuentran separados entre sí por una coma. ✔ La editorial del libro es un conjunto de palabras en letras mayúsculas y finaliza en coma. ✔ El año de la edición es un entero positivo de cuatro dígitos. Escriba una gramática usando notación EBNF que permita representar las referencias del archivo de texto. 7. Escriba una gramática usando BNF, que permita reconocer expresiones matemáticas de números enteros positivos. Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Lenguajes de Programacion 8. Proponga una definición sintáctica en la notación EBNF para denotar URLs. Un URL (Universal Resource Locator) es una alternativa para especificar recursos en internet de una manera homogénea. Para efectos de este problema, se propone un subconjunto de lo que es realmente un URL, el cual es descrito a continuación: ✔ Un URL puede comenzar con el protocolo mediante el cual se desea ubicar el recurso (http://, ftp://, file://, news://). ✔ Luego se dispone de una parte opcional donde se especifica la cuenta de usuario y el password separados entre sí por dos puntos (‘:’). Esta parte finaliza con ‘@’. ✔ Seguidamente se especifica el identificador del host (ya sea una dirección IP o un nombre). ✔ Finalmente, restan componentes opcionales que permiten diferenciar el recurso definido por el URL, los cuales son (en orden): 1. Camino o directorio 2. Nombre del documento 3. Espacio para argumentos: empieza con el carácter ‘?’. La convención que se sigue para especificar los argumentos es mediante un par, formado por el nombre del argumento y su valor (separados entre si por el caracter ‘=’). Los pares de argumentos se separan entre si por un ‘&’ excepto el último par que se separa con ‘|’. Nota: Para “Camino o Directorio” y “Nombre del Documento” se usaran las especificaciones del problema 4 para “Directorio” y “Nombre y Extensión” respectivamente. Ejemplos: https://mail.google.com/mail ftp://191.168.0.23/ http://localhost:8080/index.jsp ftp://olp_estud:[email protected]/pub/dos/compiladores/prolog. zip http://www.example.com/cgi-bin/count.cgi?display=counter&width=6| file=olp.dat