;;; -*- Mode: TDL; Coding: utf-8 -*- ;;; HAG (Hausa Grammar) ;;; Author: Berthold Crysmann ;;; 2009-2011 ;;; Letter sets %(letter-set (!c bcdfghjklmnpqrstvwxyzɓɗƙ\')) %(letter-set (!k bcdfghjklmnpqrstvwxyzɓɗƙ\')) %(letter-set (!v aeiou)) %(letter-set (!i ei)) %(letter-set (!a aou)) %(letter-set (!g ui)) %(letter-set (!u ou)) %(wild-card (?c bcdfghjklmnpqrstvwxyzɓɗƙ\')) %(wild-card (?v aeiou)) %(wild-card (?i ei)) %(wild-card (?a aou)) %(wild-card (?u ou)) ;;; Glides %(wild-card (?g ui)) ;;; Robustly deal with hooked letters ;;; Extension of this rule is automatically compiled from ;;; lexicon (see Makefile). robust-spelling_ir := %suffix (___do_not_apply_this_rule___ ___do_not_apply_this_rule___) robust-spelling-irule. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Valency inflection rules ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Verbal ;;; Now the famous length etc. alternations by grade (see Parsons (1963)) ;;; vn-d_ir := vn-d-irule. vn-a_fall_ir := %suffix (* wa) vn-a-irule & [SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST , LAST #tlast], LEN [LIST #llist & , LAST #llast]]]]. vn-a_low_ir := %suffix (* wa) vn-a-irule & [SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST , LAST #tlast], LEN [LIST #llist, LAST #llast]]]]. ;;; Exceptional grade 7 VNs vn-a_high_ir := %suffix (* wa) vn-a-irule & [SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [MORPH.MCLASS v-gr7, SUPRA [TONE [LIST , LAST #tlast], LEN [LIST #llist & , LAST #llast]]]]. sdvn_gr2-3_ir := %suffix (a a) strong-vn-irule & [SYNSEM.LOCAL [CONT.HOOK.INDEX event & [E continuative], AGR.PNG p-s-f], SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST , LAST #llast]], DTR [MORPH.MCLASS v-vn-gr2-3, SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST < [] . #llist >, LAST #llast]]]]. sdvn_gr0_ir := %suffix (o o) (i i) (ja ja) (sha sha) strong-vn-irule & [SYNSEM.LOCAL [CONT.HOOK.INDEX event & [E continuative], AGR.PNG p-s-m], SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [MORPH.MCLASS v-vn-gr0, SUPRA [TONE [LIST , LAST #tlast], LEN [LIST <[] . #llist >, LAST #llast]]]]. sdvn_gr0-CiCa_ir := %suffix (kira kira) (riga riga) (biya biya) (jira jira) strong-vn-irule & [SYNSEM.LOCAL [CONT.HOOK.INDEX event & [E continuative], AGR.PNG p-s-m], SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [MORPH.MCLASS v-vn-gr0, SUPRA [TONE [LIST , LAST #tlast], LEN [LIST <[] . #llist >, LAST #llast]]]]. bdvn_i-e-u_ir := %suffix (i i) (e e) (u u) strong-vn-irule & [SYNSEM.LOCAL [CONT.HOOK.INDEX event & [E continuative], AGR.PNG p-s-m], SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast]], DTR [MORPH.MCLASS v-vn-irr-m-gr, SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast]]]]. bdvn_a_f_ir := %suffix (a a) strong-vn-irule & [SYNSEM.LOCAL [CONT.HOOK.INDEX event & [E continuative], AGR.PNG p-s-f], SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast]], DTR [MORPH.MCLASS v-vn-irr-f-gr, SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast]]]]. bdvn_a_m_ir := %suffix (a a) strong-vn-irule & [SYNSEM.LOCAL [CONT.HOOK.INDEX event & [E continuative], AGR.PNG p-s-m], SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast]], DTR [MORPH.MCLASS v-vn-irr-m-gr, SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast]]]]. ;;; A-frame verb-a-lex_ir := verb-a-irule & [SYNSEM.LOCAL.CONT.HOOK.INDEX.E non-cont-tam, SUPRA.TONE.LIST #tone, DTR [MORPH.MCLASS v-vn-irr-gr & [LEX #tone & <[], ...>]]]. verb-a-tri-_ir := verb-a-irule & [SYNSEM.LOCAL.CONT.HOOK.INDEX.E non-cont-tam, SUPRA.TONE.LIST #tone, DTR [MORPH.MCLASS.A.TRI- #tone, SUPRA.LEN ]]. verb-a-tri+_ir := verb-a-irule & [SYNSEM.LOCAL.CONT.HOOK.INDEX.E non-cont-tam, SUPRA.TONE.LIST #tone, DTR [MORPH.MCLASS.A.TRI+ #tone, SUPRA.LEN [LIST <[],[],[], ... > ] ]]. ;;; Frame B verb-b-1-4-0-6-tri-_ir := %suffix (!ca !ca) (!ce !ce) verb-b-irule & [SUPRA.TONE.LIST #tone, DTR [MORPH.MCLASS vclass-gr1-gr4-gr0-gr6 & [B.TRI- #tone], SUPRA.LEN ]]. verb-b-1-4-0-6-tri+_ir := %suffix (!ca !ca) (!ce !ce) (!co !co) verb-b-irule & [SUPRA.TONE.LIST #tone, DTR [MORPH.MCLASS vclass-gr1-gr4-gr0-gr6 & [B.TRI+ #tone], SUPRA.LEN [LIST <[],[],[], ... > ] ]]. verb-b-2_ir := %suffix (!ca !ce) (ta ce) (ɗiba ɗebe) verb-b-irule & [SUPRA.TONE.LIST #tone, DTR [MORPH.MCLASS vclass-gr2 & [B [TRI- #tone, TRI+ #tone] ]]]. ;;; Frame C verb-c-1-4-tri-_ir := %suffix (!ca !ca) (!ce !ce) verb-c-short-irule & [SUPRA.TONE.LIST #tone, DTR [MORPH.MCLASS vclass-gr1-gr4 & [C [TRI- #tone]], SUPRA.LEN ]]. verb-c-1-4-tri+_ir := %suffix (!ca !ca) (!ce !ce) verb-c-short-irule & [SUPRA.TONE.LIST #tone, DTR [MORPH.MCLASS vclass-gr1-gr4 & [C [TRI+ #tone]], SUPRA.LEN [LIST <[],[],[], ... > ]]]. verb-c-4-0-6-tri-_ir := verb-c-idlen-irule & [SUPRA.TONE.LIST #tone, DTR [MORPH.MCLASS vclass-gr4-gr0-gr6 & [C [TRI- #tone]], SUPRA.LEN [LIST <[],[],[], ... > ]]]. verb-c-4-0-6tri+_ir := verb-c-idlen-irule & [SUPRA.TONE.LIST #tone, DTR [MORPH.MCLASS vclass-gr4-gr0-gr6 & [C [TRI+ #tone]], SUPRA.LEN ]]. verb-c-2_ir := %suffix (!ca !ci) (ta ci) (ɗiba ɗebi) verb-c-short-irule & [SUPRA.TONE.LIST #tone, DTR [MORPH.MCLASS vclass-gr2 & [C [TRI- #tone, TRI+ #tone] ]]]. ; ;;; B without segmental alternation (grade 6), low do pronoun ; verb-b-low-do_ir := ; %suffix (!co !co) ; verb-b-low-do-irule & ; [SUPRA [TONE [LIST #tlist, ; LAST #tlast], ; LEN [LIST #llist, ; LAST #llast]], ; DTR [MORPH.MCLASS v-low-do-gr, ; SUPRA [TONE [LIST #tlist, ; LAST #tlast], ; LEN [LIST #llist, ; LAST #llast]]]]. ; verb-b-hi-do_ir := ; %suffix (!ca !ca) (!ce !ce) ; verb-b-high-do-irule & ; [SUPRA [TONE [LIST #tlist, ; LAST #tlast], ; LEN [LIST #llist, ; LAST #llast]], ; DTR [MORPH.MCLASS v-high-do-gr, ; SUPRA [TONE [LIST #tlist, ; LAST #tlast], ; LEN [LIST #llist, ; LAST #llast]]]]. ; ;;; C form with vowel shortening (no segment alternation): Grade 1 & optionally 4 ; ;;; Failure of Low Tone Raising (differentiate bi and trisyllabic verbs) ; verb-c-reg-short-bi_ir := ; verb-c-const-irule & ; [SUPRA [TONE [LIST h*-l-list , ; LAST #tlast], ; LEN [LIST , ; LAST #llast]], ; DTR [MORPH.MCLASS v-reg-short-C-gr, ; SUPRA [TONE [LIST list, ; LAST #tlast], ; LEN [LIST , ; LAST #llast]]]]. ; verb-c-reg-short-tri_ir := ; verb-c-const-irule & ; [SUPRA [TONE [LIST h*-l-l-list , ; LAST #tlast], ; LEN [LIST , ; LAST #llast]], ; DTR [MORPH.MCLASS v-reg-short-C-gr, ; SUPRA [TONE [LIST list, ; LAST #tlast], ; LEN [LIST , ; LAST #llast]]]]. ; verb-c-id_ir := ; verb-c-const-irule & ; [SUPRA [TONE [LIST #tlist, ; LAST #tlast], ; LEN [LIST #llist, ; LAST #llast]], ; DTR [MORPH.MCLASS v-id-C-gr, ; SUPRA [TONE [LIST #tlist, ; LAST #tlast], ; LEN [LIST #llist , ; LAST #llast]]]]. ; verb-b-gr-2_ir := ; %suffix (!ca !ce) (ta ce) (ɗiba ɗebe) ; verb-b-low-do-irule & ; [SYNSEM.LOCAL [CAT.HEAD verb, ; CONT.HOOK.INDEX.E non-cont-tam], ; SUPRA [TONE [LIST l*-h-list , ; LAST #tlast], ; LEN [LIST , ; LAST #llast]], ; DTR [MORPH.MCLASS v-gr2, ; SUPRA [TONE [LIST list, ; LAST #tlast], ; LEN [LIST , ; LAST #llast]]]]. ; verb-c-gr-2_ir := ; %suffix (!ca !ci) (ta ci) (ɗiba ɗebi) ; verb-c-infl-irule & ; [SYNSEM.LOCAL [CAT.HEAD verb, ; CONT.HOOK.INDEX.E non-cont-tam], ; SUPRA [TONE [LIST l*-h-list , ; LAST #tlast], ; LEN [LIST , ; LAST #llast]], ; DTR [MORPH.MCLASS v-gr2, ; SUPRA [TONE [LIST list, ; LAST #tlast], ; LEN [LIST , ; LAST #llast]]]]. ; verb-b-gr0_ir := ; %suffix (!ca !ca) (!ci !ci) ; verb-b-low-do-irule & ; [SUPRA [TONE [LIST #tlist , ; LAST #tlast], ; LEN [LIST , ; LAST #llast]], ; DTR [MORPH.MCLASS v-gr0, ; SUPRA [TONE [LIST #tlist, ; LAST #tlast], ; LEN [LIST , ; LAST #llast]]]]. ;;; Nominal valence marking noun-a_ir := noun-A-irule. noun-b-c_fem-sg_ir := %suffix (!c!v !c!vn) (!cai !can) (!cau !can) (!ca !car) noun-b-c-irule & [SYNSEM.LOCAL.AGR.PNG p-s-f, SUPRA [LEN [LIST , LAST #ll], TONE #tone], DTR [SUPRA [LEN [LIST <[] . #len>, LAST #ll], TONE #tone]]]. noun-b-c_m-or-pl_ir := %suffix (!c!v !c!vn) (!cai !can) (!cau !can) noun-b-c-irule & [SYNSEM.LOCAL.AGR.PNG p-n-m+p-p-g, SUPRA [LEN [LIST , LAST #ll], TONE #tone], DTR [SUPRA [LEN [LIST <[] . #len>, LAST #ll], TONE #tone]]]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Noun inflection rules ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Specificity marker m-or-pl-noun_def_high_ir := %suffix (!c!v !c!vn) (!c!v?g !c!vn) noun-def-irule & [SYNSEM.LOCAL.CONT.HOOK.INDEX.PNG p-n-m+p-p-g, SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST , LAST #tlast], LEN [LIST <[] . #llist>, LAST #llast] ]]]. f-sg-noun_def_high_ir := %suffix (!c!v !c!vn) (!c!v?g !c!vn) (!ca !car) noun-def-irule & [SYNSEM.LOCAL.CONT.HOOK.INDEX.PNG p-s-f, SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST , LAST #tlast], LEN [LIST <[] . #llist>, LAST #llast] ]]]. m-or-pl-noun_def_low_ir := %suffix (!c!v !c!vn) (!v?g !vn) noun-def-irule & [SYNSEM.LOCAL.CONT.HOOK.INDEX.PNG p-n-m+p-p-g, SUPRA [TONE #tone, LEN [LIST , LAST #llast]], DTR [SUPRA [TONE #tone & [LIST ], LEN [LIST <[] . #llist>, LAST #llast] ]]]. f-sg-noun_def_low_ir := %suffix (!c!v !c!vn) (!v?g !vn) (a ar) noun-def-irule & [SYNSEM.LOCAL.CONT.HOOK.INDEX.PNG p-s-f, SUPRA [TONE #tone, LEN [LIST , LAST #llast]], DTR [SUPRA [TONE #tone & [LIST ], LEN [LIST <[] . #llist>, LAST #llast] ]]]. ;;; DO inflection rules 1-sg_do_pron_ir := %suffix (* ni) do-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG.PN 1s]], ...> ]]. 2-sg-m_do_pron_ir := %suffix (* ka) do-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 2s, GEND m]]], ...> ]]. 2-sg-f_do_pron_ir := %suffix (* ki) do-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 2s, GEND f]]], ...> ]]. 3-sg-m_do_pron_ir := %suffix (* shi) do-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 3s, GEND m]]], ...> ]]. 3-sg-f_do_pron_ir := %suffix (* ta) do-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 3s, GEND f]]], ...> ]]. 1-pl_do_pron_ir := %suffix (n nmu) (r rmu) do-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 1p]]], ...> ]]. 2-pl_do_pron_ir := %suffix (n nku) (r rku) do-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 2p]]], ...> ]]. 3-pl_do_pron_ir := %suffix (n nsu) (r rsu) do-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 3p]]], ...> ]]. ;;; IO inflection rules 1-sg_io_pron_ir := %suffix (wa mini) io-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG.PN 1s]], ...> ] ]. 2-sg-m_io_pron_ir := %suffix (wa maka) io-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 2s, GEND m] ]], ...> ] ]. 2-sg-f_io_pron_ir := %suffix (wa maki) io-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 2s, GEND f]]], ...> ] ]. 3-sg-m_io_pron_ir := %suffix (wa masa) io-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 3s, GEND m]]], ...> ] ]. 3-sg-f_io_pron_ir := %suffix (wa mata) io-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 3s, GEND f]]], ...> ] ]. 1-pl_io_pron_ir := %suffix (wa mana) io-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG.PN 1p]], ...> ] ]. 2-pl_io_pron_ir := %suffix (wa muku) io-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG.PN 2p]], ...> ] ]. 3-pl_io_pron_ir := %suffix (wa musu) io-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG.PN 3p]], ...> ] ]. ;;; IO resumption rules 1-sg_io_resump_ir := %suffix (wa mini) io-resump-irule & [SYNSEM.NON-LOCAL.SLASH ]. 2-sg-m_io_resump_ir := %suffix (wa maka) io-resump-irule & [SYNSEM.NON-LOCAL.SLASH ]. 2-sg-f_io_resump_ir := %suffix (wa maki) io-resump-irule & [SYNSEM.NON-LOCAL.SLASH ]. 3-sg-m_io_resump_ir := %suffix (wa masa) io-resump-irule & [SYNSEM.NON-LOCAL.SLASH ]. 3-sg-f_io_resump_ir := %suffix (wa mata) io-resump-irule & [SYNSEM.NON-LOCAL.SLASH ]. 1-pl_io_resump_ir := %suffix (wa mana) io-resump-irule & [SYNSEM.NON-LOCAL.SLASH ]. 2-pl_io_resump_ir := %suffix (wa muku) io-resump-irule & [SYNSEM.NON-LOCAL.SLASH ]. 3-pl_io_resump_ir := %suffix (wa musu) io-resump-irule & [SYNSEM.NON-LOCAL.SLASH ]. ;;; Possessive inflection rules 1-sg_poss_pron_ir := %suffix (n na) (r ta) poss-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG.PN 1s]], ...> ], SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST <[] . #llist>, LAST #llast] ]]]. 2-sg-m_poss_pron_ir := %suffix (n nka) (r rka) poss-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 2s, GEND m]]], ...> ], SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast] ]]]. 2-sg-f_poss_pron_ir := %suffix (n nki) (r rki) poss-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 2s, GEND f]]], ...> ], SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast] ]]]. 3-sg-m_poss_pron_ir := %suffix (n nsa) (r rsa) poss-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 3s, GEND m]]], ...> ], SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast] ]]]. 3-sg-f_poss_pron_ir := %suffix (n nta) (r rta) poss-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 3s, GEND f]]], ...> ], SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast] ]]]. 1-pl_poss_pron_ir := %suffix (n nmu) (r rmu) poss-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 1p]]], ...> ], SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast] ]]]. 2-pl_poss_pron_ir := %suffix (n nku) (r rku) poss-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 2p]]], ...> ], SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast] ]]]. 3-pl_poss_pron_ir := %suffix (n nsu) (r rsu) poss-pron-irule & [C-CONT [RELS.LIST <[ARG0 [PNG [PN 3p]]], ...> ], SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast] ]]]. ;;; Poss resumption rules 1-sg_poss_resump_ir := %suffix (n na) (r ta) poss-resump-irule & [SYNSEM.NON-LOCAL.SLASH , SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST <[] . #llist>, LAST #llast] ]]]. 2-sg-m_poss_resump_ir := %suffix (n nka) (r rka) poss-resump-irule & [SYNSEM.NON-LOCAL.SLASH , SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast] ]]]. 2-sg-f_poss_resump_ir := %suffix (n nki) (r rki) poss-resump-irule & [SYNSEM.NON-LOCAL.SLASH , SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast] ]]]. 3-sg-m_poss_resump_ir := %suffix (n nsa) (r rsa) poss-resump-irule & [SYNSEM.NON-LOCAL.SLASH , SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast] ]]]. 3-sg-f_poss_resump_ir := %suffix (n nta) (r rta) poss-resump-irule & [SYNSEM.NON-LOCAL.SLASH , SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast] ]]]. 1-pl_poss_resump_ir := %suffix (n nmu) (r rmu) poss-resump-irule & [SYNSEM.NON-LOCAL.SLASH , SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast] ]]]. 2-pl_poss_resump_ir := %suffix (n nku) (r rku) poss-resump-irule & [SYNSEM.NON-LOCAL.SLASH , SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast] ]]]. 3-pl_poss_resump_ir := %suffix (n nsu) (r rsu) poss-resump-irule & [SYNSEM.NON-LOCAL.SLASH , SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast] ]]]. ;;; Singular identity rule noun_m_sg_ir := noun-singular-const-rule & [DTR.SYNSEM [LOCAL.AGR.PNG.GEND m]]. noun_f_sg_inh_ir := noun-singular-const-rule & [DTR.SYNSEM [LOCAL.AGR.PNG.GEND f, LKEYS.--MCLASS.INH-GEND +]]. ;;; Singular rules for alternating gender (nouns/adjectives) ;;; High tone i-final -> a noun_f_sg_high-i_ir := %suffix (i a) noun-singular-infl-rule & [SUPRA #supra, DTR [SYNSEM [LOCAL.AGR.PNG.GEND f, LKEYS.--MCLASS.INH-GEND -], SUPRA #supra & [TONE.LIST < high, ... > ]]]. ;;; Low tone i-final -> -ìya noun_f_sg_low-i_ir := %suffix (i iya) noun-singular-infl-rule & [SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SYNSEM [LOCAL.AGR.PNG.GEND f, LKEYS.--MCLASS.INH-GEND -], SUPRA [TONE [LIST <#l & low . #tlist>, LAST #tlast], LEN [LIST <[] . #llist>, LAST #llast]]]]. ;;; Non-i-final (o/u -> uwa; -e -> -iya) noun_f_sg_suff_ir := %suffix (?u uwa) (e iya) noun-singular-infl-rule & [SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SYNSEM [LOCAL.AGR.PNG.GEND f, LKEYS.--MCLASS.INH-GEND -], SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST <[] . #llist>, LAST #llast]]]]. ;;; The infamous Hausa plurals noun_pl1_vow_ir := %suffix (!c?v !co!ci) (t?v toci) (s?v soshi) (w?v woyi) (ts?v tsotsi) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-list], LEN [LIST < long, long . #llist>, LAST #llast] ], DTR [MORPH.MCLASS n-pl-1, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl1_con_ir := %suffix (!c !co!ci) (s soshi) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-list], LEN [LIST < long, long . #llist>, LAST #llast] ], DTR [MORPH.MCLASS n-pl-1, SUPRA.LEN [LIST #llist, LAST #llast]]]. noun_pl2_ir := %suffix (!c?v !cai) (sh?i sai) (c?i tai) (ts?v tsai) noun-plural-infl-rule & [SUPRA [TONE [LIST l*-h-list], LEN [LIST < short . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-2_reg, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl2_gem_ir := %suffix (!c?v !c!cai) noun-plural-infl-rule & [SUPRA [TONE [LIST l*-h-list], LEN [LIST < short . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-2_gem, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl2_redup_ir := %suffix (!c!v!k !c!v!ka!c!v!kai) (littafi littatafai) (fim filafilai) (ƙululu ƙulaƙulai) (jauje jawajawai) (faifai fayafayai) (janjalo jalajalai) (jinjiri jirajirai) (kwalkwali kwalakwalai) (kwarkwaɗa kwarakwarai) (kwarkwaro kwarakwarai) (zuzzuge zugazugai) (tikatiki tikatikai) (mummuƙe muƙamuƙai) (girgije gizagizai) (gungume gumagumai) (kwikwiyo kwiyakwiyai) (shisshike shikashikai) (kankare karakarai) (kuskure kurakurai) (fiffike fikafikai) (diddige dugadugai) noun-plural-infl-rule & [SUPRA [TONE [LIST l*-h-list], LEN ], DTR [MORPH.MCLASS n-pl-2_redup, SUPRA.LEN [LIST < [] . list> ]]]. ;;; Productive noun_pl3_CaCe_ir := %suffix (!c?v !ca!ce) (d?a daje) (t?a tace) (s?a sashe) (z?a zaje) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-h-list], LEN [LIST < long, long . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-3_CaCe, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl3_aye_ir := %suffix (!c?v !caye) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-h-list], LEN [LIST < long, long . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-3_aye, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl3_C2aC3e_ir := %suffix (!c!k?v !ca!ke) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-h-list], LEN [LIST < long, long . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-3_C2aC3e, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl4_bisyl_ir := %suffix (!c?v !c!ca) (o!c?v wa!c!ca) (e!c?v wa!c!ca) (sh?i ssa) (j?i zza) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-hl-h-list], LEN [LIST < long, short . #llast>, LAST #llast]], DTR [MORPH.MCLASS n-pl-4, SUPRA.LEN [LIST < [], [] . #llast>, LAST #llast]]]. noun_pl5_short_ir := %suffix (!c!k?v !ca!ku) (ƙafa ƙafafu) (gaɓa gaɓaɓu) (tsuwe tsuwawu) (kunci kumatu) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-h-list], LEN [LIST < long, long, short . #llast>, LAST #llast]], DTR [MORPH.MCLASS n-pl-5, SUPRA.LEN [LIST < long, short, ...>, LAST #llast]]]. noun_pl5_long_ir := %suffix (i!c?v iya!cu) (u!c?v uwa!cu) (uts?v uwatsu) (mugu miyagu) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-h-list], LEN [LIST < long, long, short . #llast>, LAST #llast]], DTR [MORPH.MCLASS n-pl-5, SUPRA.LEN [LIST < long, long . #llast>, LAST #llast]]]. noun_pl6_una_ir := %suffix (?v una) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-list], LEN [LIST < long, short . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-6_una_reg, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl6_una_red_ir := %suffix (!c?v !cun!cuna) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-list], LEN [LIST < long, short, short . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-6_una_red, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl6_una_gem_ir := %suffix (!c?v !c!cuna) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-list], LEN [LIST < long, short . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-6_una_gem, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. ;;; râi missing (lengthening) noun_pl6_uka_ir := %suffix (?v uka) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-list], LEN [LIST < long, short . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-6_uka_reg, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl6_uka_red_ir := %suffix (!c?v !cu!c!cuka) (c?i tuttuka) (j?i zuzzuka) (sh?i sussuka) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-list], LEN [LIST < long, short, short . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-6_uka_red, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. ;;; Class VI ;;; -uwa noun_pl6_uwa_ir := %suffix (!c?v !cuu!cuwa) (c?i tutuwa) (j?i zuzuwa) (sh?i susuwa) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-list], LEN [LIST < long, short, long . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-6_uwa_red, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl6_uwa_irr_ir := %suffix (ƙane ƙannuwa) (zane zannuwa) (hannu hannuwa) (kunne kunnuwa) (itace itatuwa) (ƙirare ƙiraruwa) (ƙafafu ƙafafuwa) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-list], LEN [LIST < long, short . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-6_uwa_irr, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl6_u-a_ir := %suffix (?v!c?v u!ca) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-list], LEN [LIST < long, short . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-6_u-a_reg, SUPRA.LEN [LIST < [], [] . #llist>, LAST #llast]]]. noun_pl6_u-a_red_ir := %suffix (!c?v!k?v !cu!k!cu!ka) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-list], LEN [LIST < long, short, short . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-6_u-a_red, SUPRA.LEN [LIST < [], [] . #llist>, LAST #llast]]]. noun_pl6_u-a_gem_ir := %suffix (!c?v u!c!ca) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-list], LEN [LIST < long, short . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-6_u-a_gem, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl6_uCCa_ir := %suffix (!c?v !cu!c!ca) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-list], LEN [LIST < long, short . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-6_uCCa, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl6_a_ir := %suffix (!c?v !ca) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-list], LEN [LIST < long . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-6_a, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl7_anni_ir := %suffix (!c?v !canni) (kaka kakani) (tsoho tsofaffi) (sabo sababbi) noun-plural-infl-rule & [SUPRA [TONE [LIST l*-h-list], LEN [LIST < long, short . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-7_anni, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. ;;; Closed class noun_pl7_aiku_ir := %suffix (mara maraku) (rana ranaiku) (tsara tsaraiku) (zana zanaku) (zaza zazaiku) (ceɗiya ceɗaku) (rariya raraiku) (tsamiya tsamaiku) (gona gonaki) (kwana kwanaki) noun-plural-infl-rule & [SUPRA [TONE [LIST l*-h-list], LEN [LIST < long, short . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-7_aiku, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. ;;; Closed class noun_pl7_irr_ir := %suffix (saurayi samari) noun-plural-infl-rule & [SUPRA [TONE [LIST l*-h-list], LEN [LIST < long, long . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-7_irr, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. ;;; noun_pl8_eCani_ir := %suffix (!c?v e!cani) (c?i etani) (a!c?v e!cani) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-h-h-list], LEN [LIST < long, short, long,short . #llast>, LAST #llast]], DTR [MORPH.MCLASS n-pl-8_eCani]]. noun_pl8_CaCCaki-bisyl_ir := %suffix (!c?v !ca!c!caki) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-h-h-list], LEN [LIST < long, short, short, #syl . #llast>, LAST #llast]], DTR [MORPH.MCLASS n-pl-8_CaCCaki, SUPRA.LEN [LIST < [], #syl . #llast >, LAST #llast]]]. ;;; Rule for exceptional trisyllabic kurciya noun_pl8_CaCCaki-trisyl_ir := %suffix (kurciya kurtattaki) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-l-h-h-list], LEN [LIST < long, short, short, #syl . #llast>, LAST #llast]], DTR [MORPH.MCLASS n-pl-8_CaCCaki, SUPRA.LEN [LIST < [], [], #syl . #llast >, LAST #llast]]]. noun_pl9i_ir := %suffix (!c?v !ci) (s?v shi) (w?v yi) noun-plural-infl-rule & [SUPRA [TONE [LIST l*-h-list], LEN [LIST < long . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-9i, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl9u_ir := %suffix (!c?v !cu) (s?v shi) (w?v yi) noun-plural-infl-rule & [SUPRA [TONE [LIST l*-h-list], LEN [LIST < long . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-9u, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. ; Closed class (entire class 10; list of 10.4 incomplete) noun_pl10_ai_ir := %suffix (biri birai) (cinya cinai) (zumu zumai) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-list], LEN [LIST < short . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-10, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl10_trisyl_ir := %suffix (wutsiya wutsai) (garkuwa garki) noun-plural-infl-rule & [SUPRA [TONE [LIST , LAST #tlast], LEN [LIST < short . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-10, SUPRA [TONE [LIST <[],[] . #tlist>, LAST #tlast], LEN [LIST < [],[] . #llist>, LAST #llast]]]]. noun_pl10_H*_ir := %suffix (ɗiya ɗiya) (mata mata) (mace mata) noun-plural-infl-rule & [SUPRA [TONE [LIST h*-list], LEN [LIST < long . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-10, SUPRA.LEN [LIST < [] . #llist>, LAST #llast]]]. noun_pl10_H_ir := %suffix (arne arna) (kusu kusa) (miji maza) (baƙo baƙi) (kwaɗo kwaɗi) (ƙwaro ƙwari) (mazo maji) (tsako tsaki) (zabo zabi) (fara fari) (kaza kaji) (bawa bayi) (fata fatu) (mashi masu) (nama namu) (saye sayu) (yaya yayu) (laya layu) (maye mayu) (rami ramu) (yatsa yatsu) noun-plural-infl-rule & [SUPRA [TONE [LIST , LAST #tlast], LEN [LIST , LAST #llast]], DTR [MORPH.MCLASS n-pl-10, SUPRA [TONE [LIST <[] . #tlist>, LAST #tlast], LEN [LIST < [] . #llist>, LAST #llast]]]]. noun_pl12_lr := noun-plural-const-rule & [MORPH.COMPLETE na-or--, SUPRA #supra, DTR [SUPRA #supra, MORPH.MCLASS n-pl-12 ]]. ;;; Derivational rules ;;; pluractionals, deverbal adjectives, agentive nouns ;;; Pluractionals ;;; Toneless reduplicative prefix pluractional_lr := %prefix (!c!v !c!v!c!c!v) (!v !v\'!v) pluractional-lex-rule. ;;;