sábado, 2 de junio de 2007

BNF y GLC

1. ¿Qué es el BNF?

El Backus-Naur form (BNF) (también conocido como Backus-Naur formalism, Backus normal form o Panini-Backus Form) es una metasintaxis usada para expresar gramáticas libres de contexto: es decir, una manera formal de describir lenguajes formales.

El BNF se utiliza extensamente como notación para las gramáticas de los lenguajes de programación de la computadora, de los sistemas de comando y de los protocolos de comunicación, así como una notación para representar partes de las gramáticas de la lengua natural (por ejemplo, el metro en la poesía de Venpa). La mayoría de los libros de textos para la teoría y/o la semántica del lenguaje de programación documentan el lenguaje de programación en BNF. Algunas variantes, tales como la augmented Backus-Naur form (ABNF), tienen su propia documentación.


Descripción

El BNF fue nombrado originalmente después de que John Backus y más adelante (con la sugerencia de Donald Knuth) también después de Peter Naur. Eran dos pioneros en informática, especialmente en el arte del diseño del compilador. La Backus-Naur Form o las gramáticas de BNF tiene semejanzas significativas a las reglas de la gramática de Pāṇini, y a veces también se conoce como Panini-Backus Form . El BNF fue creado como parte de crear las reglas para ALGOL 60.

Una especificación de BNF es un sistema de reglas de la derivación, escrito como


donde <símbolo> es un nonterminal, y la expresión consiste en secuencias de símbolos y/o secuencias separadas por la barra vertical, '', indicando una opción, el conjunto es una posible substitución para el símbolo a la izquierda. Los símbolos que nunca aparecen en un lado izquierdo son terminales.


Ejemplo:

Como ejemplo, considere este BNF para una dirección postal de los E.E.U.U




Esto se traduce a español como:

Un dirección postal consiste de un nombre, seguido por una dirección, seguida por un código postal. Una parte "personal" consiste en un nombre o una inicial seguido(a) por un punto.

Un nombre consiste de: una parte pesonal seguida por un apellido seguido opcionalmente por una jerarquía o el trato que se la da a la persona (Jr., Sr., o número dinástico) y un salto de línea (end-of-line), o bien una parte personal seguida por un nombre (esta regla ilustra el uso de la repetición en BNFs, cubriendo el caso de la gente que utiliza múltiples nombres y los nombres medios y/o las iniciales).

Una dirección consiste de una especificación opcional del departamento, seguido de un número de casa, seguido por el nombre de la calle, seguido por un salto de línea (end-of-line).

Un apartado posta consiste de una ciudad, seguida por una coma, seguida por un código del estado (recuerden que es un ejemplo que ocurre en EU), seguido por un código postal y este seguido por un salto de línea (end-of-line).

Observe que muchas cosas (tales como el formato de una parte personal, de una especificación del apartamento, o código postal) están dejadas sin especificar aquí. Si es necesario, pueden ser descritas usando reglas adicionales de BNF, o dejadas como abstración si es inaplicable para el propósito actual.

Bastante interesante, la sintaxis de BNF se puede representar en BNF como sigue:



Esto asume que no hay Whitespace necesario para la interpretación apropiada de la regla. El se presume para ser el carácter ", y el para ser el fin de línea apropiado especificado (en ASCII, retorno de carro y/o línea nueva, dependiendo del sistema operativo). El y el deben ser substituidos con nombre/etiqueta o el texto literal de una regla declarada, respectivamente.


Variantes

Hay muchas variantes y extensiones de BNF, posiblemente conteniendo algunos o todos los comodines de expresiones regulares como un "*" o "+". El Extended Backus-Naur form (EBNF) es una variante común. De hecho el ejemplo anterior no es la forma pura inventada para el informe del ALGOL 60. La notación de los corchetes "[ ]" fue introducida algunos años más tarde en la definición de PL/I de la IBM pero ahora se reconoce universal. La ABNF es otra extensión usada comúnmente para describir protocolos del IETF.

Las expresiones gramaticales de analizadores sintácticos construidas en BNF y las notaciones de expresión regular para formar una clase alternativa de la gramática formal, que es esencialmente analítica más que generativa en carácter.



2. Obtenga la GLC para el lenguaje de los paréntesis bien balanceados


Proponiendo las reglas
1. S → SS
2. S → (S)
3. S → ()

Aplicando las reglas planteadas


NOTA: el subíndice utilizado indica la regla utilizada





domingo, 20 de mayo de 2007

Expresiones Regulares a AF y viceversa

1.Obtenga el AF equivalente a las siguientes ER (Expresiones Regulares)

Primero que nada, cabe destacar que para la realización de dichas ejercicios se hace uso de las siguientes operaciones:




Una vez teniendo esto, procedamos a la solución:



  • (ab+cb)* bc + a*c (ba+ca)

Siguiendo el procedimiento colocamos dos estados y en medio del conector entre estos, la expresión regular. Posteriormente, dependiendo de la operación realizada ( suma, producto, o u operador estrella) transformamos a su expresión compleja como se observa:


continuando tenemos:

Finalmente tenemos:




  • (a* + b* ) *
Para dicho ejercicio procedemos de igual manera que el anterior, sólo que ahora modificaremos la expresión regular dada:



como se observa, tenemos dos estados que tienen una variable con (*) lo que implica que debemos transformar nuevamente , obteniendo así:






      • (c+ba)* aa (ab+c) *

      Realizando el mismo procedimiento tenemos:




      Como se puede observar tenemos aún variables operadas por productos y por el operador (*), por lo que simplificamos una vez más obteniendo:



      Finalmente






      2. Obtenga la ER equivalente al AF mostrado

      Para dichos ejercicios se procede de igual manera pero en reversa, es decir , ahora partiremos de una Automata Finito y lo convertiremos en una expresión regular.


      a)

      Este autómata no se puede expresar en Expresión Regular ya que observamos que en sentido de las flechas que van hacia el estado q3 , es el mismo, y el autómata en este caso no llegaría al estado final por los caminos (a,b,a) , (a,b,b) y (a,a,b).




      b)
      Procediendo de manera contraria a lo que solíamos hacer en los primeros tres ejemplos, tenemos:

      Volviendo a simplificar

      Finalmente tenemos:


      Por lo que, la expresión regular resultante es [(a+b)[a(bba* + aa) + ba]](b*)











































































































































































































































































































































































































































































































































































































      martes, 1 de mayo de 2007

      ER

      Diseñe la ER que construye el lenguaje en {a,b,c}, en el que las palabras deben empezar con “abc”, contienen dos veces la subcadena “aca”y terminan con “cba”.

      (abc) (C1) aca . aca (C2) (cba)

      (abc) . (a+b+c+ab+cb) aca . aca (a+b+c+ab+cb) (cba)

      (abc) . (a+b+c+ab+cb)* aca . aca (a+b+c+ab+cb)* (cba)

      miércoles, 18 de abril de 2007

      Diseñar el AFN que acpeta el lenguaje en {a,b} en donde las palabras tienen longitud par y contienen la subcadena “aba”.

      Al diseñar ducho autómata tenemos:









      Convirtiendo a grafo AFD por medio de la tabla de estados tenemos:







      Nuestra nueva tabla nos queda de la siguiente manera:








      En donde los cuadros verdes representan las transición es de estados a probar para ver si nuestros diagrama se puede simplificar.

      Probando para Q5 y Q2

      Eliminando el estado Q5 y por consiguiente todas las transiciones que salen de él se eliminan y las que entran se redirigen al estado equivalente.





      de dicha eliminación de estado concluimos que este autómata es equivalente y además como se hizo la eliminación del estado Q5, todos los estados que continene dicha fila serán distinguibles y por tanto nuestra tabla queda de la siguiente manera: en donde las X representan los estados distiguibles y el cuadrito azul significa que son los estados no distigibles








      Si observamos los caso de la combinación de los estados (Q2,Q1) , (Q3,Q1), (Q3,Q2), se visualiza que al eliminar uno de los dos estados , uno de los estados del autómata queda volando, lo cual no es aceptable.

      Probando con Q4 y Q2

      Eliminando Q4














      Por lo tanto nuestra tabla nos queda de la siguiente manera:















      Como se puede observar nuestro diagrama final mostrado anteriormente es el autómata MC y para obtener a M aplicamos (MC)C quedando como nuestro diagrama final el siguiente:



      miércoles, 21 de marzo de 2007

      Tarea 2: Estados AFD

      1. Diseñar por método de conjuntos de estados el AFD en {a,b} que acepta las palabras que empiezan con “abb” y no terminana con “baa”.



      2. Diseñar por método de conjuntos de estados el AFD en Σ {B , , } en la cual las palabras que contienen BB no contienen la subcadena







      miércoles, 7 de marzo de 2007

      DISEÑO DE AUTÓMATAS


      • Diseñe el AFD que en Σ = { a, b} , aceptas las palabras que contienen exactamente 3 b`s

      Ejemplos de palabras aceptadas:

      bbab, bbb, ababb, bbaba,…


      Ejemplos de palabras no aceptadas:

      bbaa, bbabb, bbbb, b, ab, …


      • Diseñe el AFD que en Σ = { a, b}, acepta las palabras que tienen como longitud 6


      Ejemplos de palabras aceptadas:

      aaaaaa, baabaa, babaab, aaabbb,…


      Ejemplos de palabras no aceptadas:

      a, b, ba, aab, aabbbaa,…



      sábado, 17 de febrero de 2007

      La sabiduría es un adorno en la prosperidad y un refugio en
      la adversidad.



      Aristóteles