Next: ESSLLI04_idlpdspaPW, Previous: ESSLLI04_idlpdsPW, Up: Grammars
This is the fourth part of the grammar developed in the ESSLLI 2004 course, using the ID, LP, DS and PA graph dimensions. It was written by Ralph Debusmann and Denys Duchier. The ESSLLI 2004 course slides can be found here: http://www.ps.uni-sb.de/~rade/talks.html.
usedim id usedim lp usedim ds usedim pa usedim lex usedim multi %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define dimension id defdim id { %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define types deftype "id.agr" {nom acc} deftype "id.agrs" iset("id.agr") deftype "id.attrs" {agr: "id.agr"} deftype "id.entry" {in: valency("id.label") out: valency("id.label") agrs: "id.agrs" agree: set("id.label") govern: vec("id.label" "id.agrs")} deftype "id.label" {det subj obj vbse vprt vinf part root} defattrstype "id.attrs" defentrytype "id.entry" deflabeltype "id.label" %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use principles 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}} useprinciple "principle.agr" { dims {D: id} args {Agr: _.D.attrs.agr Agrs: _.D.entry.agrs}} useprinciple "principle.agreement" { dims {D: id} args {Agr1: ^.D.attrs.agr Agr2: _.D.attrs.agr Agree: ^.D.entry.agree}} useprinciple "principle.government" { dims {D: id} args {Agr2: _.D.attrs.agr Govern: ^.D.entry.govern}} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use and choose outputs output "output.latex" output "output.latex1" output "output.pretty" } %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define dimension lp defdim lp { %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define types deftype "lp.entry" {in: valency("lp.label") out: valency("lp.label") on: iset("lp.label")} deftype "lp.label" {d p df n mf vcf pf v vxf root r} defentrytype "lp.entry" deflabeltype "lp.label" %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use principles 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: [d p df n mf vcf pf v vxf root r] Yields: true}} useprinciple "principle.projectivity" { dims {D: lp}} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use and choose outputs output "output.latex" output "output.latex1" output "output.pretty" } %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define dimension ds defdim ds { %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define types deftype "ds.entry" {in: valency("ds.label") out: valency("ds.label")} deftype "ds.label" {detd subjd objd vcd partd root} defentrytype "ds.entry" deflabeltype "ds.label" %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use principles useprinciple "principle.graph" { dims {D: ds}} useprinciple "principle.dag" { dims {D: ds} args {Connected: true DisjointDaughters: true}} useprinciple "principle.valency" { dims {D: ds} args {In: _.D.entry.in Out: _.D.entry.out}} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use and choose outputs output "output.latex" output "output.latex1" output "output.pretty" } %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define dimension pa defdim pa { %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define types deftype "pa.entry" {in: valency("pa.label") out: valency("pa.label")} deftype "pa.label" {arg1 arg2 arge del root} defentrytype "pa.entry" deflabeltype "pa.label" %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use principles useprinciple "principle.graph" { dims {D: pa}} useprinciple "principle.dag" { dims {D: pa} args {Connected: true DisjointDaughters: true}} useprinciple "principle.valency" { dims {D: pa} args {In: _.D.entry.in Out: _.D.entry.out}} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use and choose outputs output "output.latex" output "output.latex1" output "output.pretty" } %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define dimension lex defdim lex { %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define types defentrytype {word: string} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use and choose outputs output "output.dags" output "output.dags1" %% useoutput "output.dags1" } %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define dimension multi defdim multi { %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define types defentrytype {blocks_lpid: set("id.label") %% linkEnd_dsid: vec("ds.label" set("id.label")) linkEnd_idds: vec("id.label" set("ds.label")) %% linkBelowStart_pads: vec("pa.label" set("ds.label")) linkBelowEnd_pads: vec("pa.label" set("ds.label"))} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% use principles useprinciple "principle.climbing" { dims {D1: lp D2: id} args {MotherCards: true}} useprinciple "principle.barriers" { dims {D1: lp D2: id D3: multi} args {Blocks: _.D3.entry.blocks_lpid}} %% useprinciple "principle.climbing" { dims {D1: id D2: ds} args {MotherCards: false}} useprinciple "principle.linkingEnd" { dims {D1: ds D2: id D3: multi} args {End: ^.D3.entry.linkEnd_dsid}} useprinciple "principle.linkingEnd" { dims {D1: id D2: ds D3: multi} args {End: ^.D3.entry.linkEnd_idds}} %% useprinciple "principle.linkingBelowStartEnd" { dims {D1: pa D2: ds D3: multi} args {Start: ^.D3.entry.linkBelowStart_pads End: ^.D3.entry.linkBelowEnd_pads}} } %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define lexical classes %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% general classes %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% id defclass "root_id" { dim id {in: {} out: {root!}}} defclass "det_id" { dim id {in: {det? root?}}} defclass "cnoun_id" { dim id {in: {subj? obj? root?} out: {det!} agree: {det}}} defclass "pname_id" { dim id {in: {subj? obj? root?}}} defclass "fin_id" { dim id {in: {root?} out: {subj!} govern: {subj: {nom}}}} defclass "part_id" { dim id {in: {part? root?}}} defclass "vbse_id" { dim id {in: {vbse? root?}}} defclass "vinf_id" { dim id {in: {vinf? root?} out: {part!}}} defclass "vprt_id" { dim id {in: {vprt? root?}}} defclass "ersatz_id" { dim id {in: {vbse? vprt? root?}}} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% lp defclass "root_lp" { dim lp {in: {} out: {root!} on: {r}}} defclass "det_lp" { dim lp {in: {df? root?} on: {d}}} defclass "cnoun_lp" { dim lp {in: {mf? root?} out: {df!} on: {n}} dim multi {blocks_lpid: {det}}} defclass "pname_lp" { dim lp {in: {mf? root?} on: {n}}} defclass "fin_lp" { dim lp {in: {root?} out: {mf* vcf? vxf?} on: {v}} dim multi {blocks_lpid: {subj obj vbse vprt vinf part}}} defclass "part_lp" { dim lp {in: {pf? root?} on: {p}}} defclass "vinf_lp" { dim lp {out: {pf!}}} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% ds defclass "root_ds" { dim ds {in: {} out: {root!}}} defclass "det_ds" { dim ds {in: {detd? root?}}} defclass "cnoun_ds" { dim ds {in: {subjd* objd? root?} out: {detd!}}} defclass "pname_ds" { dim ds {in: {subjd* objd? root?}}} defclass "fin_ds" { dim ds {in: {root?}} dim multi {linkEnd_dsid: {subjd: {subj}}}} defclass "part_ds" { dim ds {in: {partd?}}} defclass "vbse_ds" { dim ds {in: {vcd?}}} defclass "vinf_ds" { dim ds {in: {vcd?} out: {partd!}}} defclass "vprt_ds" { dim ds {in: {vcd?}}} defclass "ersatz_ds" { dim ds {in: {vcd?}}} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% pa defclass "root_pa" { dim pa {in: {} out: {root* del*}}} defclass "det_pa" { dim pa {in: {arg1* arg2*}}} defclass "cnoun_pa" { dim pa {in: {root!} out: {arg1!}} dim multi {linkBelowEnd_pads: {arg1: {detd}}}} defclass "pname_pa" { dim pa {in: {root! arg1* arg2*}}} defclass "part_pa" { dim pa {in: {del!}}} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% altogether defclass "root" Word { "root_id" "root_lp" "root_ds" "root_pa" dim lex {word: Word}} defclass "det" Word Agrs { "det_id" "det_lp" "det_ds" "det_pa" dim id {agrs: Agrs} dim lex {word: Word}} defclass "cnoun" Word Agrs { "cnoun_id" "cnoun_lp" "cnoun_ds" "cnoun_pa" dim id {agrs: Agrs} dim lex {word: Word}} defclass "pname" Word { "pname_id" "pname_lp" "pname_ds" "pname_pa" dim lex {word: Word}} defclass "part" Word { "part_id" "part_lp" "part_ds" "part_pa" dim lex {word: Word}} defclass "fin" Word { "fin_id" "fin_lp" "fin_ds" dim lex {word: Word}} defclass "vbse" Word { "vbse_id" "vbse_ds" dim lex {word: Word}} defclass "vinf" Word { "vinf_id" "vinf_lp" "vinf_ds" dim lex {word: Word}} defclass "vprt" Word { "vprt_id" "vprt_ds" dim lex {word: Word}} defclass "ersatz" Word { "ersatz_id" "ersatz_ds" dim lex {word: Word}} defclass "mainverb" Word1 Word2 Word3 { "fin" {Word: Word1} | ("vbse" {Word: Word2} & "can") | ("vprt" {Word: Word3} & "can") | ("vinf" {Word: Word2} & ("can" | "noncan"))} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% special classes %% requiring an object (in accusative case) defclass "objc" { dim id {out: {obj!} govern: {obj: {acc}}}} %% offer the surface subject as a deep subject defclass "subjsubj" { dim multi {linkEnd_idds: {subj: {subjd}}}} %% offer the surface object as a deep subject defclass "objsubj" { dim multi {linkEnd_idds: {obj: {subjd}}}} %% require a deep object realized by a surface object defclass "objdobj" { dim ds {out: {objd!}} dim multi {linkEnd_dsid: {objd: {obj}}}} %% require arg1 realized by a deep subject defclass "arg1subjd" { dim pa {out: {arg1!}} dim multi {linkBelowStart_pads: {arg1: {subjd}} linkBelowEnd_pads: {arg1: {subjd detd}}}} %% require arg2 realized by a deep object defclass "arg2objd" { dim pa {out: {arg2!}} dim multi {linkBelowStart_pads: {arg2: {objd}} linkBelowEnd_pads: {arg2: {objd detd}}}} %% require a deep subject defclass "subjdc" { dim ds {out: {subjd!}}} %% require a deep object realized by a surface object defclass "objdc" { "objc" "objdobj"} %% require arg1 realized by a deep subject defclass "arg1" { "subjdc" "arg1subjd"} %% require arg2 realized by a deep object, realized by a surface %% object defclass "arg2" { "objdc" "arg2objd"} %% requiring an infinite verb with id label Label defclass "Labelc" Label { dim id {out: {Label!}}} %% require a deep verbal complement realized by an infinite verb with %% id label Label defclass "vcdLabel" Label { "Labelc" {Label: Label} dim ds {out: {vcd!}} dim multi {linkEnd_dsid: {vcd: {Label}}}} %% require arge realized by the deep verbal complement, realized by the %% infinite verb with id label Label defclass "arge" Label { "vcdLabel" {Label: Label} dim pa {out: {arge!}} dim multi {linkBelowEnd_pads: {arge: {vcd}}}} %% verbs in canonical position defclass "can" { dim lp {in: {vcf? root?} on: {v} out: {vcf?}}} %% verbs in non-canonical position defclass "noncan" { dim lp {in: {vxf? root?} on: {v} out: {mf* vcf? vxf?}}} %% words with semantic content defclass "cont" { dim pa {in: {root!|arge!}}} %% words without semantic content defclass "nocont" { dim pa {in: {del!}}} %% intransitive verbs defclass "intransitive" { "cont" "arg1"} %% transitive verbs defclass "transitive" { "cont" "arg1" "arg2"} %% subject-to-subject raising defclass "subjraising" { "cont" "arge" {Label: vinf} "subjsubj"} %% subject-to-subject control defclass "subjcontrol" { "subjraising" "arg1"} %% subject-to-object control defclass "objcontrol" { "cont" "arge" {Label: vinf} "objsubj" "arg1" "arg2"} %% auxiliaries defclass "aux" Label { "nocont" "vcdLabel" {Label: Label} "subjsubj"} %% auxiliaries (past participle) defclass "auxprt" { "aux" {Label: vprt} } %% auxiliaries (bare infinitive), also used for modals defclass "auxbse" { "aux" {Label: vbse} } %% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% define entries % Roots defentry { "root" {Word: "."}} % Determiners defentry { "det" {Agrs: {nom} Word: "ein"}} defentry { "det" {Agrs: {acc} Word: "einen"}} defentry { "det" {Agrs: {nom acc} Word: "eine"}} % Common nouns defentry { "cnoun" {Agrs: {nom acc} Word: "frau"}} defentry { "cnoun" {Agrs: {nom acc} Word: "mann"}} defentry { "cnoun" {Agrs: {nom acc} Word: "roman"}} % Proper names defentry { "pname" {Word: "maria"}} defentry { "pname" {Word: "peter"}} defentry { "pname" {Word: "hans"}} % zu-particle defentry { "part" {Word: "zu"}} % Auxiliaries defentry { "fin" {Word: "wird"} "auxbse"} defentry { "fin" {Word: "hat"} "auxprt"} defentry { "vbse" {Word: "haben"} "auxprt" "noncan"} % Modals defentry { "vbse" {Word: "koennen"} "auxbse" "can"} defentry { "ersatz" {Word: "koennen"} "auxbse" "noncan"} % Main verbs defentry { "intransitive" "mainverb" {Word1: "lacht" Word2: "lachen" Word3: "gelacht"}} defentry { "transitive" "mainverb" {Word1: "liebt" Word2: "lieben" Word3: "geliebt"}} defentry { "transitive" "mainverb" {Word1: "schreibt" Word2: "schreiben" Word3: "geschrieben"}} defentry { "subjraising" "mainverb" {Word1: "scheint" Word2: "scheinen" Word3: "geschienen"}} defentry { "subjcontrol" "mainverb" {Word1: "versucht" Word2: "versuchen" Word3: "versucht"}} defentry { "subjcontrol" "mainverb" {Word1: "verspricht" Word2: "versprechen" Word3: "versprochen"}} defentry { "objcontrol" "mainverb" {Word1: "ueberredet" Word2: "ueberreden" Word3: "ueberredet"}}