Next: , Previous: MWEgen, Up: Grammars


5.31 Negation

This is a grammar modeling French negation. It was written by Denys Duchier.

usedim lp
usedim id
usedim lex
usedim neg

defdim id {
   deftype "id.label" {det suj obj iobj obj_s obj_s_de pp adv_neg ne root}
   deflabeltype "id.label"

   deftype "id.entry" {
      in  : valency("id.label")
      out : valency("id.label")
   }
   defentrytype "id.entry"

   useprinciple "principle.graph" { dims {D:id} }
   useprinciple "principle.tree" { dims {D:id} }
   useprinciple "principle.valency" {
      dims {D:id}
      args {In : _.D.entry.in
            Out: _.D.entry.out}
   }

   output "output.dags1"
   useoutput "output.dags1"
}

defdim lex {
   defentrytype { word : string }
   useprinciple "principle.entries" {}
}

defdim lp {
   deftype "lp.label" {df d n suj_f suj_cl_f neg_cl_f l_neg_adv_f
                       acc_cl_f dat_cl_f v r_neg_adv_f dep_v_f cplt_f root_f r}
   deflabeltype "lp.label"

   deftype "lp.entry" {
      in  : valency("lp.label")
      out : valency("lp.label")
      on  : iset("lp.label")
      blocks : set("id.label")
      blocks_lp : set("lp.label")
   }
   defentrytype "lp.entry"

   useprinciple "principle.graph" { dims {D: lp} }
   useprinciple "principle.tree" { dims {D: lp} }
   useprinciple "principle.valency" {
      dims {D:lp}
      args {In : _.D.entry.in
            Out: _.D.entry.out}}
   useprinciple "principle.order" {
      dims {D:lp}
      args {On: _.D.entry.on
            Order: [df d n suj_f suj_cl_f neg_cl_f l_neg_adv_f
                       acc_cl_f dat_cl_f v r_neg_adv_f dep_v_f cplt_f root_f r]
            Yields: true}}
   useprinciple "principle.projectivity" { dims {D:lp} }
   useprinciple "principle.climbing" {
      dims {D1:lp D2:id}
      args {MotherCards:true}}
   useprinciple "principle.barriers" {
      dims {D1: lp D2: id D3: lp}
      args {Blocks: _.D1.entry.blocks}}
   useprinciple "principle.barriers.labels" {
      dims {D1: lp D2: id D3: lp D4: lp}
      args {Blocks: _.D1.entry.blocks_lp}}
}

defdim neg {
   deftype "neg.label" { ne_n pas_n neg_n other_n }
   deflabeltype "neg.label"

   deftype "neg.entry" {
      in  : valency("neg.label")
      out : valency("neg.label")
      blocks : set("neg.label")
   }
   defentrytype "neg.entry"

   useprinciple "principle.graph" { dims {D:neg} }
   useprinciple "principle.tree" { dims {D:neg} }
   useprinciple "principle.valency" {
      dims {D:neg}
      args {In : _.D.entry.in
            Out: _.D.entry.out}}

   useprinciple "principle.climbing" {
      dims {D1:neg D2:id}
      args {MotherCards:true}}

   useprinciple "principle.barriers.labels" {
      dims {D1:neg D2:id D3:neg D4:neg}
      args {Blocks: _.D1.entry.blocks}}
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

defclass "root_id" {
  dim id { in : {} out : {root!}}}

defclass "root_lp" {
   dim lp { in : {} out : {root_f!} on : {r}}}

defclass "root_neg" {
   dim neg { in : {} out : {other_n!}}}

defclass "root" Word {
  "root_id"
  "root_lp"
  "root_neg"
  dim lex { word : Word }}

defentry { "root" { Word : "." } }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

defclass "det_id" {
   dim id { in : {det!}}}

defclass "det_lp" {
   dim lp { in : {df!}
            on : {d}}}

defclass "NEG" {
   dim neg { in : {neg_n!} }}

defclass "POS" {
   dim neg { in : {other_n!} }}

defclass "det" Word {
   "det_id"
   "det_lp"
   dim lex {word: Word}}

defentry {
   "det" { Word : "le" } "POS"}

defentry {
   "det" { Word : "un" } "POS"}

defentry {
   "det" { Word : "aucun" } "NEG"}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

defclass "nom_commun_id" {
   dim id {
      in  : { suj? obj? iobj? }
      out : { det! }}}

defclass "nom_commun_lp" {
   dim lp {
      in  : { suj_f? cplt_f? }
      out : { df! }
      on  : { n }
   }
}

defclass "nom_commun_neg" {
   "POS"
   dim neg { 
      out : {other_n*}
      blocks : {other_n}}}

defclass "nom_commun" Word {
   "nom_commun_id"
   "nom_commun_lp"
   "nom_commun_neg"
   dim lex { word : Word }}

defentry { "nom_commun" { Word : "ingénieur" }}
defentry { "nom_commun" { Word : "moteur" }}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

defclass "pronom_indefini_id" {
   dim id {
      in  : { suj? obj? }}}

defclass "pronom_indefini_lp" {
   dim lp {
      in  : { suj_f? cplt_f? }
      on  : { n }}}

defclass "pronom_indefini" Word {
   "pronom_indefini_id"
   "pronom_indefini_lp"
   dim lex { word : Word }}

defentry { "pronom_indefini" { Word : "personne" } "NEG"}
defentry { "pronom_indefini" { Word : "quelqu_un" } "POS"}
defentry { "pronom_indefini" { Word : "quelque_chose" } "POS"}
defentry { "pronom_indefini" { Word : "rien" } "NEG"
   dim lp { in : { l_neg_adv_f? r_neg_adv_f? }}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

defclass "pronom_clitique_id" { "POS" }

defclass "pronom_clitique_suj_id" {
   "pronom_clitique_id"
   dim id {
      in  : { suj! }}}
defclass "pronom_clitique_obj_id" {
   "pronom_clitique_id"
   dim id {
      in  : { obj! }}}
defclass "pronom_clitique_iobj_id" {
   "pronom_clitique_id"
   dim id {
      in  : { iobj! }}}

defclass "pronom_clitique_suj_lp" {
   dim lp { in : { suj_cl_f? } on : {n}}}
defclass "pronom_clitique_obj_lp" {
   dim lp { in : { acc_cl_f? } on : {n}}}
defclass "pronom_clitique_iobj_lp" {
   dim lp { in : { dat_cl_f? } on : {n}}}


defclass "pronom_clitique_suj" Word {
   "pronom_clitique_suj_id"
   "pronom_clitique_suj_lp"
   dim lex { word : Word }}
defclass "pronom_clitique_obj" Word {
   "pronom_clitique_obj_id"
   "pronom_clitique_obj_lp"
   dim lex { word : Word }}
defclass "pronom_clitique_iobj" Word {
   "pronom_clitique_iobj_id"
   "pronom_clitique_iobj_lp"
   dim lex { word : Word }}

defentry { "pronom_clitique_suj" { Word : "il" }}
defentry { "pronom_clitique_obj" { Word : "le" }}
defentry { "pronom_clitique_iobj" { Word : "lui" }}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

defclass "ne_clitique_id" {
   dim id {
      in  : { ne! }}}

defclass "ne_clitique_lp" {
   dim lp {
      in  : { neg_cl_f! }
      on  : {n}}}

defclass "ne_clitique_neg" {
   dim neg { in : {ne_n!} }}

defclass "ne_clitique" Word {
   "ne_clitique_id"
   "ne_clitique_lp"
   "ne_clitique_neg"
   dim lex { word : Word }}

defentry { "ne_clitique" { Word : "ne" }}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

defclass "adverbe_negatif_id" {
   dim id {
      in  : { adv_neg! }}}

defclass "adverbe_negatif_lp" {
   dim lp {
      in  : { l_neg_adv_f? r_neg_adv_f? }
      on  : { n }
   }
}

defclass "adverbe_negatif" Word {
   "adverbe_negatif_id"
   "adverbe_negatif_lp"
   dim lex { word : Word }}

defentry { "adverbe_negatif" { Word : "pas" }
   dim neg { in : {pas_n!}}}
defentry { "adverbe_negatif" { Word : "jamais" } "NEG" }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

defclass "verbe_POS_neg" {
   "POS"
   dim neg { out: {other_n*}}}

defclass "verbe_NE_PAS_neg" {
   "POS"
   dim neg { out: {ne_n! pas_n! other_n*}}}

defclass "verbe_NE_PAS_OPT_neg" {
   "POS"
   dim neg { out: {ne_n! pas_n? other_n*}}}

defclass "verbe_NE_neg" {
   "POS"
   dim neg { out: {ne_n! neg_n+ other_n*}}}

defclass "verbe_neg" {
   dim neg { blocks: {ne_n pas_n other_n}}
   ( "verbe_POS_neg"
    |"verbe_NE_PAS_neg"
    |"verbe_NE_neg" ) }

defclass "verbe_opt_neg" {
   dim neg { blocks: {ne_n pas_n other_n}}
   ( "verbe_POS_neg"
    |"verbe_NE_PAS_OPT_neg"
    |"verbe_NE_neg" ) }

defclass "verbe_id" {
   dim id {
      out : { adv_neg? ne? }}}

defclass "verbe_infinitif_id" {
   dim id {
      in  : { obj_s? }
      out : { suj? }}}		% ATTENTION!!!!

defclass "verbe_participe_passe_id" {
   dim id {
      in  : { pp? }}}

defclass "verbe_fini_id" {
   dim id {
      in  : { root? }
      out : { suj! }}}

defclass "verbe_transitif_nominal_id" {
   "verbe_id"
   dim id {
      out : { obj! }}}

defclass "verbe_transitif_phrastique_id" {
   "verbe_id"
   dim id {
      out : { obj_s! }}}

defclass "verbe_transitif_de_phrastique_id" {
   "verbe_id"
   dim id {
      out : { obj_s_de! }}}

defclass "verbe_ditransitif_nominal_id" {
   "verbe_transitif_nominal_id"
   dim id {
      out : { iobj! }}}

defclass "verbe_intransitif_id" {
   "verbe_id"
}

defclass "verbe_auxiliaire_id" {
   "verbe_id"
   dim id {
      out : { pp! }}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

defclass "verbe_lp" {
   dim lp {
      blocks : { ne adv_neg obj_s obj_s_de }
      blocks_lp : { cplt_f }}
}

defclass "verbe_fini_lp" {
   "verbe_lp"
   dim lp {
      in  : { root_f! }
      out : { suj_f? suj_cl_f? neg_cl_f? acc_cl_f? dat_cl_f? r_neg_adv_f? cplt_f* }
      on  : {v}
   }
}

defclass "verbe_infinitif_lp" {
   "verbe_lp"
   dim lp {
      in  : { cplt_f? }
      out : { neg_cl_f? l_neg_adv_f? acc_cl_f? dat_cl_f? cplt_f* }
      on  : {v}
   }
}

defclass "verbe_auxiliaire_lp" {
   "verbe_lp"
   dim lp {
      out : { dep_v_f? }
      on  : {v}
   }
}

defclass "verbe_auxiliaire_infinitif_lp" {
   "verbe_lp"
   dim lp {
      out : { r_neg_adv_f? }
      on  : {v}
   }
}

defclass "verbe_participe_passe_lp" {
   "verbe_lp"
   dim lp {
      in  : { dep_v_f! }
      out : { dep_v_f? cplt_f* }
      on  : {v}
   }
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

defclass "verbe_fini" {
   "verbe_fini_id"
   "verbe_fini_lp"
}

defentry {
   dim lex { word : "ose" }
   "verbe_fini"
   "verbe_transitif_phrastique_id"
   "verbe_opt_neg"
}

defentry {
   dim lex { word : "cesse" }
   "verbe_fini"
   "verbe_transitif_de_phrastique_id"
   "verbe_opt_neg"
}

defentry {
   dim lex { word : "peut" }
   "verbe_fini"
   "verbe_transitif_phrastique_id"
   "verbe_opt_neg"
}

defentry {
   dim lex { word : "voit" }
   "verbe_fini"
   ( "verbe_transitif_nominal_id"
    |"verbe_transitif_phrastique_id" )
   "verbe_neg"
}

defentry {
   dim lex { word : "avoue" }
   "verbe_fini"
   "verbe_transitif_phrastique_id"
   "verbe_neg"
}

defclass "verbe_participe_passe" {
   "verbe_participe_passe_id"
   "verbe_participe_passe_lp"
}

defentry {
   dim lex { word : "fait" }
   "verbe_participe_passe"
   ( "verbe_transitif_phrastique_id"
    |"verbe_transitif_nominal_id" )
   "verbe_neg"
}

defentry {
   dim lex { word : "fait" }
   "verbe_fini"
   "verbe_transitif_phrastique_id"
   "verbe_neg"
}

defclass "verbe_infinitif" {
   "verbe_infinitif_id"
   "verbe_infinitif_lp"
}

defentry {
   dim lex { word : "entrer" }
   "verbe_infinitif"
   "verbe_intransitif_id"
   "verbe_neg"
}

defentry {
   dim lex { word : "marcher" }
   "verbe_infinitif"
   "verbe_intransitif_id"
   "verbe_neg"
}

defclass "verbe_auxiliaire" {
   "verbe_auxiliaire_id"
   "verbe_auxiliaire_lp"
}

defentry {
   dim lex { word : "été" }
   "verbe_auxiliaire"
   "verbe_participe_passe"
   "verbe_neg"
}

defentry {
   dim lex { word : "a" }
   "verbe_auxiliaire"
   "verbe_fini"
   "verbe_neg"
}

defentry {
   dim lex { word : "avoir" }
   "verbe_auxiliaire"
   "verbe_infinitif"
   "verbe_auxiliaire_infinitif_lp"
   "verbe_neg"
 }

defentry {
   dim lex { word : "veut" }
   "verbe_fini"
   "verbe_transitif_phrastique_id"
   "verbe_neg"
}

defentry {
   dim lex { word : "voir" }
   "verbe_infinitif"
   "verbe_transitif_nominal_id"
   "verbe_neg"
}

defentry {
   dim lex { word : "démarrer" }
   "verbe_infinitif"
   "verbe_transitif_nominal_id"
   "verbe_neg"
}

defentry {
   dim lex { word : "vu" }
   "verbe_participe_passe"
   ( "verbe_intransitif_id"
    |"verbe_transitif_nominal_id" )
   "verbe_neg"
}

defentry {
   dim lex { word : "donne" }
   "verbe_fini"
   "verbe_ditransitif_nominal_id"
   "verbe_neg"
}

defentry {
   dim lex { word : "venir" }
   "verbe_infinitif"
   "verbe_intransitif_id"
   "verbe_neg"
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

defentry {
   dim lex { word : "de" }
   dim id {
      in  : { obj_s_de! }
      out : { obj_s! }}
   dim lp {
      in  : { cplt_f! }
      out : { cplt_f! }
      on  : { v }
      blocks : { obj_s }}
   dim neg {
      in : {other_n!}}}