Está en la página 1de 11

Gramticas

Compiladores

Unidad Acadmica de Ingeniera

Gramticas
La gramtica es el estudio de las reglas y principios que
regulan el uso de las lenguas y la organizacin de las
palabras dentro de una oracin. Tambin se denomina
as al conjunto de reglas y principios que gobiernan el
uso de un lenguaje determinado; as, cada lenguaje
tiene su propia gramtica.
Permite definir un lenguaje mediante reglas que nos
permiten generar o producir cadenas de un lenguaje.

Unidad Acadmica de Ingeniera

Gramticas
Un ejemplo de regla de una gramtica:
Oracin
Sujeto predicado
Estas reglas se suelen llamar reglas de reescritura: el
smbolo Oracin se puede reescribir por el smbolo
Sujeto seguido del smbolo Predicado.
Una gramtica libre de contexto es una gramtica
formal en la que cada regla de produccin es de la
forma:

Vw

Unidad Acadmica de Ingeniera

Gramticas
Donde V es un smbolo no terminal y w es una cadena
de terminales y/o no terminales. El trmino 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 en el que ocurra.
Las gramticas libres de contexto permiten describir la
mayora de los lenguajes de programacin, de hecho, la
sintaxis de la mayora de lenguajes de programacin
est definida mediante gramticas libres de contexto.
Unidad Acadmica de Ingeniera

Gramticas
Por ejemplo, una proposicin if-else
forma

en C tiene la

if(expresin) proposicin else proposicin

Esto es, la proposicin es la concatenacin de la


palabra clave if, un parntesis que abre, una expresin,
un parntesis que cierra, una proposicin, la palabra
clave else y otra proposicin. Empleando la variable
expr para denotar una expresin, y la variable prop,
para una proposicin, esta regla de estructuracin se
expresa de la siguiente manera.
Unidad Acadmica de Ingeniera

Gramticas

prop if (exp) prop else prop


donde es posible leer la flecha como puede tener la forma.
Dicha regla se denomina produccin. En una produccin, los
elementos lexicos, como la la palabra clave if y los parntesis, se
llaman componentes lexicos. Las variables expr
y prop
representan secuencias de componentes lxicos y se llaman no
terminales.

Unidad Acadmica de Ingeniera

Gramticas
Una gramtica G es una cudrupla (N, , P, S) donde:
N es un conjunto finito y no vaco de smbolos llamados
no terminales o auxiliares, permiten representar estados
intermedios de la generacin de las palabras del lenguaje.
es un conjunto finito y no vaco de smbolos llamados
terminales, que forman las palabras del lenguaje.
S N, smbolo especial llamado smbolo inicial o axioma a
partir del que se aplican las reglas de la gramtica para
obtener las distintas palabras del lenguaje.
P es un subconjunto finito de V*NV* x V*. A los elementos
de P se les denomina reglas de produccin o simplemente,
producciones. permiten generar las palabras del lenguaje.
Unidad Acadmica de Ingeniera

Gramticas
Un ejemplo para ciertas expresiones aritmticas
G = (VN, VT, S, P)
VT={ +, -, \, *, ( , ), id }
VN= { E}
S=E
P:
1. EE+E
4. E E * E
2. EE- E
5. E E / E
3. E(E)
6. E id
Nota: Tambin los podemos ponerlo como una sola
produccin con alternativas
E E + E | E - E | E \ E | E * E | ( E) | id
Unidad Acadmica de Ingeniera

Gramticas
UN EJEMPLO
ORACIN SUJETO PREDICADO | PREDICADO
SUJETO ARTCULO NOMBRE
ARTICULO el | la
NOMBRE casa | nio
PREDICADO VERBO COMPLEMENTO
VERBO corre | es
COMPLEMENTO bien | obediente | bonita

Unidad Acadmica de Ingeniera

Gramticas
Notacin BNF (Backus-Naur-Form).
Esta notacin se utiliza para representar la gramtica
libre de contexto de un lenguaje de programacin.
Smbolos no terminales entre <>
Sustitucin de por ::=
Ejemplo:
<sentenciafor>::=for<condicion><sentencia>
Unidad Acadmica de Ingeniera

Gramticas
Lenguaje Libre de Contexto (LLC)
Es el lenguaje generado por una gramtica GLC.
L(G)={w / w VT* y S * w}
es decir w L(G) si w est formado cadenas de cero o
ms terminales y puede ser derivada desde el axioma.

Unidad Acadmica de Ingeniera

También podría gustarte