Next: , Previous: Arabic, Up: Grammars


5.8 Benoit

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"}
}