;;; -*- Mode: TDL; Coding: utf-8 -*- ;;; HAG (Hausa Grammar) ;;; Author: Berthold Crysmann ;;; 2009 subj-extra := extracted-subj-phrase. eq := equational-phrase. head-comp := head-comp-phrase & [HEAD-DTR [KEY-ARG +, SYNSEM.LOCAL.CAT.VAL.COMPS <[BOUND -],...>]]. head-cluster := head-cluster-phrase & [SYNSEM [LOCAL.CAT.VAL.COMPS #comps], HEAD-DTR [KEY-ARG +, SYNSEM.LOCAL.CAT [HEAD +nvp, VAL.COMPS < #synsem . #comps >]], NON-HEAD-DTR word-or-lexrule & [SYNSEM #synsem & [BOUND +] ] ]. ;& [VFORM non-fin] ;HEAD +nv, ; head-cluster-1 := ; head-cluster-phrase & ; [SYNSEM [LOCAL.CAT.VAL.COMPS <#inh . #comps>], ; HEAD-DTR word-or-lexrule & ; [KEY-ARG +, ; SYNSEM.LOCAL.CAT [HEAD verb & ; [VFORM non-fin], ; VAL.COMPS < #synsem & ; [BOUND +, ; LOCAL.CAT [VAL.COMPS <#inh & ; npro-synsem & ; [LIGHT -, ; BOUND -] >]] . #comps >]], ; NON-HEAD-DTR word-or-lexrule & [SYNSEM #synsem]]. subj-head := subj-head-phrase & [SYNSEM [MODIFIABLE na-or--, LOCAL [CAT.HEAD.VFORM indep]], HEAD-DTR.KEY-ARG +, NON-HEAD-DTR.SYNSEM [LOCAL.CONT.HOOK.INDEX.--IS -foc, NON-LOCAL.QUE 0-dlist]]. head-adj_i := head-adj-phrase & [C-CONT.HCONS , SYNSEM.LOCAL.CONT.HOOK [LTOP #t, INDEX #i], HEAD-DTR [KEY-ARG -, SYNSEM [MODIFIABLE na-or-+, LOCAL.CONT.HOOK [INDEX #i, LTOP #t]]], NON-HEAD-DTR [KEY-ARG +, SYNSEM [LOCAL.CONT.HOOK [XARG #i, LTOP #t] ]]]. head-adj_s := head-adj-phrase & [C-CONT.HCONS , SYNSEM.LOCAL.CONT.HOOK [LTOP #t, INDEX #i], HEAD-DTR [KEY-ARG -, SYNSEM [MODIFIABLE +, LOCAL.CONT.HOOK [LTOP #l, INDEX #i]]], NON-HEAD-DTR [KEY-ARG +, SYNSEM [LOCAL.CONT.HOOK [XARG #l, LTOP #t] ]]]. n-rel := head-rel-phrase & [HEAD-DTR.SYNSEM.LOCAL.CAT.VAL.SPR < [ ] >]. pro-n-rel := head-rel-phrase & [HEAD-DTR.SYNSEM pronoun-synsem]. spr-head := spec-head-phrase & [NON-HEAD-DTR.KEY-ARG +]. bare-np := bare-np-phrase & [SYNSEM [MODIFIABLE na-or--, LOCAL [CAT [HEAD noun]]], HEAD-DTR.SYNSEM.LOCAL.CAT.VAL.SPR ]. ;;; Need to add relation for subject ; null-subj := basic-head-opt-subj-phrase & ; [SYNSEM [MODIFIABLE na-or--, ; LOCAL [CAT.HEAD.VFORM indep] ]]. expl-subj := basic-expl-subj-phrase & [SYNSEM [MODIFIABLE na-or--, LOCAL [CAT.HEAD.VFORM indep] ]]. ;;; Need to differentiate between semantically potent ;;; and semantically inert relative tam non-wh-filler-head := filler-head-phrase & [SYNSEM [MODIFIABLE -, LOCAL [CAT.VAL [SUBJ <>, SPEC <>], CONT.HOOK.INDEX.SF prop ]], NON-HEAD-DTR [KEY-ARG -, SYNSEM.NON-LOCAL.QUE ], HEAD-DTR [KEY-ARG +, SYNSEM.LOCAL [CAT [HEAD verb & [VFORM indep], VAL [SUBJ <>, COMPS <>, SPR <>, SPEC <>]], CONT.HOOK.INDEX [_REL na-or-+]]]]. wh-filler-head := filler-head-phrase & [SYNSEM [MODIFIABLE -, LOCAL [CONT [HOOK.INDEX.SF ques], CAT.VAL [SUBJ <>, SPEC <>]]], NON-HEAD-DTR [KEY-ARG -, SYNSEM.NON-LOCAL.QUE [LIST cons , LAST <>]], HEAD-DTR [KEY-ARG +, SYNSEM.LOCAL [CAT [HEAD verb & [VFORM indep], VAL [SUBJ <>, COMPS <>, SPR <>, SPEC <>]], CONT.HOOK.INDEX [_REL na-or-+]]]]. #| relfill-head := rel-comp-phrase & [SYNSEM.LOCAL.CAT.VAL [SUBJ <>, SPEC <>], MARKER-DTR.KEY-ARG +, NON-MARKER-DTR [KEY-ARG -, SYNSEM.LOCAL [CAT [HEAD [VFORM fin], VAL [SUBJ <>, COMPS <>, SPR <>, SPEC <>]], CONT.HOOK.INDEX [_REL na-or-+]]]]. |# bind-recurse := copy-slash-phrase & [ARGS <[ SYNSEM.NON-LOCAL.TO-BIND.FILLER < > ] > ]. find-filler := copy-slash-phrase & [ARGS < [ SYNSEM.NON-LOCAL.TO-BIND [FILLER < [ ] >, SLASH.LIST < [ ], [ ], ... > ] ] > ]. bind-filler := bind-filler-phrase. adj-extra := extracted-adj-phrase & [SYNSEM.LOCAL [CAT [HEAD [MOD <>], VAL [COMPS <>]], CONT.HOOK.INDEX event & [E tam]], C-CONT.RELS ]. ;;; Multi-word units (total reduplication) n-pl-reduplication := total-reduplication-phrase & [MORPH [COMPLETE +, --REDUP #r], C-CONT [RELS , HCONS , HOOK #hook], ARGS < [INFLECTED [NUM-GEND +], MORPH [MCLASS #mc & n-pl-total-redup, --REDUP [--STEM #stem & cons, --SUPRA [LEN & [LIST <>], TONE ]], COMPLETE na], SUPRA [LEN #len, TONE #tone], SYNSEM.LOCAL [CAT.HEAD noun, AGR [PNG.PN pl]]], [INFLECTED [FRAME +, CAN-RES +, NUM-GEND na-or-+ ], MORPH [COMPLETE -, MCLASS #mc, --REDUP #r & [--STEM #stem, --SUPRA [LEN #len & [LIST cons], TONE #tone & [LIST cons]]]], SYNSEM.LOCAL [CAT.HEAD noun, CONT.HOOK #hook]] >]. ;;; NP coordination (omnisyndeton) ;;; Later ;;; VP and S coordination ;;; amma s-bot-coord-1 := s-bottom-binary-coord-rule & [ SYNSEM [ NON-LOCAL #nloc ], NONCONJ-DTR [ SYNSEM [ NON-LOCAL #nloc ] ] ]. s-bot-coord-2 := s-bottom-binary-coord-rule & [SYNSEM [ NON-LOCAL [SLASH [LIST < #2, #1 . #last >, LAST #last], QUE #que, REL #rel ] ], NONCONJ-DTR [ SYNSEM [ NON-LOCAL [SLASH [LIST < #1, #2 . #last >, LAST #last], QUE #que, REL #rel ] ] ] ]. s-bot-coord-3 := s-bottom-binary-coord-rule & [SYNSEM [ NON-LOCAL [SLASH [LIST < #2, #1, #3 . #last >, LAST #last], QUE #que, REL #rel ] ], NONCONJ-DTR [ SYNSEM [ NON-LOCAL [SLASH [LIST < #1, #2, #3 . #last >, LAST #last], QUE #que, REL #rel ] ] ] ]. s-top-coord := s-top-coord-rule & [ SYNSEM [ LOCAL.CONT.HOOK.INDEX [_REL #rel], NON-LOCAL #nloc ], ARGS < [ SYNSEM [ LOCAL.CONT.HOOK.INDEX [_REL #rel], NON-LOCAL #nloc ] ], [ SYNSEM [ LOCAL.CONT.HOOK.INDEX [_REL #rel], NON-LOCAL #nloc ] ] > ]. ;binary-bottom-coord := binary-bottom-coord-rule. ;;; VP and S coordination (asyndeton) ;;; Add unary bottom coord rule for "and" ;monopoly-top-coord := monopoly-top-coord-rule & [SYNSEM.LOCAL.CONT.HOOK.INDEX e]. ;monopoly-mid-coord := monopoly-mid-coord-rule & [SYNSEM.LOCAL.CONT.HOOK.INDEX e]. ;;; Later np-bot-coord := np-bot-coord-rule. np-right-coord := np-right-coord-rule. np-top-coord := np-top-coord-rule.