;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Matrix rule overrides ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; coordination-relation := conjunction-relation. implicit-coord-rel := coordination-relation & [ PRED 'implicit_coord_rel ]. local-min :+ [ COORD bool, COORD-REL coordination-relation ]. headed-phrase :+ [ SYNSEM.LOCAL [ COORD -, COORD-REL #crel ], HEAD-DTR.SYNSEM.LOCAL [ COORD -, COORD-REL #crel ]]. binary-headed-phrase :+ [ NON-HEAD-DTR.SYNSEM.LOCAL.COORD - ]. word-or-lexrule :+ [ SYNSEM.LOCAL.COORD - ]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Conjunction part of speech ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; modified from norm-hook-lex-item -- have to deal with the fact that a ; coordination-relation has different args. conj-lex := basic-zero-arg & single-rel-lex-item & no-hcons-lex-item & [ SYNSEM [ LOCAL [ CAT [ HEAD conj, VAL [ SPR < >, COMPS < >, SUBJ < > ]], CONT [ HOOK [ LTOP #ltop, INDEX #index ], RELS.LIST.FIRST #keyrel ]], LKEYS.KEYREL #keyrel & coordination-relation & [ LBL #ltop, C-ARG #index ]]]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Coordination phrases and rules ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; branching-phrase := binary-phrase & [ NBR-DTR sign, BR-DTR sign ]. left-branching := branching-phrase & [ NBR-DTR #nbr, BR-DTR #br, ARGS < #br, #nbr > ]. right-branching := branching-phrase & [ NBR-DTR #nbr, BR-DTR #br, ARGS < #nbr, #br > ]. coord-phrase := branching-phrase & [ SYNSEM.LOCAL [ CAT [ HEAD.MOD #mod, VAL #val ], CONT [ MSG #msg ]], NBR-DTR.SYNSEM.LOCAL [ CAT [ HEAD.MOD #mod, VAL #val ], CONT [ MSG #msg ]], BR-DTR.SYNSEM.LOCAL [ CAT [ HEAD.MOD #mod, VAL #val ]]]. top-coord-rule := coord-phrase & [ SYNSEM.LOCAL.COORD -, C-CONT.HOOK [ LTOP #rltop, INDEX #rind ], NBR-DTR.SYNSEM.LOCAL [ CONT.HOOK.INDEX #lind ], BR-DTR.SYNSEM.LOCAL [ COORD-REL [ L-INDEX #lind ], CONT.HOOK [ LTOP #rltop, INDEX #rind ]]]. mid-coord-rule := coord-phrase & [ SYNSEM.LOCAL [ COORD +, COORD-REL implicit-coord-rel & [ LBL #ltop, C-ARG #cind, R-INDEX #rind ]], C-CONT.HOOK [ LTOP #ltop, INDEX #cind ], NBR-DTR.SYNSEM.LOCAL [ CONT.HOOK.INDEX #lind ], BR-DTR.SYNSEM.LOCAL [ COORD-REL.L-INDEX #lind, CONT.HOOK.INDEX #rind ]]. bottom-coord-phrase := phrase. unary-bottom-coord-rule := bottom-coord-phrase & unary-phrase & [ SYNSEM.LOCAL [ CAT [ HEAD.MOD #mod, VAL #val ], COORD +, COORD-REL #crel & implicit-coord-rel & [ LBL #lbl, C-ARG #carg, R-INDEX #rind ]], C-CONT [ HOOK [ LTOP #lbl, INDEX #carg ], RELS , HCONS ], ARGS < [ SYNSEM.LOCAL [ CAT [ HEAD.MOD #mod, VAL #val ], COORD -, CONT.HOOK [ INDEX #rind ]]] > ]. binary-bottom-coord-rule := bottom-coord-phrase & binary-phrase & [ SYNSEM.LOCAL [ CAT [ HEAD.MOD #mod, VAL #val ], COORD +, COORD-REL #crel ], C-CONT [ HOOK [ LTOP #lbl, INDEX #carg ], RELS , HCONS ], ARGS < [ SYNSEM [ LOCAL.CAT.HEAD conj, LKEYS.KEYREL #crel & [ LBL #lbl, C-ARG #carg, R-INDEX #rind ]]], [ SYNSEM.LOCAL [ CAT [ HEAD.MOD #mod, VAL #val ], COORD -, CONT.HOOK [ INDEX #rind ]]] > ]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; *syndeton rules ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; monopoly*: Mandatory monosyndeton with optional polysyndeton. This ; is the familiar Indo-European pattern, in which at least one ; coordinator is mandator ("A B and C") and more than one is possible ; ("A and B and C"). monopoly-top-coord-rule := top-coord-rule & [ NBR-DTR.SYNSEM.LOCAL.COORD -, BR-DTR.SYNSEM.LOCAL.COORD + ]. monopoly-mid-coord-rule := mid-coord-rule & [ NBR-DTR.SYNSEM.LOCAL.COORD -, BR-DTR.SYNSEM.LOCAL.COORD + ]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; apoly: This rule handles two coordination strategies: ; ; Polysyndeton, in which an N-way coordination is marked with N-1 ; coordinators: ; "A and B and C", not "A B and C" ; ; Asyndeton, in which no coordinators appear: "A B C". ; ; For both of these, there is NO MID RULE. The difference between ; them is captured in the bottom rule: asyndeton will have a unary ; non-inflecting bottom rule. apoly-top-coord-rule := top-coord-rule & [ NBR-DTR.SYNSEM.LOCAL.COORD -, BR-DTR.SYNSEM.LOCAL.COORD + ]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; fullpoly: For an N-way coordination, N coordinators are required: ; "and A and B and C" or "A and B and C and". fullpoly-top-coord-rule := top-coord-rule & [ NBR-DTR bottom-coord-phrase, BR-DTR.SYNSEM.LOCAL.COORD + ]. fullpoly-mid-coord-rule := mid-coord-rule & [ NBR-DTR bottom-coord-phrase, BR-DTR.SYNSEM.LOCAL.COORD + ]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; NP Coordination rules ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; nom-coord-phrase := coord-phrase & right-branching & [ SYNSEM.LOCAL.CAT.HEAD noun, NBR-DTR.SYNSEM.LOCAL.CAT.HEAD noun, BR-DTR.SYNSEM.LOCAL.CAT.HEAD noun ]. ; Reconsider SPR < > below -- need to separate N' from NP cleanly. basic-np-top-coord-rule := nom-coord-phrase & [ C-CONT [ HOOK [ LTOP #ltop, INDEX #ind ], RELS , HCONS ], NBR-DTR.SYNSEM.LOCAL.CAT.VAL.SPR < >, BR-DTR.SYNSEM.LOCAL.CAT.VAL.SPR < > ]. basic-np-mid-coord-rule := nom-coord-phrase & [ SYNSEM.LOCAL.COORD-REL #crel, C-CONT [ RELS , HCONS ], BR-DTR.SYNSEM.LOCAL.CONT.HOOK [ LTOP #rltop, INDEX #rind ]]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Event Coordination rules (for verbs and adjectives) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; event-coord-phrase := coord-phrase & [ SYNSEM.LOCAL.CONT.HOOK.INDEX [ E #tam ], NBR-DTR.SYNSEM.LOCAL.CONT.HOOK [ LTOP #lhndl, INDEX #lind ], BR-DTR.SYNSEM.LOCAL [ COORD-REL [ L-HNDL #lhndl, L-INDEX #lind, R-INDEX.E #tam ]]]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ADJ Coordination rules ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; adj-coord-phrase := event-coord-phrase & right-branching & [ SYNSEM.LOCAL.CAT [ POSTHEAD #ph, HEAD adj ], NBR-DTR.SYNSEM.LOCAL.CAT [ POSTHEAD #ph, HEAD adj ], BR-DTR.SYNSEM.LOCAL.CAT [ POSTHEAD #ph, HEAD adj ]]. basic-adj-top-coord-rule := adj-coord-phrase & [ C-CONT [ RELS , HCONS ]]. basic-adj-mid-coord-rule := adj-coord-phrase & [ SYNSEM.LOCAL.COORD-REL #crel & [ R-HNDL #rhndl ], C-CONT [ RELS , HCONS ], NBR-DTR.SYNSEM.LOCAL [ CAT.VAL.SPR #spr ], BR-DTR.SYNSEM.LOCAL [ CAT.VAL.SPR #spr, CONT.HOOK.LTOP #rhndl ]]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; V/VP Coordination rules ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; v-coord-phrase := event-coord-phrase & right-branching & [ SYNSEM.LOCAL.CAT.HEAD verb, NBR-DTR.SYNSEM.LOCAL.CAT.HEAD verb, BR-DTR.SYNSEM.LOCAL.CAT.HEAD verb ]. basic-v-top-coord-rule := v-coord-phrase & [ C-CONT [ RELS , HCONS ], NBR-DTR.SYNSEM.LOCAL.CAT.VAL.SPR #spr, BR-DTR.SYNSEM.LOCAL.CAT.VAL.SPR #spr ]. basic-v-mid-coord-rule := v-coord-phrase & [ SYNSEM.LOCAL.COORD-REL #crel & [ R-HNDL #rhndl ], C-CONT [ RELS , HCONS ], NBR-DTR.SYNSEM.LOCAL.CAT.VAL.SPR #spr, BR-DTR.SYNSEM.LOCAL [ CAT.VAL.SPR #spr, CONT.HOOK.LTOP #rhndl ]].