<< Prev | - Up - | Next >> |
Gamma
We now turn to the indexed family of binary grammatical principles. We will implement it using a case
statement dispatching on the role type.
proc {Gamma R W1 W2}
W2.roleLabel = R
case R of unit then skip
<DG Gamma: role>
end
<DG Gamma: constraints>
end
We equip a lexical node with a roleLabel
feature. This serves no other purpose than convenience for display purposes. It indicates the label on the incoming dependency edge if any.
roleLabel : _
A subject
must be a nominative NP and must agree with its mother
[] subject then
{FS.include W2.cat CATS_NP}
W1.agr = W2.agr
{FS.include W2.agr AGRS_NOM}
CATS_NP = {Lex.cats.encode [n pro]}
AGRS_NOM = {Lex.agrs.encode [nom]}
For a nominative
complement (e. g. with sein) the conditions are the same except that agreement is not required.
[] nominative then
{FS.include W2.cat CATS_NP}
{FS.include W2.agr AGRS_NOM}
An object
complement must be an accusative NP
[] object then
{FS.include W2.cat CATS_NP}
{FS.include W2.agr AGRS_ACC}
AGRS_ACC = {Lex.agrs.encode [acc]}
A dative
complement must be a dative NP
[] dative then
{FS.include W2.cat CATS_NP}
{FS.include W2.agr AGRS_DAT}
AGRS_DAT = {Lex.agrs.encode [dat]}
A det
(determiner) complement must have category det
and agree with its mother. Also, it must occur left-most in the yield of the mother (i. e. it must the minimum element).
[] det then
W2.cat = CAT_DET
W1.agr = W2.agr
W2.index = {FS.int.min W1.yield}
CAT_DET = {Lex.cat.encode det}
A ``zu'' particle must have category part
(particle), must be the word zu
(this should really be encoded), and must immediately precede its mother.
[] zu then
W2.cat = CAT_PART
W2.word = 'zu'
W1.index = W2.index+1
CAT_PART = {Lex.cat.encode part}
A separable verb prefix must have category vpref
and must be the prefix expected by the mother. Furthermore, it can only occur separated at the end of the mittelfeld, and its mother must be root.
[] vpref then
W2.cat = CAT_VPREF
{FS.include Lex.vpref.val2int.(W2.word) W1.vpref}
W2.index = {FS.int.max W2.field.mf}
W1.index = W1.field.root
CAT_VPREF = {Lex.cat.encode vpref}
A vp_zu
complement is an infinitive with zu: W2
must be an infinitive verb and it must have a ``zu'' as indicated by its zu
feature.
[] vp_zu then
W2.cat = CAT_VINF
W2.haszu = 1
CAT_VINF = {Lex.cat.encode vinf}
A vp_inf
complement is an infinitive without zu: W2
must be an infinitive verb and it must have no ``zu'' as indicated by its zu
feature.
[] vp_inf then
W2.cat = CAT_VINF
W2.haszu = 0
A vp_past
complement is a past participle. The auxiliary it expects must correspond to the mother. Further, since we are not treating relative clauses here, we can impose the restriction that if the mother is root, then then complement must occur at the end of the mittelfeld.
[] vp_past then
W2.cat = CAT_VPAST
{FS.card {FS.intersect W1.aux W2.marks}} >: 0
(W2.index=:{FS.int.max W2.field.mf})=(W1.index=:W1.field.root)
CAT_VPAST = {Lex.cat.encode vpast}
For an adj
(adjective) modifier, its category must be adj
and its mother must be a noun. The adjective must agree with the noun.
[] adj then
W1.cat = CAT_N
W2.cat = CAT_ADJ
W1.agr = W2.agr
CAT_N = {Lex.cat.encode n}
CAT_ADJ = {Lex.cat.encode adj}
For an adv
(adverb) modifier, the mother must be a verb. Furthermore, if W1
is not root, then both must be in the same field.
[] adv then
{FS.include W1.cat CATS_V}
W2.cat = CAT_ADV
(W1.index\=:W1.field.root)=<:(W1.fieldIndex=:W2.fieldIndex)
CATS_V = {Lex.cats.encode [vinf vfin vpast]}
CAT_ADV = {Lex.cat.encode adv}
For a pp_np
(PP) modifier, it must have category prep
(yes, we consider the preposition to be head of the PP) and the mother must be an NP or a verb. Further, the preposition must be left-most in its own yield.
[] pp_np then
W2.cat = CAT_PREP
{FS.include W1.cat CATS_NPV}
{FS.int.min W2.yield W2.index}
CATS_NPV = {FS.union CATS_NP CATS_V}
CAT_PREP = {Lex.cat.encode prep}
Now some additional constraints that it pays off to inject locally. If W2
is in the Nachfeld, then either its mother W1
is also in the Nachfeld, or W1
is an infinitive verb (no relative clauses yet).
{FS.reified.include W2.index W2.field.nf}=<:
{FS.reified.include W1.index W1.field.nf}+
(W2.cat=:CAT_VINF)
<< Prev | - Up - | Next >> |