This is a grammar for English covering the couple of sentences in the paper Multiword expressions as dependency subgraphs (References) for the ACL 2004 Workshop on Multiword Expressions. It uses three graph dimensions: ID and LP (as in TDG) and PA (Predicate Argument). The paper and the grammar were written by Ralph Debusmann.
This is the grammar for the generation direction.
usedim id usedim lp usedim pa usedim lex %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define dimension id defdim id { %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define types defentrytype "id.entry" deflabeltype "id.label" deftype "id.entry" {in: valency("id.label") out: valency("id.label") end: vec("id.label" set("lp.label")) outgroups: vec("id.label" iset("lex.group")) word: string} deftype "id.label" {det obj part pcomp pobj pmod subj del root} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use principles useprinciple "principle.graph" { dims {D: id}} useprinciple "principle.tree" { dims {D: id}} useprinciple "principle.valency" { dims {D: id}} useprinciple "principle.linkingEnd" { dims {D1: id D2: lp D3: id}} useprinciple "principle.government1" { dims {D: id D1: lex} args {Agr2: _.D1.entry.group Govern: ^.D.entry.outgroups}} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use and choose outputs output "output.latex" output "output.latex1" output "output.pretty" } %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define dimension lp defdim lp { %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define types defentrytype "lp.entry" deflabeltype "lp.label" deftype "lp.entry" {in: valency("lp.label") out: valency("lp.label") on: iset("lp.label") outgroups: vec("lp.label" iset("lex.group")) word: string} deftype "lp.label" {subjf finf objf partf pobjf detf nounf pmodf prepf pcompf del root root1} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use principles 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: [subjf finf objf partf pobjf detf nounf pmodf prepf pcompf del root root1] Yields: true}} useprinciple "principle.projectivity" { dims {D: lp}} useprinciple "principle.climbing" { dims {D1: lp D2: id}} useprinciple "principle.government1" { dims {D: lp D1: lex} args {Agr2: _.D1.entry.group Govern: ^.D.entry.outgroups}} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use and choose outputs output "output.latex" output "output.latex1" output "output.pretty" } %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define dimension pa defdim pa { %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define types defentrytype "pa.entry" deflabeltype "pa.label" deftype "pa.entry" {in: valency("pa.label") out: valency("pa.label") end: vec("pa.label" set("id.label")) outgroups: vec("pa.label" iset("lex.group")) word: string} deftype "pa.label" {arg1 arg2 del root} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use principles useprinciple "principle.graph" { dims {D: pa}} useprinciple "principle.tree" { dims {D: pa}} useprinciple "principle.valency" { dims {D: pa}} useprinciple "principle.linkingEnd" { dims {D1: pa D2: id D3: pa}} useprinciple "principle.government1" { dims {D: pa D1: lex} args {Agr2: _.D1.entry.group Govern: ^.D.entry.outgroups}} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use and choose outputs output "output.latex" output "output.latex1" output "output.pretty" } %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define dimension lex defdim lex { %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define types deftype "lex.group" {rootg prong date1g date2g argue1g argue2g} defentrytype {word: string group: "lex.group"} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use principles useprinciple "principle.entries" {} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use and choose outputs output "output.dags" output "output.dags1" output "output.dags2" %% useoutput "output.dags1" } %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% lexicon defclass "ROOT" Word { dim id {in: {} out: {del* root} word: Word} dim lp {in: {} on: {root1} out: {del* root} word: Word} dim pa {in: {} out: {del* root*} word: Word} dim lex {word: Word group: rootg}} defclass "PRON" Word { dim id {in: {root?} out: {} word: Word} dim lp {in: {root?} on: {nounf} word: Word} dim pa {in: {arg1* arg2*} word: Word} dim lex {word: Word group: prong}} defclass "PRON_NOM" Word { "PRON" {Word: Word} dim id {in: {subj?}} dim lp {in: {subjf?}}} defclass "PRON_ACC" Word { "PRON" {Word: Word} dim id {in: {obj? pcomp?}} dim lp {in: {objf? pcompf?}}} defentry { "ROOT" {Word: "."} } defentry { "PRON_NOM" {Word: "He"} } defentry { "PRON_ACC" {Word: "her"} } %% date1: "dates" defclass "date1g_1" Syn Sem { dim id {in: {root?} out: {subj obj} end: {subj: {subjf}} word: Syn} dim lp {in: {root?} out: {subjf objf} on: {finf} word: Syn} dim pa {in: {root?} out: {arg1 arg2} end: {arg1: {subj} arg2: {obj}} word: Sem} dim lex {word: Sem group: date1g}} defclass "date1g_2" Syn Sem { dim id {in: {del?} out: {} word: Syn} dim lp {in: {del?} out: {} on: {del} word: Syn} dim pa {in: {del?} out: {} word: Sem} dim lex {word: Sem group: date1g}} defentry { "date1g_1" {Syn: "dates" Sem: "date1"} } defentry { "date1g_2" {Syn: "" Sem: "date2"} } %% date2: "takes out" defclass "date2g_1" Syn Sem { dim id {in: {root?} out: {subj obj part} end: {subj: {subjf}} outgroups: {part: {date2g}} word: Syn} dim lp {in: {root?} out: {subjf objf partf} on: {finf} outgroups: {partf: {date2g}} word: Syn} dim pa {in: {root?} out: {arg1 arg2} end: {arg1: {subj} arg2: {obj}} word: Sem} dim lex {word: Sem group: date2g}} defclass "date2g_2" Syn Sem { dim id {in: {part?} out: {} word: Syn} dim lp {in: {partf?} out: {} on: {partf} word: Syn} dim pa {in: {del?} out: {} word: Sem} dim lex {word: Sem group: date2g}} defentry { "date2g_1" {Syn: "takes" Sem: "date1"} } defentry { "date2g_2" {Syn: "out" Sem: "date2"} } %% argues with defclass "argue1g_1" Syn Sem { dim id {in: {root?} out: {subj pobj} outgroups: {pobj: {argue1g}} word: Syn} dim lp {in: {root?} out: {subjf pobjf} on: {finf} outgroups: {pobjf: {argue1g}} word: Syn} dim pa {in: {root?} out: {arg1 arg2} end: {arg1: {subj} arg2: {pcomp}} word: Sem} dim lex {word: Sem group: argue1g}} defclass "argue1g_2" Syn Sem { dim id {in: {pobj?} out: {pcomp} word: Syn} dim lp {in: {pobjf?} out: {pcompf} on: {prepf} word: Syn} dim pa {in: {del?} out: {} word: Sem} dim lex {word: Sem group: argue1g}} defclass "argue1g_3" Syn Sem { dim id {in: {del?} out: {} word: Syn} dim lp {in: {del?} out: {} on: {del} word: Syn} dim pa {in: {del?} out: {} word: Sem} dim lex {word: Sem group: argue1g}} defclass "argue1g_4" Syn Sem { dim id {in: {del?} out: {} word: Syn} dim lp {in: {del?} out: {} on: {del} word: Syn} dim pa {in: {del?} out: {} word: Sem} dim lex {word: Sem group: argue1g}} defentry { "argue1g_1" {Syn: "argues" Sem: "argue1"} } defentry { "argue1g_2" {Syn: "with" Sem: "argue2"} } defentry { "argue1g_3" {Syn: "" Sem: "argue3"} } defentry { "argue1g_4" {Syn: "" Sem: "argue4"} } %% has an argument with defclass "argue2g_1" Syn Sem { dim id {in: {root?} out: {subj obj} end: {subj: {subjf}} outgroups: {obj: {argue2g}} word: Syn} dim lp {in: {root?} out: {subjf objf} on: {finf} outgroups: {objf: {argue2g}} word: Syn} dim pa {in: {del?} out: {} word: Sem} dim lex {word: Sem group: argue2g}} defclass "argue2g_2" Syn Sem { dim id {in: {det?} out: {} word: Syn} dim lp {in: {detf?} out: {} on: {detf} word: Syn} dim pa {in: {del?} out: {} word: Sem} dim lex {word: Sem group: argue2g}} defclass "argue2g_3" Syn Sem { dim id {in: {obj?} out: {det pmod} outgroups: {det: {argue2g} pmod: {argue2g}} word: Syn} dim lp {in: {objf?} out: {detf pmodf} on: {nounf} outgroups: {detf: {argue2g} pmodf: {argue2g}} word: Syn} dim pa {in: {root?} out: {arg1 arg2} end: {arg1: {subj} arg2: {pcomp}} word: Sem} dim lex {word: Sem group: argue2g}} defclass "argue2g_4" Syn Sem { dim id {in: {pmod?} out: {pcomp} word: Syn} dim lp {in: {pmodf?} out: {pcompf} on: {prepf} word: Syn} dim pa {in: {del?} out: {} word: Sem} dim lex {word: Sem group: argue2g}} defentry { "argue2g_1" {Syn: "has" Sem: "argue1"} } defentry { "argue2g_2" {Syn: "an" Sem: "argue2"} } defentry { "argue2g_3" {Syn: "argument" Sem: "argue3"} } defentry { "argue2g_4" {Syn: "with" Sem: "argue4"} }