This is a French toy grammar written by Benoit Crabbe.
usedim lp usedim sf usedim lex defdim lp { defentrytype "lp.entry" deflabeltype "lp.label" deftype "lp.entry" {in: valency("lp.label") out: valency("lp.label") on: iset("lp.label") } deftype "lp.label" { p ppost front extr prevb neg cl2 cl3 cl4 cl5 cl6 caux taux innerv v advneg adjp postvb det n npre npost adj adjpost adv cl } useprinciple "principle.graph" { dims {D: lp}} useprinciple "principle.tree" { dims {D: lp}} useprinciple "principle.valency"{ dims {D: lp}} useprinciple "principle.order"{ dims {D: lp} args { Order:[ p ppost det npre n npost front extr prevb neg cl2 cl3 cl4 cl5 cl6 taux caux innerv v adjp advneg postvb adj adjpost adv cl ] Yields: true } } useprinciple "principle.projectivity"{ dims {D: lp} } } defdim sf{ defentrytype "sf.entry" deflabeltype "sf.label" deftype "sf.entry" { in: valency("sf.label") out: valency("sf.label") on : iset("sf.label") end: vec("sf.label" set("lp.label")) } deftype "sf.label" {subj obj iobj gen loc man taux cop vmod neg det nmod parg} useprinciple "principle.graph"{ dims {D: sf}} useprinciple "principle.tree" { dims {D: sf}} useprinciple "principle.valency"{ dims {D: sf}} useprinciple "principle.linkingEnd"{ dims {D1: sf D2: lp D3: sf}} } defdim lex{ defentrytype {word:string} useprinciple "principle.entries"{} output "output.dags" output "output.dags1" useoutput "output.dags1" } %Lexicon %Macros : % CLITICS defclass "clitic"{ dim lp{ on : {cl} } } defclass "cliticI"{ "clitic" dim sf{ in : {subj!} } dim lp{ in : {prevb!} } } defclass "cliticII"{ "clitic" dim sf{ in : {obj? iobj?} } dim lp{ in : {cl2!} } } defclass "cliticIII"{ "clitic" dim sf{ in : {obj!} } dim lp{ in : {cl3!} } } defclass "cliticIV"{ "clitic" dim sf{ in : {iobj!} } dim lp{ in : {cl4!} } } defclass "cliticV"{ "clitic" dim sf{ in : {loc!} } dim lp{ in : {cl5!} } } defclass "cliticVI"{ "clitic" dim sf{ in : {gen!} } dim lp{ in : {cl6!} } } % NOUNS defclass "noun"{ dim sf{ in :{subj? obj? parg?} } dim lp{ in : {prevb? postvb? ppost?} on : {n} } } defclass "propernoun"{ "noun" } defclass "strongpronoun"{ "noun" } defclass "commonnoun"{ "noun" dim sf{ out: {det! nmod*} } dim lp{ out: {det! npre* npost*} } } defclass "determiner"{ dim sf{ in : {det!} } dim lp{ in : {det!} on : {det} } } % Adjective stuff defclass "epithete"{ dim sf{ in : {nmod!} } } defclass "epithetepre"{ "epithete" dim lp{ in : {npre!} on : {adj} } } defclass "epithetepost"{ "epithete" dim lp{ in : {npost!} on : {adj} } } defclass "epithpostIobj"{ "epithetepost" dim lp{out:{adjpost!}} dim sf{out:{iobj!}} } defclass "epithpostGen"{ "epithetepost" dim lp{out:{adjpost!}} dim sf{out:{gen!}} } defclass "PredicativeAdjective"{ dim lp{ out:{caux! innerv* front* postvb*} on:{adjp} } dim sf{ out:{cop! vmod*} end:{cop:{caux}} } } defclass "IntransitiveAdjSet"{ "PredicativeAdjective" "SubjSet" } defclass "TransitiveIobjAdjSet"{ "PredicativeAdjective" "SubjSet" "IobjLocSet" } defclass "TransitiveGenAdjSet"{ "PredicativeAdjective" "SubjSet" "GenSet" } defclass "TenseAuxiliary"{ dim sf{ in : {taux!} } dim lp{ in: {taux!} out:{neg? advneg?} on : {v} } } defclass "CopVerb"{ dim sf{ in:{cop!} } dim lp{ in:{caux!} on:{v} } } defentry{ dim sf{ in : {vmod!} } dim lp{ in : {innerv} on : {advneg} } dim lex {word:"pas"} } defentry{ dim sf{ in : {vmod!} } dim lp{ in : {postvb!} on : {advneg} } dim lex {word:"pas"} } defentry{ dim sf{ in : {vmod!} } dim lp{ in : {innerv!} on : {advneg} } dim lex {word:"jamais"} } defentry{ dim sf{ in : {vmod!} } dim lp{ in : {postvb!} on : {advneg} } dim lex {word:"jamais"} } %Verbal stuff % (1) Structure sharing defclass "hasSubj"{ dim sf{out:{subj!}} } defclass "hasSubjCan"{ "hasSubj" dim lp{out:{prevb!}} dim sf{end:{subj: {prevb}}} } defclass "hasObj"{ dim sf{out:{obj!}} } defclass "hasObjCan"{ "hasObj" dim lp{out:{postvb+}} dim sf{end:{obj: {postvb}}} } defclass "hasObjClitic"{ "hasObj" dim lp{out:{cl2? cl3?}} dim sf{end:{obj: {cl2 cl3}}} } defclass "hasIndirectObject"{ dim sf{out:{iobj!}} } defclass "hasIObjCan"{ "hasIndirectObject" dim lp{out:{postvb+}} dim sf{end:{iobj: {postvb}}} } defclass "hasIObjClitic"{ "hasIndirectObject" dim lp{out:{cl2? cl4?}} dim sf{end:{iobj: {cl2 cl4}}} } defclass "hasLocative"{ dim sf{out:{loc!}} } defclass "hasLocativeCan"{ "hasLocative" dim lp{out:{postvb+}} dim sf{end:{loc: {postvb}}} } defclass "hasLocativeClitic"{ "hasLocative" dim lp{out:{cl5!}} dim sf{end:{loc: {cl5}}} } defclass "hasGenitive"{ dim sf{out:{gen!}} } defclass "hasGenitiveCan"{ "hasGenitive" dim lp{out:{postvb+}} dim sf{end:{gen: {postvb}}} } defclass "hasGenitiveClitic"{ "hasGenitive" dim lp{out:{cl6!}} dim sf{end:{gen: {cl6}}} } defclass "hasManner"{ dim sf{out:{man!}} } defclass "hasMannerCan"{ "hasManner" dim lp{out:{postvb? innerv?}} dim sf{end:{man: {postvb}}} } defclass "Verb"{ dim sf{ out: {vmod* neg?} } dim lp{ out: {front* postvb*} on : {v} } } defclass "finiteActiveVerb"{ "Verb" dim lp{out: {neg?}} } defclass "pastpleActiveVerb" { "Verb" dim sf{out: {taux!}} dim lp{ out: {taux! innerv*}} } % 2) Lexical covariants (sets) defclass "ObjSet"{ "hasObjCan" |"hasObjClitic" } defclass "SubjSet"{ "hasSubjCan" } defclass "IobjSet"{ "hasIObjCan" |"hasIObjClitic" } defclass "IobjLocSet"{ "hasIObjCan" |"hasLocativeClitic" } defclass "LocSet"{ "hasLocativeCan" |"hasLocativeClitic" } defclass "GenSet"{ "hasGenitiveCan" |"hasGenitiveClitic" } defclass "MannerSet"{ "hasMannerCan" } defclass "IntransitiveSet"{ "SubjSet" } defclass "TransitiveSet"{ "SubjSet" "ObjSet" } defclass "TransitiveIobjSet"{ "SubjSet" "IobjSet" } defclass "TransitiveLocativeSet"{ "SubjSet" "LocSet" } defclass "TransitiveGenitiveSet"{ "SubjSet" "GenSet" } defclass "DitransitiveIobjSet"{ "SubjSet" "ObjSet" "IobjSet" } defclass "DitransitiveIobjGenSet"{ "SubjSet" "GenSet" "IobjSet" } defclass "IntransitiveMannerSet"{ "SubjSet" "MannerSet" } defclass "Vmod"{ dim sf{ in : {vmod!} } dim lp{ in : {front? postvb?} } } defclass "advVmod"{ "Vmod" dim lp{ in : {innerv?} on : {adv} } } defclass "prepVmod"{ "Vmod" dim lp{ on:{p} out:{ppost!} } dim sf{ out:{parg!} } } defclass "prepVArg"{ dim lp{ in:{postvb!} out:{ppost!} on:{p} } dim sf{ out:{parg!} } } defclass "prepAdjArg"{ dim lp{ in:{adjpost!} out:{ppost!} on:{p} } dim sf{ out:{parg!} } } defclass "locativePrep"{ "prepVArg" dim sf{ in:{loc!} } } defclass "locativeAdverb"{ dim lp{ in:{postvb!} on:{adv} } dim sf{ in:{loc!} } } defclass "mannerAdverb"{ dim lp{ in:{postvb? innerv?} on:{adv} } dim sf{ in:{man!} } } defentry{ "DitransitiveIobjSet" "finiteActiveVerb" dim lex {word:"donne"} } defentry{ "DitransitiveIobjSet" "pastpleActiveVerb" dim lex {word:"donné"} } defentry{ "TransitiveSet" "finiteActiveVerb" dim lex {word:"aime"} } defentry{ "TransitiveSet" "pastpleActiveVerb" dim lex {word:"aimé"} } defentry{ "IntransitiveSet" "finiteActiveVerb" dim lex {word:"dort"} } defentry{ "IntransitiveSet" "pastpleActiveVerb" dim lex {word:"dormi"} } defentry{ "TransitiveIobjSet" "finiteActiveVerb" dim lex {word:"parle"} } defentry{ "TransitiveIobjSet" "pastpleActiveVerb" dim lex {word:"parlé"} } defentry{ "TransitiveGenitiveSet" "finiteActiveVerb" dim lex {word:"parle"} } defentry{ "TransitiveGenitiveSet" "pastpleActiveVerb" dim lex {word:"parlé"} } defentry{ "DitransitiveIobjGenSet" "finiteActiveVerb" dim lex {word:"parle"} } defentry{ "DitransitiveIobjGenSet" "pastpleActiveVerb" dim lex {word:"parlé"} } defentry{ "TransitiveLocativeSet" "finiteActiveVerb" dim lex {word:"va"} } defentry{ "TransitiveLocativeSet" "pastpleActiveVerb" dim lex {word:"allé"} } defentry{ "IntransitiveMannerSet" "finiteActiveVerb" dim lex {word:"va"} } defentry{ "IntransitiveMannerSet" "pastpleActiveVerb" dim lex {word:"allé"} } defentry{ dim sf{ in : {neg!} } dim lp{ in : {neg!} on : {neg} } dim lex {word:"ne"} } defentry{ "cliticI" dim lex {word:"il"} } defentry{ "cliticI" dim lex {word:"je"} } defentry{ "cliticII" dim lex {word:"me"} } defentry{ "cliticII" dim lex {word:"te"} } defentry{ "cliticIII" dim lex {word:"le"} } defentry{ "cliticIII" dim lex {word:"la"} } defentry{ "cliticIV" dim lex {word:"lui"} } defentry{ "cliticV" dim lex {word:"y"} } defentry{ "cliticVI" dim lex {word:"en"} } defentry{ "propernoun" dim lex {word:"jean"} } defentry{ "propernoun" dim lex {word:"pierre"} } defentry{ "propernoun" dim sf{out:{det!}} dim lp{out:{det!}} dim lex {word:"France"} } defentry{ "commonnoun" dim lex {word:"enfant"} } defentry{ "commonnoun" dim lex {word:"fille"} } defentry{ "commonnoun" dim lex {word:"cadeau"} } defentry{ "determiner" dim lex {word:"le"} } defentry{ "determiner" dim lex {word:"un"} } defentry{ "determiner" dim lex {word:"la"} } defentry{ "epithetepre" dim lex {word:"petit"} } defentry{ "epithetepre" dim lex {word:"petite"} } defentry{ "epithetepost" dim lex {word:"timide"} } defentry{ "propernoun" dim lex {word:"marie"} } defentry{ "propernoun" dim lex {word:"Paris"} } defentry{ "commonnoun" dim lex {word:"place"} } defentry{ "commonnoun" dim lex {word:"situation"} } defentry{ "commonnoun" dim lex {word:"projet"} } defentry{ "advVmod" dim lex {word:"vraiment"} } defentry{ "advVmod" dim lex {word:"toujours"} } defentry{ "advVmod" dim lex {word:"maintenant"} } defentry{ "advVmod" dim lex {word:"gentiment"} } defentry{ "TenseAuxiliary" dim lex {word:"a"} } defentry{ "CopVerb" dim lex {word:"est"} } defentry{ "prepVmod" dim lex{word:"à"} } defentry{ "prepVmod" dim lex{word:"sur"} } defentry{ "prepVArg" dim sf{in:{iobj!}} dim lex{word:"à"} } defentry{ "prepVArg" dim sf{in:{gen!}} dim lex{word:"de"} } defentry{ "prepAdjArg" dim sf{in:{iobj!}} dim lex{word:"à"} } defentry{ "prepAdjArg" dim sf{in:{gen!}} dim lex{word:"de"} } defentry{ "locativePrep" dim lex{word:"vers"} } defentry{ "locativePrep" dim lex{word:"dans"} } defentry{ "locativePrep" dim lex{word:"à"} } defentry{ "locativePrep" dim lex{word:"chez"} } defentry{ "locativeAdverb" dim lex{word:"là"} } defentry{ "locativeAdverb" dim lex{word:"ici"} } defentry{ "locativeAdverb" dim lex{word:"là-bas"} } defentry{ "mannerAdverb" dim lex{word:"bien"} } defentry{ "mannerAdverb" dim lex{word:"mal"} } defentry{ "mannerAdverb" dim lex{word:"mieux"} } defentry{ "strongpronoun" dim lex{word:"moi"} } defentry{ "IntransitiveAdjSet" dim lex{word:"grand"} } defentry{ ("TransitiveIobjAdjSet" |"epithpostIobj") dim lex{word:"attentif"} } defentry{ ("TransitiveGenAdjSet" |"epithpostGen") dim lex{word:"content"} }