Gramática formal

La gramática formal o simplemente gramática en la teoría de los lenguajes formales  es una forma de describir un lenguaje formal, es decir, de seleccionar un determinado subconjunto del conjunto de todas las palabras de algún alfabeto finito . Hay gramáticas generativas y de reconocimiento (o analíticas ): las primeras establecen las reglas con las que puedes construir cualquier palabra del idioma, y ​​las segundas te permiten determinar a partir de una palabra dada si está incluida en el idioma o no.

Términos

Gramáticas generativas

Las palabras del lenguaje dadas por la gramática son todas secuencias de terminales que se emiten (generan) a partir del no terminal inicial de acuerdo con las reglas de salida.

Para configurar la gramática, debe configurar los alfabetos de terminales y no terminales, un conjunto de reglas de inferencia y también seleccionar el inicial en el conjunto de no terminales.

Entonces, la gramática se define por las siguientes características:

Conclusión

Una salida es una secuencia de líneas que consta de terminales y no terminales, donde la primera línea es una línea que consta de un no terminal inicial, y cada línea subsiguiente se obtiene de la anterior reemplazando alguna subcadena de acuerdo con una (cualquiera) de las reglas La cadena final es una cadena que consta completamente de terminales y, por lo tanto, es una palabra del idioma.

La existencia de una derivación para una determinada palabra es un criterio de su pertenencia a la lengua definida por la gramática dada.

Tipos de gramáticas

Según la jerarquía de Chomsky , las gramáticas se dividen en 4 tipos, cada subsiguiente es un subconjunto más limitado del anterior (pero también más fácil de analizar):

Además, hay:

Aplicación

Un ejemplo son las expresiones aritméticas

Considere un lenguaje simple que define un subconjunto limitado de fórmulas aritméticas que consta de números naturales , paréntesis y signos aritméticos. Vale la pena señalar que aquí en cada regla en el lado izquierdo de la flecha solo hay un símbolo no terminal. Estas gramáticas se denominan libres de contexto .

Alfabeto terminal:

= {'0','1','2','3','4','5','6','7','8','9','+','-', '*','/','(',')'}

Alfabeto no terminal:

{ FÓRMULA, SIGNO, NÚMERO, NÚMERO }

Normas:

1. FÓRMULA FÓRMULA SIGNO FÓRMULA (una fórmula tiene dos fórmulas conectadas por un signo) 2. NÚMERO DE FÓRMULA (la fórmula es un número) 3. FÓRMULA (FÓRMULA) (una fórmula es una fórmula entre paréntesis) 4. FIRMAR + | - | * | / (el signo es más o menos, o multiplicar o dividir) 5. NÚMERO DÍGITO (un número es un número) 6. NÚMERO NÚMERO DÍGITO (un número es un número y un número) 7. NÚMERO 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 (el dígito es 0 o 1, o ... 9)

Inicial no terminal:

FÓRMULA

Conclusión :

Derivemos la fórmula (12+5) usando las reglas de inferencia enumeradas. Para mayor claridad, los lados de cada reemplazo se muestran en pares, en cada par se subraya la parte reemplazada.

FÓRMULA (FÓRMULA) ( FÓRMULA ) ( FÓRMULA SIGNO FÓRMULA ) (FÓRMULA SIGNO FÓRMULA) (FÓRMULA + FÓRMULA) ( FÓRMULA + FÓRMULA ) ( FÓRMULA + NÚMERO ) ( FÓRMULA + NÚMERO ) ( FÓRMULA + NÚMERO ) ( FÓRMULA + NÚMERO ) ( FÓRMULA + 5 ) ( FÓRMULA + 5) ( NÚMERO + 5) ( NÚMERO + 5) ( NÚMERO DÍGITO + 5) ( NÚMERO DÍGITO + 5) ( DÍGITO DÍGITO + 5) ( DÍGITO DÍGITO + 5) ( 1 DÍGITO + 5) (1 DÍGITO + 5) (1 2 + 5)


Gramáticas analíticas

Las gramáticas generativas no son el único tipo de gramáticas, pero son las más comunes en las aplicaciones de programación. A diferencia de las gramáticas generativas, la gramática analítica (de reconocimiento) define un algoritmo que le permite determinar si una palabra determinada pertenece al idioma. Por ejemplo, cualquier lenguaje regular puede reconocerse usando una gramática definida por una máquina de estado , y cualquier gramática libre de contexto puede reconocerse usando un autómata basado en pila . Si una palabra pertenece a un idioma, dicho autómata construye su salida de forma explícita, lo que hace posible analizar la semántica de esta palabra.

Véase también

Notas

  1. Matemáticas discretas, 2006 , p. 486.
  2. Matemáticas discretas, 2006 , p. 487.

Literatura