;;; -*- Mode: TDL; Coding: utf-8 -*- ;;; HAG (Hausa Grammar) ;;; Author: Berthold Crysmann ;;; 2009 ;;; Rule types for lexical rules and syntax rules ccont-1ep-rule := phrase-or-lexrule & [STEM [FROM #from, TO #to], C-CONT.RELS.LIST < [CFROM #from, CTO #to], ... >]. ccont-2ep-rule := ccont-1ep-rule & [STEM [FROM #from, TO #to], C-CONT.RELS.LIST < [], [CFROM #from, CTO #to], ... >]. ccont-3ep-rule := ccont-2ep-rule & [STEM [FROM #from, TO #to], C-CONT.RELS.LIST < [], [], [CFROM #from, CTO #to], ... >]. robust-spelling-irule := add-only-no-ccont-rule & lexeme-to-lexeme-rule & inflecting-lex-rule & same-supra-lex-rule & nocoord & [MORPH #m, ROBUST +, DTR lex-item & [MORPH #m] ]. lexeme-to-word-rule := same-local-lex-rule & same-modified-lex-rule & same-light-lex-rule & same-non-local-lex-rule & [ INFLECTED +, DTR [ INFLECTED na-or-- ], C-CONT [RELS , HCONS ]]. inher-lkeys-lex-rule := lex-rule & [SYNSEM.LKEYS #lk, DTR.SYNSEM.LKEYS #lk]. nbar-mod-prep-lrule := const-ltow-rule & inher-lkeys-lex-rule & same-supra-lex-rule & [INFLECTED +, SYNSEM [LKEYS.KEYREL [ARG0 [E no_tam], ARG1 ref-ind], LOCAL.CAT.HEAD adp & [MOD <[LOCAL.CAT [HEAD noun, VAL.COMPS <>]]>]]]. vp-mod-prep-lrule := const-ltow-rule & inher-lkeys-lex-rule & same-supra-lex-rule & [INFLECTED +, SYNSEM [LKEYS.KEYREL [ARG0 [E no_tam], ARG1 event], LOCAL.CAT.HEAD.MOD <[LOCAL.CAT [HEAD [VFORM non-fin], VAL.SUBJ <[]>]]>]]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Valence alternations ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;; opt-lex-rule := const-ltol-rule & inher-lkeys-lex-rule & val-change-only-lex-rule & same-supra-lex-rule & [INFLECTED -, SYNSEM [LOCAL.CAT.VAL [SPR #spr, SPEC #spec]], DTR [SYNSEM.LOCAL.CAT.VAL [SPR #spr, SPEC #spec]]]. opt-comps-lex-rule := opt-lex-rule & [SYNSEM.LOCAL.CAT.VAL [SUBJ #subj], DTR.SYNSEM.LOCAL.CAT.VAL [SUBJ #subj, COMPS < unexpressed & [LOCAL.CONT.HOOK.INDEX unbound-ind], ...>]]. ;;; Null DO Complement realisation opt-do-lex-rule := opt-comps-lex-rule & [SYNSEM.LOCAL.CAT.VAL [COMPS #comps], DTR.SYNSEM.LOCAL.CAT.VAL [COMPS <[OPT +, LOCAL.CAT.HEAD.CASE do ] . #comps>]]. opt-io-lex-rule := opt-comps-lex-rule & [SYNSEM.LOCAL.CAT.VAL [COMPS #comps], DTR.SYNSEM.LOCAL.CAT.VAL [COMPS <[OPT +, LOCAL.CAT.HEAD.CASE io ] . #comps>]]. opt-comp2-lex-rule := opt-lex-rule & [SYNSEM.LOCAL.CAT.VAL [SUBJ #subj, COMPS <#1 . #comps>], DTR.SYNSEM.LOCAL.CAT.VAL [SUBJ #subj, COMPS <#1 & [OPT -], unexpressed & [OPT +, LOCAL [CONT.HOOK.INDEX unbound-ind, CAT.HEAD.CASE do ]] . #comps>]]. extraction-lex-rule := inher-lkeys-lex-rule & const-ltol-rule & val-change-only-lex-rule & same-supra-lex-rule. comp-extraction-lex-rule := extraction-lex-rule & [SYNSEM [LOCAL [CONT.HOOK.INDEX.--XTR +, CAT [VAL [SUBJ #subj]]], NON-LOCAL.SLASH ], DTR.SYNSEM.LOCAL.CAT.VAL [SUBJ #subj]]. ;;; DO Complement extraction (pre-inflection) comp-extra-lex-rule := comp-extraction-lex-rule & [INFLECTED -, SYNSEM canonical-synsem & [LOCAL.CAT [HEAD verbal & [VFORM non-fin], VAL.COMPS #comps & canon-list]], DTR [INFLECTED -, SYNSEM [LOCAL.CAT.VAL.COMPS < gap & [LOCAL.CAT.HEAD.CASE npro-or-spro-do, NON-LOCAL.SLASH #sl] . #comps>, NON-LOCAL.SLASH #sl]]]. comp2-extra-lex-rule := comp-extraction-lex-rule & [INFLECTED -, SYNSEM [LOCAL.CAT.VAL.COMPS <#1 . #comps>, NON-LOCAL.SLASH #sl ], DTR [INFLECTED -, SYNSEM.LOCAL.CAT.VAL.COMPS <#1 & canonical-synsem & [OPT -, NON-LOCAL [SLASH 0-dlist, REL 0-dlist, QUE 0-dlist] ], gap & [LOCAL.CAT.HEAD.CASE npro-or-spro-case, NON-LOCAL.SLASH #sl] . #comps & canon-list> ]]. ocomp-extra-lex-rule := comp-extraction-lex-rule & [INFLECTED -, SYNSEM [LOCAL.CAT.VAL.COMPS <[LOCAL [CONT.HOOK #hook, CAT [HEAD [CASE io], VAL [COMPS < [LOCAL #loc] >]]], NON-LOCAL [SLASH #sl & , REL 0-dlist, QUE 0-dlist]] . #comps & canon-list >, NON-LOCAL.SLASH #sl], DTR [INFLECTED -, SYNSEM.LOCAL.CAT.VAL.COMPS <[LOCAL [CAT [HEAD noun & [CASE io], VAL.COMPS <>], CONT.HOOK #hook]] . #comps> ]]. ;;; TODO: ;;; Dative shift (pre-inflection) ;;; Type raising (pre-inflection) DONE ;;; IO complement extraction (post-inflection) DONE ;;; Infl rule types ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Frame marking irules ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;; verbal-irule := lexeme-to-word-rule & [INFLECTED +, SYNSEM [LOCAL [CAT.HEAD verbal & [VFORM non-fin]]], DTR [SYNSEM.LKEYS.--MCLASS v-vclass, INFLECTED -]]. verb-irule := verbal-irule & [SYNSEM [LOCAL [CAT.HEAD verb]]]. vn-irule := lexeme-to-word-rule & [INFLECTED +, SYNSEM.LOCAL [CAT.HEAD gerund & [VFORM non-fin]], DTR [INFLECTED -, SYNSEM.LKEYS.--MCLASS v-vn-wa-gr]]. strong-vn-irule := head-change-only-lex-rule & nocoord & inflecting-lex-rule & [INFLECTED na, SYNSEM.LOCAL.CAT.HEAD noun & [CASE npro-case, MOD #mod], DTR [INFLECTED -, SYNSEM [LOCAL.CAT.HEAD verb & [MOD #mod, VFORM non-fin]]]]. noun-irule := lexeme-to-word-rule & [SYNSEM.LOCAL.CAT.HEAD noun ]. frame-irule := lexeme-to-word-rule. A-irule := frame-irule & [SYNSEM.LOCAL.CAT.VAL.COMPS frame-A-val-list]. verb-A-irule := A-irule & const-ltow-rule & same-supra-lex-rule & verb-irule & [DTR [INFLECTED na-or--]]. vn-A-D-irule := A-irule & vn-irule & [SYNSEM.LOCAL [CONT.HOOK.INDEX.E continuative], DTR.SYNSEM.LKEYS.--MCLASS v-vn-reg-gr]. vn-A-irule := infl-ltow-rule & vn-A-D-irule & [SYNSEM.LOCAL.CAT.VAL.COMPS <>]. vn-D-irule := const-ltow-rule & same-supra-lex-rule & vn-A-D-irule & [SYNSEM.LOCAL.CAT.VAL.COMPS frame-a-val-cons]. noun-A-irule := A-irule & same-supra-lex-rule & const-ltow-rule & noun-irule & [INFLECTED +, DTR.INFLECTED na]. noun-B-C-irule := B-C-irule & infl-ltow-rule & noun-irule & [DTR [INFLECTED na]]. A-C-irule := frame-irule & [SYNSEM.LOCAL.CAT.VAL.COMPS frame-A-C-val-list]. B-C-irule := frame-irule & [MORPH.COMPLETE bool, SYNSEM.LOCAL.CAT.VAL.COMPS frame-B-C-val-cons]. B-irule := B-C-irule & [SYNSEM.LOCAL.CAT.VAL.COMPS frame-B-val-cons]. C-irule := B-C-irule & [SYNSEM.LOCAL.CAT.VAL.COMPS frame-C-val-cons]. verb-C-irule := verbal-irule & C-irule. verb-C-const-irule := const-ltow-rule & verb-C-irule. verb-C-infl-irule := infl-ltow-rule & verb-C-irule. verb-B-irule := verbal-irule & B-irule & infl-ltow-rule. verb-B-high-do-irule := verb-B-irule & [SYNSEM [LKEYS.--MCLASS v-high-do-gr], SUPRA.TONES.LAST ]. verb-B-low-do-irule := verb-B-irule & [SYNSEM [LKEYS.--MCLASS v-low-do-gr], SUPRA.TONES.LAST ]. ;;; Prossessive pronoun inflection poss-pron-irule := inflecting-lex-rule & same-head-lex-rule & same-hc-light-lex-rule & same-posthead-lex-rule & same-mc-lex-rule & same-cont-lex-rule & same-ctxt-lex-rule & same-agr-lex-rule & same-non-local-lex-rule & ccont-2ep-rule & nocoord & [MORPH.COMPLETE bool, INFLECTED +, C-CONT [RELS , HCONS ], SYNSEM [LOCAL [CAT.VAL [SUBJ #subj, SPR #spr, SPEC #spec, COMPS <>]]], DTR [INFLECTED +, SYNSEM.LOCAL.CAT.VAL [SUBJ #subj, SPR #spr, SPEC #spec, COMPS <[OPT -, LOCAL [CAT [HEAD noun & [CASE pro-str], VAL [SUBJ <>, SPR <>, COMPS <>, SPEC <>]], CONT.HOOK [INDEX #0] ]]>]]]. ;;; Type raising rules noun-poss-tr-lex-rule := const-ltol-rule & same-head-lex-rule & same-hc-light-lex-rule & same-posthead-lex-rule & same-mc-lex-rule & same-cont-lex-rule & same-ctxt-lex-rule & same-agr-lex-rule & same-non-local-lex-rule & same-supra-lex-rule & ccont-1ep-rule & [MORPH.COMPLETE bool, INFLECTED #infl, C-CONT [RELS , HCONS ], SYNSEM [LOCAL [CAT.VAL [SUBJ #subj, SPR #spr, SPEC #spec, COMPS <[OPT -, LOCAL [CAT [HEAD noun & [MOD <>, CASE do], VAL [SUBJ <>, SPR <>, COMPS <>, SPEC <>]], CONT.HOOK [INDEX #2]]]>], CONT.HOOK [LTOP #l, INDEX #1 & ref-ind]], NON-LOCAL.SLASH ], DTR [INFLECTED #infl & na, SYNSEM.LOCAL.CAT.VAL [SUBJ #subj, SPR #spr, SPEC #spec, COMPS <>]]]. adj-tr-lex-rule := const-ltol-rule & same-hc-light-lex-rule & same-posthead-lex-rule & same-mc-lex-rule & same-ctxt-lex-rule & same-agr-lex-rule & same-non-local-lex-rule & same-supra-lex-rule & [INFLECTED #infl, C-CONT [RELS , HCONS ], SYNSEM [LOCAL [AGR #i, CONT.HOOK [LTOP #h, INDEX #i], CAT [HEAD noun & [CASE npro-str, MOD <>], VAL [SUBJ #subj, SPR #spr, SPEC #spec, COMPS < #mod & [MODIFIED notmod, OPT -, LOCAL [CONT.HOOK [LTOP #h, INDEX #i], CAT [HEAD noun & [CASE npro-str, MOD <>], VAL [SPR #spr, COMPS <>, SPEC <>]]]]>]]], NON-LOCAL.SLASH ], DTR [INFLECTED #infl & na, SYNSEM.LOCAL [CONT.HOOK [LTOP #h, XARG #i], CAT [HEAD noun & [MOD <#mod>], VAL [SUBJ #subj, SPEC #spec, COMPS <>]]]]]. noun-dem-tr-lex-rule := const-ltol-rule & same-head-lex-rule & same-hc-light-lex-rule & same-posthead-lex-rule & same-mc-lex-rule & same-cont-lex-rule & same-ctxt-lex-rule & same-agr-lex-rule & same-non-local-lex-rule & [MORPH.COMPLETE bool, SUPRA [TONE.LIST #tone, LEN.LIST #len, TONES , LENGTHS ], INFLECTED #infl, C-CONT [RELS , HCONS ], SYNSEM [LOCAL [CAT [HEAD #hd, VAL [SUBJ #subj, SPR <>, SPEC #spec, COMPS < #spr & [OPT -, LOCAL [CAT [HEAD bound-det & [KEYS.KEY dem_q_rel], VAL [SUBJ <>, SPR <>, COMPS <>, SPEC <[LOCAL.CAT.HEAD #hd]>]], CONT [HOOK [INDEX #i & [COG-ST activated, SPECI +]]]]]>]], CONT.HOOK [INDEX #i]], NON-LOCAL.SLASH ], DTR [INFLECTED #infl & na, SYNSEM.LOCAL.CAT.VAL [SUBJ #subj, SPR <#spr>, SPEC #spec, COMPS <>]]]. noun-dem-proximate-tr-lex-rule := noun-dem-tr-lex-rule & [SYNSEM.LOCAL.CAT.VAL.COMPS <[LOCAL.CAT.HEAD.KEYS.KEY dem_q_proximate_rel]>]. noun-dem-remote-tr-lex-rule := noun-dem-tr-lex-rule & [SYNSEM.LOCAL.CAT.VAL.COMPS <[LOCAL.CAT.HEAD.KEYS.KEY dem_q_remote_rel]>]. ;;;;;;;;;;;;;;;;;; ;;; Morphology ;;; ;;;;;;;;;;;;;;;;;; noun-def-irule := nocoord & same-head-lex-rule & same-hc-light-lex-rule & same-posthead-lex-rule & same-mc-lex-rule & same-cont-lex-rule & same-ctxt-lex-rule & same-agr-lex-rule & same-non-local-lex-rule & inflecting-lex-rule & ccont-1ep-rule & [MORPH.COMPLETE bool, INFLECTED +, SYNSEM.LOCAL.CAT.VAL [SUBJ #subj, COMPS #comps & <>, SPR <>, SPEC <>], C-CONT [HOOK [INDEX #0], RELS , HCONS ], DTR [INFLECTED na, SYNSEM.LOCAL [CAT.VAL [SUBJ #subj, COMPS #comps, SPR <[LOCAL.CONT.RELS ]>, SPEC <>], CONT.HOOK.LTOP #larg]]]. noun-singular-infl-rule := same-local-lex-rule & same-modified-lex-rule & same-light-lex-rule & same-non-local-lex-rule & inflecting-lex-rule & nocoord & [C-CONT [RELS , HCONS ], INFLECTED na, SYNSEM.LOCAL [CAT.HEAD noun, AGR.PNG p-s-g ], DTR [INFLECTED -]]. noun-singular-const-rule := same-local-lex-rule & same-modified-lex-rule & same-light-lex-rule & same-non-local-lex-rule & constant-lex-rule & nocoord & [C-CONT [RELS , HCONS ], INFLECTED na, SUPRA #sup, SYNSEM.LOCAL [CAT.HEAD noun, AGR.PNG p-s-g ], DTR [INFLECTED -, SUPRA #sup]]. noun-plural-const-rule := same-local-lex-rule & same-modified-lex-rule & same-light-lex-rule & same-non-local-lex-rule & constant-lex-rule & nocoord & [C-CONT [RELS , HCONS ], INFLECTED na, SYNSEM.LOCAL [CAT.HEAD noun, AGR.PNG p-p-g ], DTR [INFLECTED -]]. noun-plural-infl-rule := same-local-lex-rule & same-modified-lex-rule & same-light-lex-rule & same-non-local-lex-rule & inflecting-lex-rule & nocoord & [C-CONT [RELS , HCONS ], INFLECTED na, SYNSEM.LOCAL [CAT.HEAD noun, AGR.PNG p-p-g ], DTR [INFLECTED -]]. ;;; Phrasal types basic-head-opt-subj-phrase := head-valence-phrase & head-only & head-compositional & ccont-2ep-rule & [ INFLECTED #infl, SYNSEM canonical-synsem & [ LOCAL.CAT [ VAL [ SUBJ < >, COMPS #comps, SPR #spr, SPEC #spec ], POSTHEAD #ph ], MODIFIED #mod ], C-CONT [ RELS , HCONS ], HEAD-DTR [ INFLECTED #infl & +, SYNSEM [ LOCAL [ CAT [ VAL [ SUBJ < unexpressed-reg & [ OPT +, LOCAL.CONT.HOOK.INDEX #0 & [COG-ST in-foc] ] >, COMPS #comps & < >, SPR #spr, SPEC #spec ], POSTHEAD #ph ], CONT.HOOK.INDEX event ], MODIFIED #mod ] ] ]. basic-head-comp-phrase :+ [ SYNSEM.LOCAL.CAT.MC #mc, HEAD-DTR.SYNSEM.LOCAL.CAT.MC #mc]. basic-head-mod-phrase-simple :+ [ SYNSEM.LOCAL.CAT.MC #mc, NON-HEAD-DTR.SYNSEM.LOCAL.CAT.MC #mc ]. head-comp-phrase := basic-head-1st-comp-phrase & head-initial & [HEAD-DTR.SYNSEM.MODIFIED notmod]. subj-head-phrase := decl-head-subj-phrase & head-final & [ HEAD-DTR.SYNSEM.LOCAL.CAT.VAL [COMPS < >, SUBJ <[LOCAL.CAT.HEAD.CASE npro-case]>] ]. spec-head-phrase := basic-head-spec-phrase & head-final & [ SYNSEM.MODIFIABLE -, HEAD-DTR.SYNSEM.LOCAL.CAT.VAL [SPR <[LOCAL.CAT.HEAD free-det]>, COMPS < > ]]. extracted-subj-phrase := basic-extracted-subj-phrase & head-compositional & [C-CONT [RELS , HCONS ], SYNSEM [LOCAL [CAT [HEAD verb & [VFORM indep]], CONT.HOOK.INDEX [_REL +]], NON-LOCAL.SLASH ], HEAD-DTR.SYNSEM.LOCAL.CAT.VAL [SUBJ <[LOCAL.CAT.HEAD.CASE npro-case]>] ]. head-rel-phrase := head-mod-phrase & head-initial & head-compositional & [ SYNSEM [ NON-LOCAL [ SLASH [ LIST #first, LAST #last ], REL 0-dlist ] ], HEAD-DTR.SYNSEM [ MODIFIABLE na-or-+, LOCAL [ CAT [ HEAD noun & [CASE npro-or-spro-case], VAL [COMPS <>]], AGR #index, CONT.HOOK [INDEX ref-ind & #index, LTOP #top]], NON-LOCAL [ SLASH [ LIST #middle, LAST #last ] ] ], NON-HEAD-DTR.SYNSEM [ LOCAL [CAT [ HEAD verb & [VFORM indep, MOD < > ], VAL [ COMPS olist, SPR olist ] ], CONT.HOOK [INDEX event & [E non-sbj-tam], LTOP #top]], NON-LOCAL [ SLASH [ LIST #first, LAST #middle ], REL , QUE 0-dlist & [ LIST null ] ] ], C-CONT [RELS , HCONS ] ]. filler-head-phrase := basic-head-filler-phrase & head-final & head-compositional & [C-CONT [RELS , HCONS ], SYNSEM.NON-LOCAL [REL & [LIST #rel1, LAST #rel3], QUE [LIST #que1, LAST #que3]], NON-HEAD-DTR [STEM [FROM #from, TO #to], SYNSEM [LOCAL.CONT.HOOK.INDEX #2, NON-LOCAL [REL [LIST #rel1, LAST #rel2], QUE [LIST #que1, LAST #que2]]]], HEAD-DTR [SYNSEM [LOCAL.CONT.HOOK [LTOP #l, INDEX #1], NON-LOCAL [REL [LIST #rel2, LAST #rel3], QUE [LIST #que2, LAST #que3]]]]]. rel-filler-head-phrase := basic-head-filler-phrase & head-final & head-compositional & [C-CONT [RELS , HCONS ], SYNSEM.NON-LOCAL [REL & [LIST #rel1, LAST #rel3], QUE [LIST #que1, LAST #que3]], NON-HEAD-DTR [STEM [FROM #from, TO #to], SYNSEM [LOCAL.CONT.HOOK.INDEX #2, NON-LOCAL [REL [LIST #rel1, LAST #rel2], QUE [LIST #que1, LAST #que2]]]], HEAD-DTR [SYNSEM [LOCAL.CONT.HOOK [LTOP #l, INDEX #1], NON-LOCAL [REL [LIST #rel2, LAST #rel3], QUE [LIST #que2, LAST #que3]]]]]. ; Bare NP phrase. Consider modifying the PRED value of the quantifier relation ; introduced to match the semantic effect of bare NPs in your language. bare-np-phrase := basic-bare-np-phrase & ccont-1ep-rule & [SYNSEM [MODIFIED notmod, NON-LOCAL #nloc], HEAD-DTR.SYNSEM.NON-LOCAL #nloc, C-CONT.RELS ]. ;;; Non-compositional binary rule type (for reduplication) non-compositional-binary-phrase := phrase & [STEM [FROM #from, TO #to], SYNSEM.LOCAL [CONT [ RELS [ LIST #first, LAST #last ], HCONS [ LIST #scfirst, LAST #sclast ] ]], C-CONT [ RELS [ LIST #middle, LAST #last ], HCONS [ LIST #scmiddle, LAST #sclast ] ], ARGS < sign & [STEM [FROM #from]], sign & [STEM [TO #to], SYNSEM.LOCAL local & [ CONT [ RELS [ LIST #first, LAST #middle ], HCONS [ LIST #scfirst, LAST #scmiddle ] ] ] ] > ]. total-reduplication-phrase := non-compositional-binary-phrase & [INFLECTED +, SUPRA [TONE , LEN ], SYNSEM [LOCAL [CAT #cat, COORD #coord]], ARGS < word-or-lexrule & [INFLECTED +, SYNSEM [LOCAL [CAT [HEAD #head], COORD #coord]]], word-or-lexrule & [INFLECTED +, SYNSEM [LOCAL [CAT #cat & [HEAD #head], COORD #coord]]]>].