Sie sind auf Seite 1von 4

GRAMATICA FORMAL

3.1 Introducción

Una gramática formal es un modelo matemático que permite especificar


un lenguaje es decir, es un conjunto de reglas capaces de generar
todas las posibilidades combinatorias de ese lenguaje.

Una gramática formal es una cuádrupla G = {N, Σ, P, S} donde:

• N es un conjunto de símbolos no terminales (variables).


• Σ es el alfabeto o conjunto de símbolos terminales (constantes).
• Debe cumplirse que N ∩ Σ = φ , denotaremos Σ es el alfabeto de la
gramática
• S ∈ N es el símbolo inicial.
• P es el conjunto de reglas de producción, de la forma P = { α→ β |
α ∈ Σ*N Σ*, β ∈ Σ*N Σ*N}, es decir, la cadena α debe contener al
menos una variable, que puede estar rodeada de un contexto
dependiendo el tipo de gramática.

Hay cuatro tipos de gramáticas formales que generan lenguajes


formales, según la jerarquía de Chomsky:

 Gramáticas sin restricciones, que incluye a todas las gramáticas


formales. Estas gramáticas generan todos los lenguajes capaces de
ser reconocidos por una maquina de Turing. Los lenguajes son
conocidos como lenguajes recursivamente enumerables.
 Gramáticas sensibles al contexto, generan los lenguajes
dependientes al contexto, que son exactamente todos aquellos
lenguajes reconocidos por una maquina de Tuning.
 Gramáticas libres al contexto, generan los lenguajes
independientes del contexto, que son aquellos que pueden ser
reconocidos por un autómata con pila.
 Gramáticas regulares, generan los lenguajes regulares que son
aquellos que pueden ser aceptados por un autómata finito o que se
obtienen por medio de expresiones regulares.

Gramáticas Regulares

OIGC TEORIA MATEMATICA 1


Una gramática regular es una gramática formal G = {N, Σ, S, P}, cuyas
reglas de producción P tienen la forma α → β , donde α es un no
terminal N y β tiene un solo terminal T, posiblemente antecedido o
seguido por un no terminal N como máximo. La regla S → ε esta
permitida si S no aparece en la parte derecha de ninguna regla. Se
pueden clasificar en Regular izquierda o derecha.

En una gramática regular derecha las reglas de producción P son de la


siguiente forma:
 A → a donde A es un símbolo no terminal en N y a un terminal
en T.
 A → aB donde A y B pertenecen a N y a pertenece a T.
 A → ε donde A pertenece a N

En una gramática regular izquierda las reglas de producción P son de la


siguiente forma:
 A → a donde A es un símbolo no terminal en N y a un terminal
en T.
 A → Ba donde A y B pertenecen a N y a pertenece a T.
 A → ε donde A pertenece a N

Ejemplos:

Gramáticas libres del contexto

Una gramática libre de contexto es una gramática formal G = {N, Σ, S,


P}, en la que cada regla de las producciones P es de la forma V → w, en
donde V es un símbolo no terminal N y w es una cadena de terminales Σ
y/o no terminales N. De forma que las producciones pueden tener cero,
una o mas no terminales que aparecen en cualquier lugar del lado
derecho de la producción.

El termino libre de contexto se refiere al hecho de que el no terminal V


puede siempre ser sustituido por w sin tener en cuenta el contexto
(circunstancias en las que se produce el mensaje) en el que ocurra.

Este tipo de gramáticas permiten describir la mayoría de los lenguajes


de programación, además estas gramáticas son suficientemente simples
como para permitir el diseño de eficientes algoritmos de análisis
sintáctico.

OIGC TEORIA MATEMATICA 2


Ejemplo 1:
Diseñe una gramática libre de contexto que genere el lenguaje no
regular { anbn donde: n ≥ 0 }.
Algunas palabras que debe generar la gramática son: ε, ab, aabb,
aaabbb, y así sucesivamente, siempre con la misma cantidad de aes y
bes, además de todas las aes antes de todas las bes.
La gramática G es:
N= { S }
Σ= { a, b}
P: S → aSb | ε
Derivando la palabra aaabbb nos quedaría:
S→ a S b

a S b

aSb

Ejemplo 2:
Diseñe una gramática libre de contexto para expresiones enteras
algebraicas (+, -, *, /), sintácticamente correctas sobre las variables x, y
yz
Algunas palabras que debe generar la gramática son: x + y, x – y, x * y,
x/y, (x + y)/ x * y, etc.
La gramática G es:
N= { S }
Σ= { x, y, z, +, -, *, /, (, )}
P: S → x |y|z|S + S|S - S|S * S|S/S|( S )
Derivando la palabra (x + y) * x – z * y / (x + x) nos quedaría:
S→ S–S
S*S– S*S
(S) * x – z * S/S

(S+S)*x - z* y/(S)

OIGC TEORIA MATEMATICA 3


(x+y)*x - z*y/(S+S)

(x+y)*x – z*y/(x+x)

Ejemplo 3:
Diseñe una gramática libre de contexto que genere el lenguaje no
regular { anbm donde: n ≥ 0 y n ≥ m }.
Algunas palabras que debe generar la gramática son: ε, ab, aabb, aaab,
aaaabbb, etc. Y así sucesivamente, siempre con la misma cantidad o
mayor de aes que bes, además de todas las aes antes de todas las bes.
La gramática G es:
N= { S }
Σ= { a, b}
P: S → aSb | ε | aS
Derivando la palabra aaabb nos quedaría:
S→ a S b

a S b

aS

Ejemplo 4:
Diseñe una gramática libre de contexto que genere el lenguaje no
regular { anbmcn+m donde: n ≥ 0 y m ≥ 0 }.
Algunas palabras que debe generar la gramática son: ε, ac, bc, abcc,
aabbcccc, aaabcccc, aaaabbbccccccc, etc. Y así sucesivamente, siempre
con todas las aes antes de todas las bes y que la cantidad de ces sea la
suma de las aes y bes.
La gramática G es:
N= { S, A }
Σ= { a, b, c}
P: S → aSc | A
A → bSc | ε

OIGC TEORIA MATEMATICA 4

Das könnte Ihnen auch gefallen