structure-unary := structure & [ SYNSEM.LOCAL.CONT [ RELS [ LIST #rfirst, LAST #rlast ], HCONS [ LIST #hfirst, LAST #hlast ] ], C-CONT [ RELS [ LIST #rmiddle, LAST #rlast ], HCONS [ LIST #hmiddle, LAST #hlast ] ], ORTH [ FROM #from, TO #to ], ARGS < sign-match & [ SYNSEM.LOCAL.CONT [ RELS [ LIST #rfirst, LAST #rmiddle ], HCONS [ LIST #hfirst, LAST #hmiddle ] ], ORTH [ FROM #from, TO #to ] ] > ]. structure-binary := structure & [ SYNSEM.LOCAL.CONT [ RELS [ LIST #rfirst, LAST #rlast ], HCONS [ LIST #hfirst, LAST #hlast ] ], C-CONT [ RELS [ LIST #rmiddle2, LAST #rlast ], HCONS [ LIST #hmiddle2, LAST #hlast ] ], ORTH [ FROM #from, TO #to ], ARGS < sign-match & [ SYNSEM.LOCAL.CONT [ RELS [ LIST #rfirst, LAST #rmiddle1 ], HCONS [ LIST #hfirst, LAST #hmiddle1 ] ], ORTH [ FROM #from ] ], sign-match & [ SYNSEM.LOCAL.CONT [ RELS [ LIST #rmiddle1, LAST #rmiddle2 ], HCONS [ LIST #hmiddle1, LAST #hmiddle2 ] ], ORTH [ TO #to ] ] > ]. ;; Headed structures structure-headed := structure & [ HD-DTR.SYNSEM synsem-match & [ LOCAL [ CAT [ HEAD #head, LINEAR-C [ DONE + ] ], PLACE-V #place-v, PLACE-N #place-n, PLACE-O #place-o ] ], SYNSEM [ LOCAL [ CAT [ HEAD #head, LINEAR-C linear-coord-start ], PLACE-V #place-v, PLACE-N #place-n, PLACE-O #place-o ] ] ]. ; Unary headed rules are always sorted. structure-headed-unary := structure-headed & structure-unary & [ HD-DTR #sign, ARGS < #sign > ]. ; Binary structures have to be sorted by head-first or head-last. structure-headed-binary := structure-headed & structure-binary & [ NH-DTR [ SYNSEM synsem-match & [ LOCAL.CAT.LINEAR-C.DONE + ], LR-PHASE lr-phase-finish ], HD-DTR [ LR-PHASE lr-phase-finish ], LR-PHASE lr-phase-phrase ]. structure-head-first := structure-headed-binary & [ ARGS < #0 , #1 >, HD-DTR #0, NH-DTR #1 ]. structure-head-last := structure-headed-binary & [ ARGS < #0 , #1 >, HD-DTR #1, NH-DTR #0 ]. ;; Non-headed structures structure-non-headed := structure. structure-non-headed-unary := structure-non-headed & structure-unary & [ ARGS < [ SYNSEM.LOCAL.CAT.LINEAR-C.DONE +, LR-PHASE lr-phase-finish ] >, SYNSEM [ LOCAL.CAT.LINEAR-C linear-coord-start ], LR-PHASE lr-phase-phrase ]. structure-non-headed-binary := structure-non-headed & structure-binary & [ ARGS < [ LR-PHASE lr-phase-finish ], [ LR-PHASE lr-phase-finish ] >, LR-PHASE lr-phase-phrase ]. ;; Needed to get PET working: one (never-matching) inflectional rule. structure-infl := structure-headed-unary & word. ;; Different semantic constructions structure-add-no-rels-hcons := structure & [ C-CONT [ RELS , HCONS ] ]. structure-compositional := structure-headed & structure-add-no-rels-hcons & [ C-CONT [ HOOK #hook ], HD-DTR.SYNSEM.LOCAL.CONT [ HOOK #hook ] ]. structure-anti-compositional := structure-headed-binary & structure-add-no-rels-hcons & [ C-CONT [ HOOK #hook ], NH-DTR.SYNSEM.LOCAL.CONT [ HOOK #hook ] ]. structure-add-1-rel := structure & [ ORTH [ FROM #from, TO #to ], C-CONT [ RELS ] ]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Unary headed structures ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; structure-np-no-det := structure-compositional & structure-headed-unary & [ HD-DTR.SYNSEM [ LOCAL [ CAT [ HEAD head-super-noun, VAL val-saturated & #val, LINEAR-N linear-n-can-det, LINEAR-C #c-linear ] ], NONLOCAL #nonlocal ], SYNSEM [ LOCAL [ CAT [ VAL #val, LINEAR-N linear-n-did-det, LINEAR-C #c-linear ] ], NONLOCAL #nonlocal ], LR-PHASE lr-phase-phrase ]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Binary headed structures ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; structure-verbal := structure-headed-binary & [ SYNSEM.LOCAL [ CAT cat-verbal & [ VOICE #voice ] ], HD-DTR.SYNSEM.LOCAL [ CAT cat-verbal & [ VOICE #voice ] ] ]. structure-nominal := structure-headed-binary & [ SYNSEM.LOCAL.CAT [ HEAD head-super-noun ], HD-DTR.SYNSEM.LOCAL.CAT [ HEAD head-super-noun ] ]. structure-other := structure-headed-binary & [ SYNSEM.LOCAL.CAT cat-other, HD-DTR.SYNSEM.LOCAL.CAT cat-other ]. structure-no-que := structure-headed-binary & [ SYNSEM [ NONLOCAL.QUE #que & agr-no-match ], HD-DTR.SYNSEM [ NONLOCAL.QUE #que ], NH-DTR.SYNSEM [ NONLOCAL.QUE #que ] ]. structure-que-from-nh := structure-headed-binary & [ SYNSEM [ NONLOCAL.QUE #que ], NH-DTR.SYNSEM [ NONLOCAL.QUE #que ] ]. structure-no-rel := structure-headed-binary & [ SYNSEM [ NONLOCAL.REL #rel & local-no-match ], HD-DTR.SYNSEM [ NONLOCAL.REL #rel ], NH-DTR.SYNSEM [ NONLOCAL.REL #rel ] ]. structure-rel-from-nh := structure-headed-binary & [ SYNSEM [ NONLOCAL.REL #rel ], NH-DTR.SYNSEM [ NONLOCAL.REL #rel ] ]. ;; Generic schemata ;; Adjunct vs non-adjunct: adjunct takes the CONT from its non-head daughter, non-adjunct from its head daughter. ;; Head-adjunct requires that the non-head selects for the head. structure-head-non-adjunct := structure-headed-binary & [ SYNSEM [ LOCAL.CAT.HEAD.MOD #mod ], HD-DTR.SYNSEM [ LOCAL.CAT.HEAD.MOD #mod ] ]. structure-head-adjunct := structure-head-non-complement & structure-head-non-cluster & structure-head-non-filler-from-hd & structure-head-non-apposition & structure-head-non-specifier & structure-head-non-subject & structure-compositional & structure-que-from-nh & structure-rel-from-nh & [ SYNSEM [ LOCAL.CAT.HEAD.MOD #hd-mod ], NH-DTR.SYNSEM [ LOCAL.CAT [ HEAD [ MOD #mod ], VAL [ SUBCAT < > ] ] ], HD-DTR.SYNSEM #mod & [ LOCAL.CAT.HEAD [ MOD #hd-mod, MODABLE + ] ] ]. structure-head-non-specifier := structure-headed-binary & [ SYNSEM [ LOCAL.CAT.VAL.SPR #spec ], HD-DTR.SYNSEM [ LOCAL.CAT.VAL.SPR #spec ] ]. structure-head-specifier := structure-head-non-complement & structure-head-non-cluster & structure-head-non-adjunct & structure-head-non-filler-from-hd & structure-head-non-apposition & structure-head-non-subject & structure-que-from-nh & structure-rel-from-nh & structure-compositional & [ SYNSEM [ LOCAL.CAT.VAL.SPR < > ], HD-DTR.SYNSEM #synsem, NH-DTR.SYNSEM [ LOCAL.CAT.VAL.SPR < #synsem > ] ]. structure-head-non-subject := structure-headed-binary & [ SYNSEM [ LOCAL.CAT.VAL.SUBJ #subj ], HD-DTR.SYNSEM [ LOCAL.CAT.VAL.SUBJ #subj ] ]. structure-head-subject := structure-head-non-complement & structure-head-non-cluster & structure-head-non-adjunct & structure-head-non-filler-from-hd & structure-head-non-apposition & structure-head-non-specifier & structure-que-from-nh & structure-rel-from-nh & structure-compositional & [ SYNSEM [ LOCAL.CAT.VAL.SUBJ < > ], HD-DTR.SYNSEM [ LOCAL.CAT.VAL.SUBJ < #subj > ], NH-DTR.SYNSEM #subj ]. ;; Complement vs non-complement: complement discharges the head of the subcat list, while non-complement just copies the SUBCAT feature. The added constituent should only be added when the non-head is saturated. structure-head-non-complement := structure-headed-binary & [ SYNSEM [ LOCAL.CAT.VAL.SUBCAT #subcat ], HD-DTR.SYNSEM [ LOCAL.CAT.VAL.SUBCAT #subcat ] ]. structure-head-complement := structure-head-non-adjunct & structure-head-non-cluster & structure-head-non-filler-from-hd & structure-head-non-apposition & structure-head-non-specifier & structure-head-non-subject & structure-que-from-nh & structure-rel-from-nh & structure-compositional & [ SYNSEM [ LOCAL [ CAT.VAL.SUBCAT #1 ], NONLOCAL [ REL #rel ] ], HD-DTR [ SYNSEM.LOCAL [ CAT.VAL.SUBCAT [ FIRST #2, REST #1 ] ] ], NH-DTR [ SYNSEM #2 & [ NONLOCAL.REL #rel ] ] ]. ;; Cluster vs non-cluster: cluster discharges the head of the XCOMP list, while non-cluster just copies the XCOMP feature. XCOMP of the non-head daughter is appended to the end of the list, to account for extraposed zu-sentences: das werde ich versuchen wollen zu machen ; The empty list requirement is needed to prevent other schemata from combining with underspecified SUBCAT frames (e.g. in argument attraction) structure-head-non-cluster := structure-headed-binary & [ SYNSEM [ LOCAL.CAT.VAL.XCOMP #xcomp & < > ], HD-DTR.SYNSEM [ LOCAL.CAT.VAL.XCOMP #xcomp ] ]. structure-head-cluster := structure-head-non-adjunct & structure-head-non-complement & structure-head-non-apposition & structure-head-non-specifier & structure-head-non-subject & structure-head-non-filler-from-nh & structure-que-from-nh & structure-no-rel & structure-compositional & [ SYNSEM [ LOCAL.CAT [ HEAD.AGR.PN #pn, VAL.XCOMP #1 ], NONLOCAL [ REL local-no-match ] ], HD-DTR [ SYNSEM [ LOCAL.CAT.VAL.XCOMP [ FIRST #2, REST #1 ] ] ], NH-DTR [ SYNSEM #2 & [ LOCAL.CAT [ HEAD.AGR.PN #pn, VAL.XCOMP < > ], NONLOCAL [ REL local-no-match ] ] ] ]. ;; Filler vs non-filler: filler discharges the SLASH feature by one (selects for LOCAL), while non-filler concatenates the SLASH lists of both daughters. structure-head-non-filler-from-hd := structure-headed-binary & [ SYNSEM.NONLOCAL.SLASH #slash, HD-DTR.SYNSEM.NONLOCAL.SLASH #slash, NH-DTR.SYNSEM.NONLOCAL.SLASH local-no-match ]. structure-head-non-filler-from-nh := structure-headed-binary & [ SYNSEM.NONLOCAL.SLASH #slash, HD-DTR.SYNSEM.NONLOCAL.SLASH local-no-match, NH-DTR.SYNSEM.NONLOCAL.SLASH #slash ]. structure-head-filler := structure-head-non-adjunct & structure-head-non-complement & structure-head-non-cluster & structure-head-non-apposition & structure-head-non-specifier & structure-head-non-subject & structure-que-from-nh & structure-no-rel & structure-compositional & [ SYNSEM.NONLOCAL.SLASH local-no-match, HD-DTR.SYNSEM.NONLOCAL.SLASH #local & [ CAT.VAL.SUBCAT < > ], NH-DTR.SYNSEM [ LOCAL #local, NONLOCAL.SLASH local-no-match ] ]. structure-head-non-apposition := structure-headed-binary & [ HD-DTR.SYNSEM.LOCAL.CAT.HEAD.APP #app, SYNSEM.LOCAL.CAT.HEAD.APP #app ]. structure-head-apposition := structure-head-non-adjunct & structure-head-non-complement & structure-head-non-cluster & structure-head-non-specifier & structure-head-non-subject & structure-head-non-filler-from-hd & structure-no-que & structure-no-rel & structure-add-1-rel & [ HD-DTR.SYNSEM.LOCAL [ CAT [ HEAD [ AGR [ CASE case, GENDER gender ], APP + ] ], CONT [ HOOK #hook & [ INDEX #noun ] ] ], NH-DTR.SYNSEM.LOCAL [ CAT [ HEAD head-non-pronominal & [ AGR [ CASE case-nom, GENDER gender ] ], LINEAR-N linear-n-can-pre, VAL.SUBCAT < > ], CONT [ HOOK.INDEX #app ] ], SYNSEM.LOCAL [ CAT [ HEAD [ APP + ] ] ], C-CONT [ HOOK #hook, RELS , HCONS ] ]. ;; Verbal domain ;; ;; Different rules for different topological fields. structure-verbal-vorfeld := structure-verbal & [ HD-DTR.SYNSEM.LOCAL.CAT [ V-POS v-pos-first, BRANCHING #b, LINEAR-V linear-v-can-vf ], NH-DTR.SYNSEM.LOCAL.PLACE-V place-v-vf, SYNSEM.LOCAL.CAT [ V-POS v-pos-second, BRANCHING #b, LINEAR-V linear-v-did-vf ] ]. structure-verbal-mittelfeld-lb := structure-verbal & [ HD-DTR.SYNSEM.LOCAL.CAT [ V-POS v-pos-first, BRANCHING branching-left, LINEAR-V linear-v-can-lb-mf ], NH-DTR.SYNSEM.LOCAL.PLACE-V place-v-mf, SYNSEM.LOCAL.CAT [ V-POS v-pos-first, BRANCHING branching-left, LINEAR-V linear-v-did-lb-mf ] ]. structure-verbal-mittelfeld-rb := structure-verbal & [ HD-DTR.SYNSEM.LOCAL.CAT [ V-POS v-pos-last, BRANCHING branching-right, LINEAR-V linear-v-can-rb-mf ], NH-DTR.SYNSEM.LOCAL.PLACE-V place-v-mf, SYNSEM.LOCAL.CAT [ V-POS v-pos-last, BRANCHING branching-right, LINEAR-V linear-v-did-rb-mf ] ]. ; Assumption: left-branching sentences do not have a Nachfeld. structure-verbal-nachfeld := structure-verbal & [ HD-DTR.SYNSEM.LOCAL.CAT [ V-POS v-pos-last, BRANCHING branching-right, LINEAR-V linear-v-can-rb-nf ], NH-DTR.SYNSEM.LOCAL.PLACE-V place-v-nf, SYNSEM.LOCAL.CAT [ V-POS v-pos-last, BRANCHING branching-right, LINEAR-V linear-v-did-rb-nf ] ]. ; Here, the topological field features should be taken over from the NH-DTR. Also, only final verbs are allowed here as HD. ; Restrictions on the linear status are imposed on the NH-DTR, and not on the HD-DTR. structure-verbal-left-bracket := structure-verbal & [ NH-DTR.SYNSEM.LOCAL.CAT [ V-POS v-pos-last, BRANCHING branching-right ], HD-DTR.SYNSEM.LOCAL [ CAT [ HEAD.FORM-VERB form-verb-12, LINEAR-V linear-v-can-rb-lb ] ], SYNSEM.LOCAL.CAT [ V-POS v-pos-first, BRANCHING branching-right, LINEAR-V linear-v-did-rb-lb ] ]. ; Maybe in left-bracket: demand that SUBCAT and SUBJ are empty lists? Stuff in the vorfeld has to be in SLASH anyway, if any. structure-verbal-right-bracket := structure-verbal & [ HD-DTR.SYNSEM.LOCAL.CAT [ V-POS v-pos-last, BRANCHING branching-right ], NH-DTR.SYNSEM.LOCAL [ CAT [ LINEAR-V linear-v-can-rb-rb ], PLACE-V place-v-rb ], SYNSEM.LOCAL.CAT [ V-POS v-pos-last, BRANCHING branching-right, LINEAR-V linear-v-did-rb-rb ] ]. ; Couples the schemata to specific topological fields. structure-vorfeld-head-filler := structure-verbal-vorfeld & structure-head-filler. structure-vorfeld-head-adjunct := structure-verbal-vorfeld & structure-head-adjunct. structure-left-bracket-head-cluster := structure-verbal-left-bracket & structure-head-cluster. structure-mittelfeld-lb-head-subject := structure-verbal-mittelfeld-lb & structure-head-subject & [ NH-DTR.SYNSEM.NONLOCAL.REL local-no-match ]. structure-mittelfeld-lb-head-complement := structure-verbal-mittelfeld-lb & structure-head-complement & [ NH-DTR.SYNSEM.NONLOCAL.REL local-no-match ]. structure-mittelfeld-lb-head-adjunct := structure-verbal-mittelfeld-lb & structure-head-adjunct. structure-mittelfeld-rb-head-subject := structure-verbal-mittelfeld-rb & structure-head-subject & [ NH-DTR.SYNSEM.NONLOCAL.REL local-no-match ]. structure-mittelfeld-rb-head-complement := structure-verbal-mittelfeld-rb & structure-head-complement & [ NH-DTR.SYNSEM.NONLOCAL.REL local-no-match ]. structure-mittelfeld-rb-head-adjunct := structure-verbal-mittelfeld-rb & structure-head-adjunct. structure-right-bracket-head-cluster := structure-verbal-right-bracket & structure-head-cluster. structure-nachfeld-head-subject := structure-verbal-nachfeld & structure-head-subject & [ NH-DTR.SYNSEM.NONLOCAL.REL local-no-match ]. structure-nachfeld-head-complement := structure-verbal-nachfeld & structure-head-complement & [ NH-DTR.SYNSEM.NONLOCAL.REL local-no-match ]. structure-nachfeld-head-adjunct := structure-verbal-nachfeld & structure-head-adjunct. structure-nachfeld-head-cluster := structure-verbal-nachfeld & structure-head-cluster. ; Orders the previous rules head-first or head-last. structure-ordered-vorfeld-filler-head := structure-head-last & structure-vorfeld-head-filler. structure-ordered-vorfeld-adjunct-head := structure-head-last & structure-vorfeld-head-adjunct. structure-ordered-left-bracket-head-cluster := structure-head-first & structure-left-bracket-head-cluster. structure-ordered-mittelfeld-lb-head-subject := structure-head-first & structure-mittelfeld-lb-head-subject. structure-ordered-mittelfeld-lb-head-complement := structure-head-first & structure-mittelfeld-lb-head-complement. structure-ordered-mittelfeld-lb-head-adjunct := structure-head-first & structure-mittelfeld-lb-head-adjunct. structure-ordered-mittelfeld-rb-subject-head := structure-head-last & structure-mittelfeld-rb-head-subject. structure-ordered-mittelfeld-rb-complement-head := structure-head-last & structure-mittelfeld-rb-head-complement. structure-ordered-mittelfeld-rb-adjunct-head := structure-head-last & structure-mittelfeld-rb-head-adjunct. structure-ordered-right-bracket-head-cluster := structure-head-first & structure-right-bracket-head-cluster & [ HD-DTR.SYNSEM.LOCAL.CAT.HEAD.BRANCH-CLUSTER branching-right ]. structure-ordered-right-bracket-cluster-head := structure-head-last & structure-right-bracket-head-cluster & [ HD-DTR.SYNSEM.LOCAL.CAT.HEAD.BRANCH-CLUSTER branching-left ]. structure-ordered-nachfeld-head-subject := structure-head-first & structure-nachfeld-head-subject. structure-ordered-nachfeld-head-complement := structure-head-first & structure-nachfeld-head-complement. structure-ordered-nachfeld-head-adjunct := structure-head-first & structure-nachfeld-head-adjunct. structure-ordered-nachfeld-head-cluster := structure-head-first & structure-nachfeld-head-cluster & [ HD-DTR.SYNSEM.LOCAL.CAT.VAL.INCOH + ]. ;; Nominal domain ;; structure-nominal-pre := structure-nominal & [ HD-DTR.SYNSEM.LOCAL.CAT.LINEAR-N linear-n-can-pre, NH-DTR.SYNSEM.LOCAL.PLACE-N place-n-pre, SYNSEM.LOCAL.CAT.LINEAR-N linear-n-did-pre ]. structure-nominal-det := structure-nominal & [ HD-DTR.SYNSEM.LOCAL.CAT.LINEAR-N linear-n-can-det, NH-DTR.SYNSEM.LOCAL.PLACE-N place-n-det, SYNSEM.LOCAL.CAT.LINEAR-N linear-n-did-det ]. structure-nominal-mid := structure-nominal & [ HD-DTR.SYNSEM.LOCAL.CAT.LINEAR-N linear-n-can-mid, NH-DTR.SYNSEM.LOCAL.PLACE-N place-n-mid, SYNSEM.LOCAL.CAT.LINEAR-N linear-n-did-mid ]. structure-nominal-post := structure-nominal & [ HD-DTR.SYNSEM.LOCAL.CAT.LINEAR-N linear-n-can-post, NH-DTR.SYNSEM.LOCAL.PLACE-N place-n-post, SYNSEM.LOCAL.CAT.LINEAR-N linear-n-did-post ]. structure-nominal-pre-head-adjunct := structure-nominal-pre & structure-head-adjunct & structure-head-last. structure-nominal-det-head-determiner := structure-nominal-det & structure-head-specifier & structure-head-last. structure-nominal-mid-head-complement := structure-nominal-mid & structure-head-complement & structure-head-last. structure-nominal-mid-head-adjunct := structure-nominal-mid & structure-head-adjunct & structure-head-last. structure-nominal-post-head-complement := structure-nominal-post & structure-head-complement & structure-head-first. structure-nominal-post-head-adjunct := structure-nominal-post & structure-head-adjunct & structure-head-first. structure-nominal-post-head-apposition := structure-nominal-post & structure-head-apposition & structure-head-first. ;; Other domains ;; structure-other-right := structure-other & [ HD-DTR.SYNSEM.LOCAL.CAT.LINEAR-O linear-o-can-right, NH-DTR.SYNSEM.LOCAL.PLACE-O place-o-right, SYNSEM.LOCAL.CAT.LINEAR-O linear-o-did-right ]. structure-other-left := structure-other & [ HD-DTR.SYNSEM.LOCAL.CAT.LINEAR-O linear-o-can-left, NH-DTR.SYNSEM.LOCAL.PLACE-O place-o-left, SYNSEM.LOCAL.CAT.LINEAR-O linear-o-did-left ]. ; Unordered rules. structure-other-head-complement := structure-other & structure-head-complement. structure-other-head-adjunct := structure-other & structure-head-adjunct. ; Ordered rules. structure-ordered-other-right-head-complement := structure-other-right & structure-other-head-complement & structure-head-first. structure-ordered-other-right-head-adjunct := structure-other-right & structure-other-head-adjunct & structure-head-first. structure-ordered-other-left-complement-head := structure-other-left & structure-other-head-complement & structure-head-last. structure-ordered-other-left-adjunct-head := structure-other-left & structure-other-head-adjunct & structure-head-last. ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Unary non-headed rules ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;; structure-genitive-modification := structure-non-headed-unary & structure-add-1-rel & [ ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD head-non-pronominal & [ AGR #agr & [ CASE case-gen ], MOD synsem-no-match ], VAL #val & val-saturated, LINEAR-N linear-n-can-pre ], CONT [ HOOK [ INDEX #npgen ] ] ], NONLOCAL #nonlocal ] ] >, SYNSEM [ LOCAL [ CAT [ HEAD head-super-noun & [ AGR #agr, MOD [ LOCAL [ CAT.HEAD head-super-noun, CONT.HOOK.INDEX #mod ] ], APP - ], VAL #val, LINEAR-N linear-n-can-not ], PLACE-N place-n-post ], NONLOCAL #nonlocal ], C-CONT [ HOOK [ INDEX #index ], RELS , HCONS ] ]. ; Maybe it is better to make this a lexical rule? structure-psp-to-ap := structure-non-headed-unary & structure-add-1-rel & [ ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ FORM-VERB form-verb-psp ], VAL val-just-one-subj, LINEAR-C #linear-c, VOICE voice-passive ], CONT [ HOOK [ INDEX #psp ] ] ], NONLOCAL no-nonlocal ] ] >, SYNSEM [ LOCAL [ CAT [ HEAD head-adj & [ PRD -, MOD synsem-nbar & [ LOCAL.CONT.HOOK.INDEX #mod ] ], VAL val-saturated, LINEAR-C #linear-c ], PLACE-N place-n-mid ], NONLOCAL no-nonlocal ], C-CONT [ HOOK [ INDEX #index ], RELS , HCONS ] ]. ; This is basically a copy of lt-noun. ARG1 is used for the determiner. structure-num-to-noun := structure-non-headed-unary & structure-add-1-rel & [ ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD head-number, LINEAR-C #linear-c ], CONT [ HOOK [ INDEX #num ] ] ], NONLOCAL #nonlocal ] ] >, SYNSEM [ LOCAL [ CAT [ HEAD head-super-noun & [ AGR [ PN pn-3pl, GENDER gender, CASE case-nom-dat-acc ], MOD synsem-no-match, APP - ], VAL val-saturated, LINEAR-C #linear-c, LINEAR-N linear-n-start ] ], NONLOCAL #nonlocal ], C-CONT [ HOOK [ INDEX #index, XARG #spec ], RELS , HCONS ] ]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Binary non-headed rules ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Coordinations ;; structure-coordination := structure-non-headed-binary & [ ARGS < [ SYNSEM [ NONLOCAL.REL #rel & local-no-match ] ], [ SYNSEM [ NONLOCAL.REL #rel ] ] >, SYNSEM [ NONLOCAL.REL #rel ] ]. structure-coordination-right := structure-coordination & [ SYNSEM [ LOCAL [ CAT [ LINEAR-C linear-coord-had-right & [ CRD-ASYND - ] ], CONT [ HOOK #hook ], PLACE-N #place-n, PLACE-V #place-v, PLACE-O #place-o ] ], ARGS < [ SYNSEM.LOCAL [ CAT [ HEAD head-coord, LINEAR-C linear-coord-start ], CONT [ HOOK #hook & [ R-ARG #r-index ] ] ] ], [ SYNSEM.LOCAL [ CAT [ LINEAR-C.DONE + ], CONT [ HOOK.INDEX #r-index ], PLACE-N #place-n, PLACE-V #place-v, PLACE-O #place-o ] ] >, C-CONT no-c-cont ]. structure-coordination-left := structure-coordination & [ SYNSEM [ LOCAL [ CAT [ LINEAR-C linear-coord-finish & [ CRD-ASYND - ] ], CONT [ HOOK #hook ], PLACE-N #place-n, PLACE-V #place-v, PLACE-O #place-o ] ], ARGS < [ SYNSEM.LOCAL [ CAT [ LINEAR-C [ DONE +, CRD-ASYND - ] ], CONT [ HOOK.INDEX #l-index ], PLACE-N #place-n, PLACE-V #place-v, PLACE-O #place-o ] ], [ SYNSEM.LOCAL [ CAT [ LINEAR-C [ LEFT field-empty, RIGHT field-non-empty ] ], CONT [ HOOK #hook & [ L-ARG #l-index ] ], PLACE-N #place-n, PLACE-V #place-v, PLACE-O #place-o ] ] >, C-CONT no-c-cont ]. structure-coordination-asyndetic := structure-coordination & structure-add-1-rel & [ SYNSEM [ LOCAL [ CAT [ LINEAR-C linear-coord-finish & [ CRD-ASYND + ] ], CONT [ HOOK #hook ], PLACE-N #place-n, PLACE-V #place-v, PLACE-O #place-o ] ], ARGS < [ SYNSEM.LOCAL [ CAT [ LINEAR-C [ DONE +, CRD-ASYND - ] ], CONT [ HOOK.INDEX #l-index ], PLACE-N #place-n, PLACE-V #place-v, PLACE-O #place-o ] ], [ SYNSEM.LOCAL [ CAT [ LINEAR-C [ DONE +, CRD-ASYND bool ] ], CONT [ HOOK.INDEX #r-index ], PLACE-N #place-n, PLACE-V #place-v, PLACE-O #place-o ] ] >, C-CONT [ HOOK #hook & [ INDEX #index ], RELS , HCONS ] ]. ;;;;;;;;;;;;;;;;;;;;;;; ;; VERB COORDINATION ;; ;;;;;;;;;;;;;;;;;;;;;;; structure-coordination-s-right := structure-coordination-right & [ SYNSEM [ LOCAL [ CAT [ HEAD head-super-verb & [ FORM-VERB #form-verb, MOD #mod ], V-POS v-pos-not-last, VAL val-saturated ] ], NONLOCAL no-nonlocal ], ARGS < sign, [ SYNSEM [ LOCAL.CAT [ HEAD head-super-verb & [ FORM-VERB #form-verb, MOD #mod ], VAL val-saturated, V-POS v-pos-not-last ], NONLOCAL no-nonlocal ] ] > ]. structure-coordination-s-left-side := structure-coordination & [ SYNSEM [ LOCAL.CAT [ HEAD head-super-verb & [ FORM-VERB #form-verb, MOD #mod ], V-POS v-pos-not-last, VAL val-saturated ], NONLOCAL no-nonlocal ], ARGS < [ SYNSEM [ LOCAL.CAT [ HEAD head-super-verb & [ FORM-VERB #form-verb, MOD #mod ], V-POS v-pos-not-last, VAL val-saturated ], NONLOCAL no-nonlocal ] ], [ SYNSEM [ LOCAL.CAT [ HEAD head-super-verb & [ FORM-VERB #form-verb, MOD #mod ], V-POS v-pos-not-last, VAL val-saturated ], NONLOCAL no-nonlocal ] ] > ]. structure-coordination-s-left := structure-coordination-s-left-side & structure-coordination-left. structure-coordination-s-asynd := structure-coordination-s-left-side & structure-coordination-asyndetic. ; These structures should coordinate both left and right-branching and mixed analyses. ; Mixed: Jan kauft das Rad und will darauf fahren. structure-coordination-vp-right := structure-coordination-right & [ SYNSEM [ LOCAL [ CAT [ HEAD #head & head-super-verb, V-POS #v-pos & v-pos-not-second, VAL #val, LINEAR-V linear-v ] ], NONLOCAL #nonlocal & [ SLASH local-match ] ], ARGS < sign, [ SYNSEM [ LOCAL.CAT [ HEAD #head, V-POS #v-pos, VAL #val, LINEAR-V linear-v ], NONLOCAL #nonlocal ] ] > ]. ; TODO: undetermined whether the left bracket is already filled or not. structure-coordination-vp-left-side := structure-coordination & [ SYNSEM [ LOCAL.CAT [ HEAD #head & head-super-verb, V-POS #v-pos & v-pos-not-second, VAL #val, LINEAR-V linear-v ], NONLOCAL #nonlocal & [ SLASH local-match ] ], ARGS < [ SYNSEM [ LOCAL.CAT [ HEAD #head, V-POS #v-pos, VAL #val, LINEAR-V linear-v ], NONLOCAL #nonlocal ] ], [ SYNSEM [ LOCAL.CAT [ HEAD #head, V-POS #v-pos, VAL #val, LINEAR-V linear-v ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-vp-left := structure-coordination-vp-left-side & structure-coordination-left. structure-coordination-vp-asynd := structure-coordination-vp-left-side & structure-coordination-asyndetic. ;;;;;;;;;;;;;;;;;;;;;;; ;; NOUN COORDINATION ;; ;;;;;;;;;;;;;;;;;;;;;;; structure-coordination-np-right := structure-coordination-right & [ SYNSEM [ LOCAL [ CAT [ HEAD head-super-noun & [ AGR [ CASE #case, GENDER gender, PN [ PERSON person-3, NUMBER number-pl ] ], MOD synsem-no-match ], LINEAR-N #linear-n, VAL val-saturated ], CONT mrs ] ], ARGS < sign, [ SYNSEM.LOCAL.CAT [ HEAD head-super-noun & [ AGR [ CASE #case, GENDER gender, PN [ PERSON person, NUMBER number ] ], MOD synsem-no-match ], LINEAR-N #linear-n & linear-n-can-pre, VAL val-saturated ] ] > ]. structure-coordination-np-left-side := structure-coordination & [ SYNSEM [ LOCAL.CAT [ HEAD head-super-noun & [ AGR [ CASE #case, GENDER gender, PN [ PERSON person-3, NUMBER number-pl ] ], MOD synsem-no-match ], LINEAR-N linear-n-can-pre, VAL val-saturated ] ], ARGS < [ SYNSEM.LOCAL.CAT [ HEAD head-super-noun & [ AGR [ CASE #case, GENDER gender, PN pn ] ], LINEAR-N linear-n-can-pre ] ], [ SYNSEM.LOCAL.CAT [ HEAD head-super-noun & [ AGR [ CASE #case, GENDER gender, PN pn ] ], LINEAR-N linear-n-can-pre, VAL val-saturated ] ] > ]. structure-coordination-np-left := structure-coordination-np-left-side & structure-coordination-left. structure-coordination-np-asynd := structure-coordination-np-left-side & structure-coordination-asyndetic & [ ARGS < [ SYNSEM.LOCAL.CAT.HEAD head-non-pronominal ], [ SYNSEM.LOCAL.CAT.HEAD head-non-pronominal ] > ]. ; Extra constraint needed to reduce ambiguity. ; In these nbar structures, the total structure get an undetermined number. This is to accomodate sentences like ; - kostenlose [ Gesundheitsversorgung und Ausbildung ] ; - [ Parteien und Massenorganisationen ] der DDR ; - Der [ französische Multi-Unternehmer und ehemalige Minister ] Bernard Tapie structure-coordination-nbar-right := structure-coordination-right & [ SYNSEM [ LOCAL [ CAT [ HEAD head-super-noun & [ AGR [ CASE #case, GENDER gender, PN [ PERSON person-3, NUMBER number ] ], MOD synsem-no-match ], LINEAR-N linear-n-can-mid, VAL val-saturated ], CONT [ HOOK.XARG #det ] ] ], ARGS < sign, [ SYNSEM.LOCAL [ CAT [ HEAD head-super-noun & [ AGR [ CASE #case, GENDER gender, PN [ PERSON person, NUMBER number ] ], MOD synsem-no-match ], LINEAR-N linear-n-can-mid, VAL val-saturated ], CONT [ HOOK.XARG #det ] ] ] > ]. structure-coordination-nbar-left-side := structure-coordination & [ SYNSEM [ LOCAL [ CAT [ HEAD head-super-noun & [ AGR [ CASE #case, GENDER gender, PN [ PERSON person-3, NUMBER number-pl ] ], MOD synsem-no-match ], LINEAR-N linear-n-can-mid, VAL val-saturated ], CONT [ HOOK.XARG #det ] ] ], ARGS < [ SYNSEM.LOCAL [ CAT [ HEAD head-super-noun & [ AGR [ CASE #case, GENDER gender, PN pn ] ], LINEAR-N linear-n-can-mid, VAL val-saturated ], CONT [ HOOK.XARG #det ] ] ], [ SYNSEM.LOCAL [ CAT [ HEAD head-super-noun & [ AGR [ CASE #case, GENDER gender, PN pn ] ], LINEAR-N linear-n-can-mid, VAL val-saturated ], CONT [ HOOK.XARG #det ] ] ] > ]. structure-coordination-nbar-left := structure-coordination-nbar-left-side & structure-coordination-left. structure-coordination-nbar-asynd := structure-coordination-nbar-left-side & structure-coordination-asyndetic & [ ARGS < [ SYNSEM.LOCAL.CAT.HEAD head-non-pronominal ], [ SYNSEM.LOCAL.CAT.HEAD head-non-pronominal ] > ]. ; Extra constraint needed to reduce ambiguity. ;;;;;;;;;;;;;;;;;;;;; ;; PP COORDINATION ;; ;;;;;;;;;;;;;;;;;;;;; ;; There are two types of PP coordination. When it is coordinated, there is no way to determine what the FORM-ADP should be. ;; Therefore, the first requires the FORM-ADPs to be equal. The resulting CPP can be selected for by verbs, for example. ;; The second type can have conjuncts with different FORM-ADPs. The resulting CPP gets a FORM-ADP "--no-select--", so that it cannot be selected for. structure-coordination-eq-pp-right := structure-coordination-right & [ SYNSEM [ LOCAL [ CAT [ HEAD [ MOD synsem-no-match, FORM-ADP #form ], VAL val-saturated ] ] ], ARGS < sign, [ SYNSEM.LOCAL.CAT [ HEAD [ FORM-ADP #form ], VAL val-saturated ] ] > ]. structure-coordination-eq-pp-left-side := structure-coordination & [ SYNSEM [ LOCAL.CAT [ HEAD [ MOD synsem-no-match, FORM-ADP #form ], VAL val-saturated ] ], ARGS < [ SYNSEM.LOCAL.CAT [ HEAD [ FORM-ADP #form ], VAL val-saturated ] ], [ SYNSEM.LOCAL.CAT [ HEAD [ FORM-ADP #form ], VAL val-saturated ] ] > ]. structure-coordination-eq-pp-left := structure-coordination-eq-pp-left-side & structure-coordination-left. structure-coordination-eq-pp-asynd := structure-coordination-eq-pp-left-side & structure-coordination-asyndetic. structure-coordination-diff-pp-right := structure-coordination-right & [ SYNSEM [ LOCAL [ CAT [ HEAD head-adposition & [ MOD #mod, FORM-ADP "--no-select--" ], VAL val-saturated ] ] ], ARGS < sign, [ SYNSEM.LOCAL [ CAT [ HEAD head-adposition & [ MOD #mod ], VAL val-saturated ] ] ] > ]. structure-coordination-diff-pp-left-side := structure-coordination & [ SYNSEM [ LOCAL [ CAT [ HEAD head-adposition & [ MOD #mod, FORM-ADP "--no-select--" ], VAL val-saturated ] ] ], ARGS < [ SYNSEM.LOCAL [ CAT [ HEAD head-adposition & [ MOD #mod ], VAL val-saturated ] ] ], [ SYNSEM.LOCAL [ CAT [ HEAD head-adposition & [ MOD #mod ], VAL val-saturated ] ] ] > ]. structure-coordination-diff-pp-left := structure-coordination-diff-pp-left-side & structure-coordination-left. structure-coordination-diff-pp-asynd := structure-coordination-diff-pp-left-side & structure-coordination-asyndetic. ;;;;;;;;;;;;;;;;;;;;; ;; AP COORDINATION ;; ;;;;;;;;;;;;;;;;;;;;; structure-coordination-ap-right := structure-coordination-right & [ SYNSEM [ LOCAL [ CAT [ HEAD #head & head-super-adjective, VAL val-saturated ] ] ], ARGS < sign, [ SYNSEM.LOCAL.CAT [ HEAD #head, VAL val-saturated ] ] > ]. structure-coordination-ap-left-side := structure-coordination & [ SYNSEM [ LOCAL.CAT [ HEAD #head & head-super-adjective, VAL val-saturated ] ], ARGS < [ SYNSEM.LOCAL.CAT [ HEAD #head, VAL val-saturated ] ], [ SYNSEM.LOCAL.CAT [ HEAD #head, VAL val-saturated ] ] > ]. structure-coordination-ap-left := structure-coordination-ap-left-side & structure-coordination-left. structure-coordination-ap-asynd := structure-coordination-ap-left-side & structure-coordination-asyndetic & [ SYNSEM.LOCAL.CAT.HEAD.PRD + ]. ; The last addition to prevent spurious ambiguity in the form of DET ATTR ATTR N. ;;;;;;;;;;;;;;;;;;;;;; ;; AVP COORDINATION ;; ;;;;;;;;;;;;;;;;;;;;;; structure-coordination-avp-right := structure-coordination-right & [ SYNSEM [ LOCAL [ CAT [ HEAD #head & head-super-adverb, VAL val-saturated ] ] ], ARGS < sign, [ SYNSEM.LOCAL.CAT [ HEAD #head, VAL val-saturated ] ] > ]. structure-coordination-avp-left-side := structure-coordination & [ SYNSEM [ LOCAL.CAT [ HEAD #head & head-super-adverb, VAL val-saturated ] ], ARGS < [ SYNSEM.LOCAL.CAT [ HEAD #head, VAL val-saturated ] ], [ SYNSEM.LOCAL.CAT [ HEAD #head, VAL val-saturated ] ] > ]. structure-coordination-avp-left := structure-coordination-avp-left-side & structure-coordination-left. structure-coordination-avp-asynd := structure-coordination-avp-left-side & structure-coordination-asyndetic. ;;;;;;;;;;;;;;;;;;;;;; ;; RELATIVE PHRASES ;; ;;;;;;;;;;;;;;;;;;;;;; ; Der Mann der ein Getraenk getrunken hat liegt morgen ; Das Getraenk den der Mann getrunken hat liegt morgen ; Der Mann dessen Getraenk ich getrunken habe ; Der Mann mit wem ich ein Getraenk getrunken habe ; Der Mann mit dessen Vater ich ein Getraenk getrunken habe structure-rel-phrase := structure-non-headed-binary & structure-add-1-rel & [ ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD head, VAL val-saturated, LINEAR-C [ DONE + ] ], CONT mrs ], NONLOCAL no-slash-que & [ REL local-match & #rel ] ] ], [ SYNSEM [ LOCAL [ CAT [ HEAD head-super-verb & [ FORM-VERB form-verb-fin ], VAL.XCOMP < >, V-POS v-pos-last, BRANCHING branching-right, LINEAR-V linear-v-can-rb-lb, LINEAR-C [ DONE + ] ], CONT psoa & [ HOOK #hook ] ], NONLOCAL no-nonlocal ] ] >, SYNSEM [ LOCAL [ CAT [ HEAD head-super-verb & [ AGR agr-no-match, MOD.LOCAL #rel & [ CAT.HEAD head-super-noun, CONT.HOOK.INDEX #rel-modified ] ], VAL val-saturated, LINEAR-C linear-coord-start, LINEAR-V linear-v-can-not ], CONT [ HOOK #hook & [ INDEX #rel-modifies ] ], PLACE-N place-n-post ], NONLOCAL no-nonlocal ], C-CONT [ RELS , HCONS ] ]. ; TODO: Kunnen die #indexen weg? structure-rel-phrase-subject := structure-rel-phrase & [ ARGS < [ SYNSEM #synsem ], [ SYNSEM.LOCAL.CAT.VAL val-just-one-subj & [ SUBJ < #synsem > ] ] > ]. structure-rel-phrase-complement := structure-rel-phrase & [ ARGS < [ SYNSEM #synsem ], [ SYNSEM.LOCAL [ CAT [ VAL val-just-one-subcat & [ SUBCAT < #synsem > ] ] ] ] > ]. structure-rel-phrase-adjunct := structure-rel-phrase & [ ARGS < [ SYNSEM [ LOCAL.CAT.HEAD [ MOD #synsem ] ] ], [ SYNSEM #synsem & [ LOCAL.CAT.VAL val-saturated ] ] >, SYNSEM [ LOCAL.CAT.VAL.SUBCAT < > ] ]. ;;;;;;;;;;;;;;;;;;; ;; DIRECT SPEECH ;; ;;;;;;;;;;;;;;;;;;; structure-direct-speech := structure-binary & structure-add-1-rel & [ ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD head-name & [ AGR.CASE case-nom ], VAL val-saturated, LINEAR-C [ DONE + ], LINEAR-N linear-n-can-pre ], CONT [ HOOK #hook & [ INDEX #says ] ] ] ] ], [ SYNSEM synsem-sent & [ LOCAL [ CONT [ HOOK.INDEX #said ] ] ] ] >, SYNSEM synsem-sat & [ LOCAL [ CAT [ HEAD head-ds ] ] ], C-CONT [ HOOK #hook, RELS , HCONS ] ].