EJEMPLO DE GRAMÁTICA

Aclaraciones

Terminales en mayúsculas y no terminales en minúsculas
Los atributos estan abreviados con sus 3 primeras letras
"   Las constantes de atributos van entre comillas. Ej: "masc" (masculino)
"   Las palabras textuales van entre comillas y son terminales. Ej "lo"
*   Significa todos los atributos
=   Asignacion de atributos
==  Igualdad de atributos
$   Compatibilidad de atributos. Ejemplos "masc" $ "masc", "fem" $ "ambos"
()  Entre paréntesis nombres largos y ejemplos
[]  Entre corchetes los atributos: género, número, persona, animado
::= Definicón de un noterminal
|   Separación de las variantes de una definición
{}  Asignación y verificación de atributos. Una por cada variante
;   separación de asignaciones
&   Y lógico
1-9 Números, identifican el terminal o no terminal, no son parte de sus nombres

Terminales y sus atributos:

Sus: (sustantivo)             [gen, num, ani]
Adj: (adjetivo)               [gen, num]
Pp:  (pronombre personal)     [gen, num, per]
Art: (artículo)               [gen, num]
Pde: (pronombre demostrativo) [gen, num]
Adv: (adverbio)               []
Vt:  (verbo transitivo)       [per, num]
Vc:  (verbo copulativo)       [per, num]
REGLAS:
(modificador directo; lindo | realmente lindo)
md ::= Adj1 | Adv Adj2
   { md.* = Adj1.* }
   { md.* = Adj2.* }
(sustantivo adjetivado; perro | perro muy azul | lindo perro)
susAd ::= Sus | susad1 md1 | md2 susAd2
      [gen, num, ani]
      { susAd.* = Sus.* }
      { susAd.* = susad1.*; susad1.gen $ md1.gen & susad1.num $ md1.num }
      { susAd.* = susad2.*; susad2.gen $ md2.gen & susad2.num $ md2.num }
(sustantivo articulado; el hombre | aquel casi lindo perro | lo realmente 
feo)
susar ::= Art ausad1 | Pde susad2 | "lo" md
      [gen, num, ani]
      { susar.* = susad1.*; susad1.gen $ Art.gen & susad1.num $ Art.num }
      { susar.* = susad2.*; susad2.gen $ Pde.gen & susad2.num $ Pde.num }
      { susar.gen = "masc"; susar.num = "sing"; susar.ani = "no";
        "masc" $ md.gen & "sing" $ md.numero }
(complemento sutantivo; de aquel lindo perro)
comps ::= "de" susar
      []
(construcción sustantiva simple; el arbol | el arbol de la esquina rosada)
csuss ::= susar1 | susar2 comps
      [gen, num, ani]
      { csuss.* = susar1.* }
      { csuss.* = susar2.* }
(construcción sustantiva compuesta; el árbol y el perro de la vecina)
csusc ::= csuss1 "," csusc1 | csuss2 "y" csuss3 | csuss4 "o" csuss5
      [gen, num, ani]
      { csusc.num = "plu"; csusc.gen = max(csuss1.gen,csusc1.gen);
        csusc.ani = max(csuss1.ani,csusc1.ani) }
      { csusc.num = "plu"; csusc.gen = max(csuss2.gen,csuss3.gen);
        csusc.ani = max(csuss2.ani,csuss3.ani) }
      { csusc.num = "plu"; csusc.gen = max(csuss4.gen,csuss5.gen); 
        csusc.ani = max(csuss4.ani,csuss5.ani) }
(construccion sustantiva; el árbol | el árbol y los sumamente petisos arbustos)
csus ::= csuss | csusc
     [gen, num, ani]
     { csus.* = csuss.* }
     { csus.* = csusc.* }
(sujeto; yo | el arbol)
suj ::= Pp | csus
   [per, gen, num]
   { suj.* = Pp.* }
   { suj.per = "3"; suj.gen = csus.gen; suj.num=csus.num }
(objeto directo; el árbol | a la profesora)
od ::= csus1 | "a" csus2
   []
   { csus1.ani == "no" }
   { csus2.ani == "si" }
(predicativo con núcleo sustantivo)
preds ::= csus;
      []
(predicativo con núcleo adjetivo)
preda ::= md
      [gen, num]
      { preda.* = md.* }
(proposición en base a un verbo transitivo)
propt ::= suj1 Vt1 od | Vt2 od2 suj | suj3 Vt3 | Vt4 suj4 | Vt | Vt od
      []
      { suj1.per == Vt1.per & suj1.num == Vt1.num }
      { suj2.per == Vt2.per & suj2.num == Vt2.num }
      { suj3.per == Vt3.per & suj3.num == Vt3.num }
      { suj4.per == Vt4.per & suj4.num == Vt4.num }
(proposición en base a un verbo copulativo y a un predicativo c/n sustantivo)
propcs ::= suj1 Vc1 preds | Vc2 suj2 preds | Vc preds
       []
      { suj1.per == Vc1.per & suj1.num == Vc1.num }
      { suj2.per == Vc2.per & suj2.num == Vc2.num }
(proposición en base a un verbo copulativo y a un predicativo c/n adjetivo)
propca ::= suj1 Vc1 preda1 | Vc2 suj2 preda2 | Vc3 preda3
       []
      { suj1.per == Vc1.per & suj1.num == Vc1.num & suj1.gen $ preda1.gen &
        suj1.num == preda1.num }
      { suj2.per == Vc2.per & suj2.num == Vc2.num & suj2.gen $ preda2.gen &
        suj2.num == preda2.num }
      { Vc2.num == preda3.num & suj2.gen $ preda3.gen }
(oración)
oracion ::= propt "." | propcs "." | propcs "."
     []
EJEMPLO DE VOCABULARIO
Sus: (sustantivo)             [gen,  num, ani]
    profesor                   masc  sing si
    princesa                   fem   sing si
    estudiante                 ambos sing si
    alumnos                    masc  plu  si
    maestras                   fem   plu  si
    intendentes                ambos plu  si
    perro                      masc  sing no
    árbol                      masc  sing no
    cola                       fem   sing no
    arbustos                   masc  plu  no
    flores                     fem   plu  no
Adj: (adjetivo)               [gen,  num]
    inteligente                ambos sing
    fuertes                    ambos plu
    linda                      fem   sing
    grande                     ambos sing
    negro                      masc  sing
    reducido                   masc  sing
    importantes                ambos plu
Pp:  (pronombre personal)     [gen,  num, per]
    yo                         ambos sing 1
    vos                        ambos sing 2
    el                         masc  sing 3
    ella                       fem   sing 3
    nosotros                   masc  plu  1
    nosotras                   fem   plu  1
    ustedes                    ambos plu  3
    ellos                      masc  plu  3
    ellas                      fem   plu  3
Art: (artículo)               [gen,  num]
    el                         masc  sing
    la                         fem   sing
    los                        masc  plu
    las                        fem   plu
Pde: (pronombre demostrativo) [gen,  num]
    este                       masc  sing
    esa                        fem   sing
    aquellos                   masc  plu
    unas                       fem   plu
    otro                       masc  sing
    alguna                     fem   sing
    ningunos                   masc  plu
Adv: (adverbio)               []
    muy
    seguramente
    casi
    evidentemente
Vt:  (verbo transitivo)       [per, num]
    golpear
    correr
    morder
Vc:  (verbo copulativo)       [per, num]
    ser
    parecer