GRAMMAR latin.

#   This grammar is free software; you can use it, redistribute it
#   and/or modify it under the terms of the GNU General Public
#   License as published by the Free Software Foundation; either
#   version 2.1 of the License, or (at your option) any later version.
#
#   This grammar is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
#   General Public License for more details.
#
#   You should have received a copy of the GNU General Public
#   License along with this library; if not, write to the Free Software
#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA


 # Latin grammar and lexicon constructed by
 # Cornelis H.A. Koster for Tineke E. Koster
 # as part of the AGFL project

 # Literature used:
 # A.G. de Man et al (1979),
 #    redde rationem - recapulationes,
 #    Wolters - Noordhof
 # S.F.G. Rotteveel Mansfeld en R. Waleson (1970),
 #    Latijnse leergang, tweede druk, Wolters - Noordhoff
 # http://www.u-grenoble3.fr/lebarbe/Linguistic_Lexicon
 # All mistakes are mine.

 # TODO:
 # add VGENUS to participia (and eliminate something else?)
 # add expectations to verbs (to nouns and adjectives too?)
 # add discourse levels to particles
 # extend the freedom in word order (topicalisation)
 # the pronomina are a mess
 # other developments are stopped by lack of left-recursion.

|invisible characters " :\t\n\r\'\`\"\(\)"|
|word terminators " \t\n+:,;.!?/%\$\'\`\""|

INCLUDES meta.

LEXICON verb,subst,adj, adv,
        pron,prep,misc,num,
        irverb,irsubst,iradj
DEFINES
  LEXA(GRADUS,NUM,GENUS,CASUS),
  LEXS(NUM,GENUS,CASUS),
  LEXX(GRADUS),
  LEXQ(NUM,GENUS,CASUS),
  adverbium,
  conj(COO),
  punctus,comma,clitic,
  praepositio(CASUS),
  postpositio(CASUS),
  PRPER(PERS,NUM,CASUS),
  PRDEM(NUM,GENUS,CASUS),
  PRDET(NUM,GENUS,CASUS),
  PRINT(NUM,GENUS,CASUS),
  PRIND(NUM,GENUS,CASUS),
  PRRIN(NUM,GENUS,CASUS),
  PRREL(NUM,GENUS,CASUS),
  PRPOS(NUM,GENUS,CASUS),
  TOBE(MODUS,PERS,NUM,TEMPUS,VGENUS),
  TOBE(inf,TEMPUS,VGENUS),
  LEXV(MODUS,PERS,NUM,TEMPUS,VGENUS),
  LEXV(MODUS,NUM,GENUS,CASUS),
  LEXV(inf,TEMPUS,VGENUS).

 #---------------------------------------------------ROOT

# | segment mode |

ROOT sententia.

 sententia:
   sent / "[", sent, "]";
   $PENALTY(10), NP (CASUS)!
   WORD / "SKIP:", WORD !
   $PENALTY(100), $SKIP(".*") / "UNKN:", $SKIP .

 WORD:
  LEXA(GRADUS,NUM,GENUS,CASUS);
  LEXS(NUM,GENUS,CASUS);
  LEXX(GRADUS);
  LEXQ(NUM,GENUS,CASUS);
  adverbium;
  conj(COO);
  punctus;comma;clitic;
  praepositio(CASUS);
  postpositio(CASUS);
  PRPER(PERS,NUM,CASUS);
  PRDEM(NUM,GENUS,CASUS);
  PRDET(NUM,GENUS,CASUS);
  PRINT(NUM,GENUS,CASUS);
  PRIND(NUM,GENUS,CASUS);
  PRRIN(NUM,GENUS,CASUS);
  PRREL(NUM,GENUS,CASUS);
  PRPOS(NUM,GENUS,CASUS);
  TOBE(MODUS,PERS,NUM,TEMPUS,VGENUS);
  TOBE(inf,TEMPUS,VGENUS);
  LEXV(MODUS,PERS,NUM,TEMPUS,VGENUS);
  LEXV(MODUS,NUM,GENUS,CASUS);
  LEXV(inf,TEMPUS,VGENUS).
 # -----------------------------------------------------SENT

 sent:
   separator,simple sent,
     (sent;
 # EX cogito ergo sum
      [punctus]).

 simple sent:
   statement;
   question;
   command.

 separator:
     comma, separator;
     adverbium, separator;
     conj(COO), separator;
     LEXX(comp), "quam";
     .

 statement:
    SVOC phrase (ind);
    SxP phrase.

 command:
    [adjects],LEXV(imp,sec,NUM,praes,act),
        [adjects],[object],[adjects].

 question:
  PRINT(NUM,GENUS,CASUS), statement!
  PRIND(NUM,GENUS,CASUS), statement!
  PRRIN(NUM,GENUS,CASUS), statement.


 SVOC phrase (MODUS):
  # [subject(PERS,NUM)] & V(MODUS,PERS,NUM,act) & [object] & [adjects].
  #  no object --> also passive allowed
     # all four
    subject(PERS,NUM), adjects, object, V(MODUS,PERS,NUM,act);
    subject(PERS,NUM), adjects, V(MODUS,PERS,NUM,act), object;
    subject(PERS,NUM), object, adjects, V(MODUS,PERS,NUM,act);
    subject(PERS,NUM), object, V(MODUS,PERS,NUM,act), adjects;
    subject(PERS,NUM), V(MODUS,PERS,NUM,act), adjects, object;
    subject(PERS,NUM), V(MODUS,PERS,NUM,act), object, adjects;
    adjects, subject(PERS,NUM), object, V(MODUS,PERS,NUM,act);
    adjects, subject(PERS,NUM), V(MODUS,PERS,NUM,act), object;
    adjects, object, subject(PERS,NUM), V(MODUS,PERS,NUM,act);
    adjects, object, V(MODUS,PERS,NUM,act), subject(PERS,NUM);
    adjects, V(MODUS,PERS,NUM,act), subject(PERS,NUM), object;
    adjects, V(MODUS,PERS,NUM,act), object, subject(PERS,NUM);
    object, subject(PERS,NUM), adjects, V(MODUS,PERS,NUM,act);
    object, subject(PERS,NUM), V(MODUS,PERS,NUM,act), adjects;
    object, adjects, subject(PERS,NUM), V(MODUS,PERS,NUM,act);
    object, adjects, V(MODUS,PERS,NUM,act), subject(PERS,NUM);
    object, V(MODUS,PERS,NUM,act), subject(PERS,NUM), adjects;
    object, V(MODUS,PERS,NUM,act), adjects, subject(PERS,NUM);
    V(MODUS,PERS,NUM,act), subject(PERS,NUM), adjects, object;
    V(MODUS,PERS,NUM,act), subject(PERS,NUM), object, adjects;
    V(MODUS,PERS,NUM,act), adjects, subject(PERS,NUM), object;
    V(MODUS,PERS,NUM,act), adjects, object, subject(PERS,NUM);
    V(MODUS,PERS,NUM,act), object, subject(PERS,NUM), adjects;
    V(MODUS,PERS,NUM,act), object, adjects, subject(PERS,NUM);
    # no adjects
   V(MODUS,PERS,NUM,act), object, subject(PERS,NUM);
   V(MODUS,PERS,NUM,act), subject(PERS,NUM), object;
   object, V(MODUS,PERS,NUM,act), subject(PERS,NUM);
   object, subject(PERS,NUM), V(MODUS,PERS,NUM,act);
   subject(PERS,NUM), V(MODUS,PERS,NUM,act), object;
   subject(PERS,NUM), object, V(MODUS,PERS,NUM,act);
    # no obj --> also passive allowed (VGENUS instead of act)
   V(MODUS,PERS,NUM,VGENUS), adjects, subject(PERS,NUM);
   V(MODUS,PERS,NUM,VGENUS), subject(PERS,NUM), adjects;
   adjects, V(MODUS,PERS,NUM,VGENUS), subject(PERS,NUM);
   adjects, subject(PERS,NUM), V(MODUS,PERS,NUM,VGENUS);
   subject(PERS,NUM), V(MODUS,PERS,NUM,VGENUS), adjects;
   subject(PERS,NUM), adjects, V(MODUS,PERS,NUM,VGENUS);
    # no subject
   V(MODUS,PERS,NUM,act), adjects, object;
   V(MODUS,PERS,NUM,act), object, adjects;
   adjects, V(MODUS,PERS,NUM,act), object;
   adjects, object, V(MODUS,PERS,NUM,act);
   object, V(MODUS,PERS,NUM,act), adjects;
    # no subject, object --> also passive allowed
   V(MODUS,PERS,NUM,VGENUS), adjects;
   adjects, V(MODUS,PERS,NUM,VGENUS);
    # no subject, adjects
   V(MODUS,PERS,NUM,act), object;
 # doleo mortem amici
   object, V(MODUS,PERS,NUM,act);
    # no object, adjects --> also passive allowed
   subject(PERS,NUM), V(MODUS,PERS,NUM,VGENUS);
   V(MODUS,PERS,NUM,VGENUS), subject(PERS,NUM);
    # no subject, object, adjects --> also passive allowed
   V(MODUS,PERS,NUM,VGENUS).
 # EX bonum vinum bibit abbas cum priore
 # EX dum conventus bibit cum tristitia
 # EX laudare te vult homo
 # EX sanabitur anima mea
 # EX gratias tibi agimus domine
 # EX ambulemus in horto
 # EX laudabunt dominum
 # EX moriebam

 # EX Deus qui laetificat juventutem meum

 SxP phrase:
 # [subject(PERS,NUM,GENUS)]&tobe(MODUS,PERS,NUM,TEMPUS,act)&[predicate(PERS,NUM,GENUS,nom)]&[adjects]
     # all four elements
   subject(PERS,NUM,GENUS), adjects, tobe(MODUS,PERS,NUM,TEMPUS,act), predicate(PERS,NUM,GENUS);
   subject(PERS,NUM,GENUS), adjects, predicate(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act);
   subject(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act), adjects, predicate(PERS,NUM,GENUS);
   subject(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act), predicate(PERS,NUM,GENUS), adjects;
 # EX Gallia est omnis divisa in partes tres
   subject(PERS,NUM,GENUS), predicate(PERS,NUM,GENUS), adjects, tobe(MODUS,PERS,NUM,TEMPUS,act);
   subject(PERS,NUM,GENUS), predicate(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act), adjects;
   adjects, subject(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act), predicate(PERS,NUM,GENUS);
   adjects, subject(PERS,NUM,GENUS), predicate(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act);
   adjects, tobe(MODUS,PERS,NUM,TEMPUS,act), subject(PERS,NUM,GENUS), predicate(PERS,NUM,GENUS);
   adjects, tobe(MODUS,PERS,NUM,TEMPUS,act), predicate(PERS,NUM,GENUS), subject(PERS,NUM,GENUS);
   adjects, predicate(PERS,NUM,GENUS), subject(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act);
   adjects, predicate(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act), subject(PERS,NUM,GENUS);
   tobe(MODUS,PERS,NUM,TEMPUS,act), subject(PERS,NUM,GENUS), adjects, predicate(PERS,NUM,GENUS);
   tobe(MODUS,PERS,NUM,TEMPUS,act), subject(PERS,NUM,GENUS), predicate(PERS,NUM,GENUS), adjects;
   tobe(MODUS,PERS,NUM,TEMPUS,act), adjects, subject(PERS,NUM,GENUS), predicate(PERS,NUM,GENUS);
   tobe(MODUS,PERS,NUM,TEMPUS,act), adjects, predicate(PERS,NUM,GENUS), subject(PERS,NUM,GENUS);
   tobe(MODUS,PERS,NUM,TEMPUS,act), predicate(PERS,NUM,GENUS), subject(PERS,NUM,GENUS), adjects;
   tobe(MODUS,PERS,NUM,TEMPUS,act), predicate(PERS,NUM,GENUS), adjects, subject(PERS,NUM,GENUS);
   predicate(PERS,NUM,GENUS), subject(PERS,NUM,GENUS), adjects, tobe(MODUS,PERS,NUM,TEMPUS,act);
   predicate(PERS,NUM,GENUS), subject(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act), adjects;
   predicate(PERS,NUM,GENUS), adjects, subject(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act);
   predicate(PERS,NUM,GENUS), adjects, tobe(MODUS,PERS,NUM,TEMPUS,act), subject(PERS,NUM,GENUS);
   predicate(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act), subject(PERS,NUM,GENUS), adjects;
   predicate(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act), adjects, subject(PERS,NUM,GENUS);
    # no adjects
   subject(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act), predicate(PERS,NUM,GENUS);
 # EX nomen est omen
   subject(PERS,NUM,GENUS), predicate(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act);
   tobe(MODUS,PERS,NUM,TEMPUS,act), subject(PERS,NUM,GENUS), predicate(PERS,NUM,GENUS);
   tobe(MODUS,PERS,NUM,TEMPUS,act), predicate(PERS,NUM,GENUS), subject(PERS,NUM,GENUS);
   predicate(PERS,NUM,GENUS), subject(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act);
   predicate(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act), subject(PERS,NUM,GENUS);
   # no subject
   tobe(MODUS,PERS,NUM,TEMPUS,act), predicate(PERS,NUM,GENUS), adjects;
   tobe(MODUS,PERS,NUM,TEMPUS,act), adjects, predicate(PERS,NUM,GENUS);
   predicate(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act), adjects;
   predicate(PERS,NUM,GENUS), adjects, tobe(MODUS,PERS,NUM,TEMPUS,act);
   adjects, tobe(MODUS,PERS,NUM,TEMPUS,act), predicate(PERS,NUM,GENUS);
   adjects, predicate(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act);
    # no predicate
   subject(PERS,NUM,GENUS),  tobe(MODUS,PERS,NUM,TEMPUS,act), adjects;
   subject(PERS,NUM,GENUS), adjects,  tobe(MODUS,PERS,NUM,TEMPUS,act);
   tobe(MODUS,PERS,NUM,TEMPUS,act), subject(PERS,NUM,GENUS), adjects;
   tobe(MODUS,PERS,NUM,TEMPUS,act), adjects, subject(PERS,NUM,GENUS);
   adjects, subject(PERS,NUM,GENUS),  tobe(MODUS,PERS,NUM,TEMPUS,act);
   adjects,  tobe(MODUS,PERS,NUM,TEMPUS,act), subject(PERS,NUM,GENUS);
    # no adjects, no subject
   predicate(PERS,NUM,GENUS,acc), tobe(MODUS,PERS,NUM,TEMPUS,act);
 # EX  annus horribilis fuit
   tobe(MODUS,PERS,NUM,TEMPUS,act), predicate(PERS,NUM,GENUS,acc);
    # no adjects, no predicate
   subject(PERS,NUM,GENUS), tobe(MODUS,PERS,NUM,TEMPUS,act);
   tobe(MODUS,PERS,NUM,TEMPUS,act), subject(PERS,NUM,GENUS);
    # no subject, no predicate
   tobe(MODUS,PERS,NUM,TEMPUS,act), adjects;
 # sum in horto
   adjects, tobe(MODUS,PERS,NUM,TEMPUS,act);
    # no subject, no predicate, no adjects;
   tobe(MODUS,PERS,NUM,TEMPUS,act);
    # no tobe (UNSYSTEMATICAL)
   subject(PERS,NUM,GENUS), adjects;
 # EX vae victis
   adjects, subject(PERS,NUM,GENUS);
 # EX in vino veritas
    predicate(PERS,NUM,GENUS), subject(PERS,NUM,GENUS), [adjects].
 # EX magna virtus tua

 # ---------------------------------------------------SUBJECT and PREDICATE

 predicate(PERS,NUM,GENUS), predicate(PERS,NUM,GENUS,nom):
    subject(PERS,NUM,GENUS);
    AP(NUM,GENUS,nom).

 predicate(PERS,NUM,GENUS,acc):
    object;
    AP(NUM,GENUS,acc).

 subject(trt,NUM),subject(trt,NUM,GENUS):
    NP (NUM,GENUS,nom);
    relsent(NUM,GENUS,nom).
 # EX quis est homo qui non fleret

 subject(trt,sg),subject(trt,sg,ntr):
    infinitivus(VGENUS).

 subject(PERS,NUM),subject(PERS,NUM,GENUS):
    PRPER(PERS,NUM,nom).

 # -----------------------------------------------------------------OBJECT

 object:
    NP (acc), [rest ACI];
    relsent(NUM,GENUS,acc);
 # EX quia diabolus circuit ut leo rugiens videns quem devoret
    infinitivus(VGENUS);
 # EX mundus vult decipi
   PRREL(NUM,GENUS,acc),statement.  # better: statement with elided object

 rest ACI:
  # infinitivus(act) & [object] & [adjects]
   infinitivus(act), object, adjects;
   infinitivus(act), adjects, object;
   object, infinitivus(act), adjects;
   object, adjects, infinitivus(act);
   adjects, infinitivus(act), object;
   adjects, object, infinitivus(act);
 # no object
   infinitivus(VGENUS), adjects;
   adjects, infinitivus(VGENUS);
 # no adjects
   infinitivus(act), object;
   object, infinitivus(act);
 # no object, no adjects
   infinitivus(VGENUS);
 # EX nam vidi ipse oculis meis Sybullam in ampulla pendere
 # EX non licet eos mittere in corbonam
  # tobe(inf,TEMPUS,VGENUS) & predicate(PERS,NUM,GENUS) & [adjects]
   tobe(inf,TEMPUS,VGENUS), predicate(PERS,NUM,GENUS), adjects;
   tobe(inf,TEMPUS,VGENUS), adjects, predicate(PERS,NUM,GENUS);
   predicate(PERS,NUM,GENUS), tobe(inf,TEMPUS,VGENUS), adjects;
   predicate(PERS,NUM,GENUS), adjects, tobe(inf,TEMPUS,VGENUS);
   adjects, tobe(inf,TEMPUS,VGENUS), predicate(PERS,NUM,GENUS);
   adjects, predicate(PERS,NUM,GENUS), tobe(inf,TEMPUS,VGENUS);
   # no adjects
   tobe(inf,TEMPUS,VGENUS), predicate(PERS,NUM,GENUS);
   predicate(PERS,NUM,GENUS), tobe(inf,TEMPUS,VGENUS);
 # EX ceterum censeo Carthaginem esse delendam
   tobe(inf,TEMPUS,VGENUS).

 relsent(NUM,GENUS,CASUS):
   # must be refined as a kind of topicalization
       [comma], [praepositio(acc)], PRREL(NUM,GENUS,CASUS),statement,[comma].
 # EX quomodo autem invocabunt in quem non crediderunt?
 # EX Deus qui laetificat juventutem meum



 #--------------------------------------- NP and its constituents

 NP(CASUS), NP(NUM,GENUS,CASUS):
    Nbarbar(NUM,GENUS,CASUS)
          / "(", Nbarbar, ")".

  NP(CASUS), NP(pl,GENUS,CASUS):
 # the GENUS should be influenced by the gender of the elements
    simple NP(NUM,GENUS,CASUS),conj(co),NP(NUM1,GENUS1,CASUS)
          / "(", simple NP, conj, NP, ")".

  simple NP(CASUS), simple NP(NUM,GENUS,CASUS):
     Nbarbar(NUM,GENUS,CASUS) / "(", Nbarbar, ")".

  Nbarbar(NUM,GENUS,CASUS):
     numerus(NUM,GENUS,CASUS),Nbar(NUM,GENUS,CASUS);
     Nbar(NUM,GENUS,CASUS),explicatio(CASUS); 
     Nbar(NUM,GENUS,CASUS),[simple NP(gen)];
  # EX laudare te vult homo, aliqua portio creaturae tuae
     Nbar(NUM,GENUS,CASUS),relsent(NUM,GENUS,CASUS);
     $PENALTY, Nbar(NUM,GENUS,CASUS),[comma],conj(sub),statement,[comma].

 numerus(NUM,GENUS,CASUS):
   LEXQ(NUM,GENUS,CASUS)! $SKIP("[MDCLXVI][MDCLXVI]*").

 Nbar(NUM,GENUS,CASUS):
    N(NUM,GENUS,CASUS);
    PRPER(PERS,NUM,CASUS); #PERS is lost ...
    $PENALTY, PRDET(NUM,GENUS,CASUS);
    $PENALTY, PRDEM(NUM,GENUS,CASUS);
    AP(NUM,GENUS,CASUS), Nbar(NUM,GENUS,CASUS);
    N(NUM,GENUS,CASUS), AP(NUM,GENUS,CASUS);
    PRPOS(NUM,GENUS,CASUS), Nbar(NUM,GENUS,CASUS);
    N(NUM,GENUS,CASUS), PRPOS(NUM,GENUS,CASUS).


 Nbar(pl,GENUS,CASUS):
    N(NUM,GENUS,CASUS), N(NUM1,GENUS,CASUS),clitic.

 N(NUM,GENUS,CASUS):
    LEXS(NUM,GENUS,CASUS);
    $PENALTY,AP(NUM,GENUS,CASUS);
    $PENALTY, PRINT(NUM,GENUS,CASUS);
    #$PENALTY(2),nomen(NUM,GENUS,CASUS);
    $PENALTY(2),LEXQ(NUM,GENUS,CASUS).

# nomen (sg,fem,nom|dat|abl): radix, $SKIP("-a").
# nomen (sg,fem,gen): radix, $SKIP("-ae").
# nomen (sg,fem,acc): radix, $SKIP("-am").
#
# nomen (sg,masc,nom): radix, $SKIP("-us").
# nomen (sg,masc,gen): radix, $SKIP("-i").
# nomen (sg,masc|ntr,acc): radix, $SKIP("-um").
# nomen (sg,masc|ntr,dat|abl): radix, $SKIP("-o").
#
# nomen (sg,masc,nom): radix, $SKIP("-o").
# nomen (sg,masc,gen): radix, $SKIP("-onis").
# nomen (sg,masc,dat): radix, $SKIP("-oni").
# nomen (sg,masc,acc): radix, $SKIP("-onem").
# nomen (sg,masc,dat): radix, $SKIP("-one").
#
# nomen (pl,fem,nom): radix, $SKIP("-ae").  
# nomen (pl,fem,gen): radix, $SKIP("-arum").  
# nomen (pl,GENUS,dat|abl): radix, $SKIP("-ibus").
# nomen (pl,fem,acc): radix, $SKIP("-as").  
#
# nomen (pl,masc,nom): radix, $SKIP("-i").
# nomen (pl,masc,gen): radix, $SKIP("-orum").
# nomen (pl,masc|ntr,acc): radix, $SKIP("-os").
#
# nomen (pl,masc,nom|acc): radix, $SKIP("-ones").
# nomen (pl,masc,gen): radix, $SKIP("-onum").
# nomen (pl,masc,dat|abl): radix, $SKIP("-onibus").
#
# radix:  $SKIP("[A-Z][A-Za-z]*").
 

 #------------------------------------------------------------ADJECTIVE
 # the AP is considered as A generalized by projection


 AP(NUM,GENUS,CASUS):
   Abar(NUM,GENUS,CASUS),
     (conj(co), AP(NUM,GENUS,CASUS);
      AP(NUM,GENUS,CASUS),clitic; ).

 Abar(NUM,GENUS,CASUS):
    X, Abar(NUM,GENUS,CASUS);
    A(NUM,GENUS,CASUS),
       ($PENALTY,X; ).

 A(NUM,GENUS,CASUS):
    LEXA(GRADUS,NUM,GENUS,CASUS);
    LEXA(comp,NUM,GENUS,CASUS),"quam",NP(abl);
    LEXA(comp,NUM,GENUS,CASUS), NP(abl);   #ablativus mensurae
    #   leftrecursive ... NP(abl), LEXA(comp,NUM,GENUS,CASUS);
    participium(NUM,GENUS,CASUS);
    PRIND(NUM,GENUS,CASUS);
    PRDET(NUM,GENUS,CASUS);
    PRDEM(NUM,GENUS,CASUS).

 X:
    LEXX(GRADUS);
    adverbium.

 interjectio:
  [comma],["o"],
     NP(NUM,GENUS,voc),[comma].

 explicatio(CASUS):
     $PENALTY,[comma],NP(CASUS),[comma].

 #---------------------------------------------------------VERB PHRASE

 V(MODUS,PERS,NUM,VGENUS):
   LEXV(MODUS,PERS,NUM,TEMPUS,VGENUS),
     ($PENALTY,X; );
   X,V(MODUS,PERS,NUM,VGENUS).

 tobe(MODUS,PERS,NUM,TEMPUS,VGENUS):
   [adjects], TOBE(MODUS,PERS,NUM,TEMPUS,VGENUS).

 tobe(inf,TEMPUS,VGENUS):
   [adjects], TOBE(inf,TEMPUS,VGENUS).

 infinitivus(VGENUS):
    LEXV(inf,TEMPUS,VGENUS), [object],[adjects],
      (conj(co),LEXV(inf,TEMPUS,VGENUS);
       LEXV(inf,TEMPUS,VGENUS), clitic; ).

 participium(NUM,GENUS,CASUS):
    [X],LEXV(part|pperf|gerund,NUM,GENUS,CASUS), [object].

 # -------------------------------------------------------ADJECTS

 adjects:
   adject, (adjects; ).

 adject:
   X;
   PP(CASUS);
   $PENALTY,interjectio;
   $PENALTY(2), simple NP(gen|abl);
   $PENALTY, simple NP(dat);
   ablativus absolutus;
   simple NP(loc).

 ablativus absolutus:
 # simple NP(NUM,GENUS,abl) & LEXV(part|pperf,NUM,GENUS,abl).
 # EX senatu deliberante Sagunthum periit
 # EX Roma locuta causa finita
   LEXV(part|pperf,NUM,GENUS,abl), simple NP(NUM,GENUS,abl);
   simple NP(NUM,GENUS,abl), LEXV(part|pperf,NUM,GENUS,abl).
 # EX stante pede exitus est

  PP(CASUS):
     praepositio(CASUS),NP(CASUS);
 # EX in dulci jubilo
     simple NP(CASUS),postpositio(CASUS);
     $PENALTY(2), Abar(NUM,GENUS,CASUS), praepositio(CASUS),
        NP(NUM,GENUS,CASUS).
 # EX venit magna cum ullullatione

 PP(abl):
     PRPER(PERS,NUM,abl), "-cum";
 # EX dominus tecum
     PRPER(PERS,NUM,abl), "-met".

