jueves, 10 de octubre de 2019

Gramática formal


Gramática formal


Una gramática formal es una estructura lógico matemática con un conjunto de reglas de formación que definen las cadenas de caracteres admisibles en un determinado lenguaje formal o lengua natural. Las gramáticas formales aparecen en varios contextos diferentes: la lógica matemática, las ciencias de la computación y la lingüística teórica, frecuentemente con métodos e intereses divergentes.


gramática ("G") desde el punto de vista de la teoría de autómatas es un conjunto finito de reglas que describen toda la secuencia de símbolos pertenecientes a un lenguaje específico L. Dos gramáticas que describan el mismo lenguaje se llaman gramáticas equivalentes.

Una gramática es una estructura algebraica formada por cuatro elementos fundamentales:

G = { NT, T, S, P }
donde
NT es el conjunto de elementos No Terminales
T es el conjunto de elementos Terminales
S es el Símbolo inicial de la gramática
P es el conjunto de Reglas de Producción



Consideremos la gramática: G = (V, Σ, Q0, P), donde
V := {Q0}, Σ := {a, b}, , P := {(Q0, aQ0),(Q0, λ)}.
El sistema de transición tiene por configuraciones
S := {Q0, a, b}
y un ejemplo de una computación sería:
aaQ0bb → aaaQ0bb → aaaaQ0bb → aaaaλbb = aaaabb.
Nótese que las dos primeras veces hemos usado la regla de reescritura (Q0, aQ0) y la última vez hemos usado (Q0, λ).


Ejemplo 2:

Consideremos la gramática: G = (V, Σ, Q0, P), donde
V := {Q0}, Σ := {a, b}, , P := {Q0 7→ aAb, aA 7→ aaAb|λ}.
Un ejemplo de una computación sería:
Q0 7→ aAb 7→ aaAb 7→ aab.
Curiosamente, el lenguaje especificado también puede ser especificado por esta otra gramática:
V := {Q0}, Σ := {a, b}, , P := {Q0 7→ b|aA, A 7→ aA|b}.
                        

Ejemplo 3:

La gramática que genera el lenguaje
L = {λ, a, aa, aaa, . . .}
se puede describir de la siguiente manera
V = {hQi}, Σ = {a, b},
donde las producciones serían:
hQi = ahQi
hQi = λ.

No hay comentarios:

Publicar un comentario

Traductores: Ensambladores, compiladores e intérpretes

  Ensambladores:  son los encargados de transformar o traducir los programas escritos en ensamblador a su equivalente en código maquin...