;;; -*- Mode: TDL; Coding: utf-8 -*- ;;; HAG (Hausa Grammar) ;;; Author: Berthold Crysmann ;;; 2009-2011 ;;; Letter sets ;;; All consonants %(letter-set (!c bcdfghjklmnpqrstvwxyzɓɗƙ\')) %(letter-set (!k bcdfghjklmnpqrstvwxyzɓɗƙ\')) %(letter-set (!l mnlyɗdtrzs)) ;;; Nasals %(letter-set (!n mn)) ;;; Coronals %(letter-set (!t ɗdtrzs)) ;;; Consonants palatalising to j %(letter-set (!d dz)) ;;; All vowels %(letter-set (!v aeiou)) %(letter-set (!e aeiou)) ;;; Front vowels %(letter-set (!i ei)) ;;; Non-front vowels %(letter-set (!a aou)) ;;; Glides %(letter-set (!g ui)) ;;; Back vowels %(letter-set (!u ou)) %(wild-card (?c bcdfghjklmnpqrstvwxyzɓɗƙ\')) %(wild-card (?d dz)) %(wild-card (?v aeiou)) %(wild-card (?i ei)) %(wild-card (?a aou)) %(wild-card (?u ou)) %(wild-card (?e aoui)) ;;; 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 <#h & high . #tlist>, 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 supra_reent & [TONE.LIST #tone], DTR [MORPH.MCLASS v-vn-reg-gr & [A.TRI- #tone], SUPRA.LEN [LIST < [] . 0-1-list >, LAST <> ]]]. verb-a-tri+_ir := verb-a-irule & [SYNSEM.LOCAL.CONT.HOOK.INDEX.E non-cont-tam, SUPRA.TONE.LIST #tone, DTR [MORPH.MCLASS v-vn-reg-gr & [A.TRI+ #tone], SUPRA.LEN [LIST <[],[],[], ... >, LAST <>] ]]. verb-a-wa_ir := verb-a-irule & [SYNSEM.LOCAL.CONT.HOOK.INDEX.E no_tam, SUPRA.TONE.LIST #tone, DTR [MORPH.MCLASS v-vn-irr-gr & [LEX #tone & <[], ...>]]]. ;;; Frame B verb-b-1-4-0-6-tri-_ir := %suffix (!ca !ca) (!ce !ce) (!ci !ci) verb-b-irule & [SUPRA.TONE.LIST #tone, DTR [MORPH.MCLASS vclass-gr1-gr4-gr0-gr6 & [B.TRI- #tone], SUPRA.LEN [LIST < [] . 0-1-list >, LAST <> ]]]. 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 <[],[],[], ... >, LAST < > ] ] ]. verb-b-2_ir := %suffix (!ca !ce) (ta ce) (ɗiba ɗebe) verb-b-irule & [SUPRA.TONE.LIST #tone, DTR [SYNSEM.LOCAL.CONT.HOOK.INDEX.E non-cont-tam, MORPH.MCLASS vclass-gr2 & [B [TRI- #tone, TRI+ #tone] ]]]. verb-b-wa_ir := %suffix (wa mu) wa-b-irule & [SUPRA [TONE [LIST h*-l-cons]], DTR [MORPH.MCLASS v-vn-irr-wa]]. verb-b-gani-sani_ir := %suffix (sani san) (gani gan) (bari bar) gani-sani-b-irule & [SUPRA [TONE [LIST ]], DTR [MORPH.MCLASS v-vn-irr-gani-sani]]. verb-c-gani-sani_ir := %suffix (sani san) (gani ga) (bari bar) gani-sani-c-irule & [SUPRA [TONE [LIST h*-list]], DTR [MORPH.MCLASS v-vn-irr-gani-sani]]. ;;; 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 & v-vn-reg-gr & [C [TRI- #tone]], SUPRA.LEN [LIST < [] . 0-1-list >, LAST <> ]]]. 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 <[],[],[], ... > ]]]. ;;; Good verb-c-5_ir := verb-c-idlen-irule & [SUPRA.TONE.LIST #tone, SYNSEM.LOCAL.CAT.VAL.COMPS <[LOCAL.CAT.HEAD.CASE da]>, DTR [MORPH.MCLASS vclass-gr5, SUPRA [TONE.LIST #tone]]]. 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 < [] . 0-1-list >, LAST <> ]]]. 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 < [], [],[], ... >, LAST <> ] ] ]. verb-c-2_ir := %suffix (!c?v !ci) (ta ci) (ɗiba ɗebi) verb-c-short-irule & [SUPRA.TONE.LIST #tone, DTR [SYNSEM.LOCAL.CONT.HOOK.INDEX.E non-cont-tam, MORPH.MCLASS vclass-gr2 & [C [TRI- #tone, TRI+ #tone] ]]]. verb-c-wa_ir := verb-c-idlen-irule & [SUPRA [TONE #tone], DTR [SUPRA.TONE #tone, MORPH.MCLASS v-vn-irr-wa]]. ; ;;; 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-cons , ; 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-cons , ; 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-cons , ; 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-cons , ; 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. ;;; Generalising all pronominal affix rules ;;; Tonal distinctions are now shipped to the frame rules ;;; Need separate rules for noun B and C frames ;;; %suffix (!c!v !c!vn) (!cai !can) (!cau !can) (!ca !car) noun-b_fem-sg_1-sg_ir := %suffix (* r) noun-b-irule & [SYNSEM.LOCAL [AGR.PNG p-s-f, CAT.VAL.COMPS < [LOCAL.AGR.PNG [PN 1s]] > ], SUPRA [LEN [LIST < long, long . #len>, LAST #ll], TONE [LIST < high . #tone>, LAST #tl] ], DTR [SUPRA [LEN [LIST <[] . #len>, LAST #ll], TONE [LIST #tone, LAST #tl] ] ] ]. noun-b_m-or-pl_1-sg_ir := %suffix (!c!v !c!vn) noun-b-irule & [SYNSEM.LOCAL [AGR.PNG p-n-m+p-p-g, CAT.VAL.COMPS < [LOCAL.AGR.PNG [PN 1s]] > ], SUPRA [LEN [LIST < long, long . #len>, LAST #ll], TONE [LIST < high . #tone>, LAST #tl] ], DTR [SUPRA [LEN [LIST <[] . #len>, LAST #ll], TONE [LIST #tone, LAST #tl] ] ] ]. noun-b_fem-sg_ir := %suffix (!c!v !c!vn) (!cai !can) (!cau !can) (!ca !car) noun-b-irule & [SYNSEM.LOCAL [AGR.PNG p-s-f, CAT.VAL.COMPS < [LOCAL.AGR.PNG [PN -1s]] > ], SUPRA [LEN [LIST < short, short . #len>, LAST #ll], TONE [LIST < low . #tone>, LAST #tl] ], DTR [SUPRA [LEN [LIST <[] . #len>, LAST #ll], TONE [LIST #tone, LAST #tl] ] ] ]. noun-b_m-or-pl_ir := %suffix (!c!v !c!vn) (!cai !can) (!cau !can) noun-b-irule & [SYNSEM.LOCAL [AGR.PNG p-n-m+p-p-g, CAT.VAL.COMPS < [LOCAL.AGR.PNG [PN -1s]] > ], SUPRA [LEN [LIST < short, short . #len>, LAST #ll], TONE [LIST < low . #tone>, LAST #tl] ], DTR [SUPRA [LEN [LIST <[] . #len>, LAST #ll], TONE [LIST #tone, LAST #tl] ] ] ]. noun-c_fem-sg_ir := %suffix (!c!v !c!vn) (!cai !can) (!cau !can) (!ca !car) noun-c-irule & [SYNSEM.LOCAL.AGR.PNG p-s-f]. noun-c_m-or-pl_ir := %suffix (!c!v !c!vn) (!cai !can) (!cau !can) noun-c-irule & [SYNSEM.LOCAL.AGR.PNG p-n-m+p-p-g]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; 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) (n na) (r ta) (mu mini) human-do-pron-irule & [DTR [SYNSEM.LOCAL.CAT.VAL.COMPS <[LOCAL.AGR [PNG.PN 1s]], ...> ]]. 2-sg-m_do_pron_ir := %suffix (* ka) (mu maka) human-do-pron-irule & [DTR [SYNSEM.LOCAL.CAT.VAL.COMPS <[LOCAL.AGR [PNG [PN 2s, GEND m]]], ...> ]]. 2-sg-f_do_pron_ir := %suffix (* ki) (mu miki) human-do-pron-irule & [DTR [SYNSEM.LOCAL.CAT.VAL.COMPS <[LOCAL.AGR [PNG [PN 2s, GEND f]]], ...> ]]. 3-sg-m_do_pron_ir := %suffix (* shi) (n nsa) (r rsa) (mu masa) do-pron-irule & [DTR [SYNSEM.LOCAL.CAT.VAL.COMPS <[LOCAL.AGR [PNG [PN 3s, GEND m]]], ...> ]]. 3-sg-f_do_pron_ir := %suffix (* ta) (mu mata) do-pron-irule & [DTR [SYNSEM.LOCAL.CAT.VAL.COMPS <[LOCAL.AGR [PNG [PN 3s, GEND f]]], ...> ]]. 1-pl_do_pron_ir := %suffix (* mu) (mu mana) human-do-pron-irule & [DTR [SYNSEM.LOCAL.CAT.VAL.COMPS <[LOCAL.AGR [PNG [PN 1p]]], ...> ]]. 2-pl_do_pron_ir := %suffix (* ku) human-do-pron-irule & [DTR [SYNSEM.LOCAL.CAT.VAL.COMPS <[LOCAL.AGR [PNG [PN 2p]]], ...> ]]. 3-pl_do_pron_ir := %suffix (* su) do-pron-irule & [DTR [SYNSEM.LOCAL.CAT.VAL.COMPS <[LOCAL.AGR [PNG [PN 3p]]], ...> ]]. ;;; Singular identity rule noun_m_sg_ir := noun-singular-const-rule & [DTR.SYNSEM [LOCAL.AGR.PNG.GEND m, LKEYS.--MCLASS.INH-GEND bool]]. 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]]]]. ;;; BC: should the base-final vowel be long or short? Definitely short for participles. ;;; 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]]]]. ;;; Singular rules for augmentatives (noun class 14) noun_m_sg_14_ir := %suffix (!ca !ce!ce) (za jeje) (sa sheshe) (ta cece) noun-singular-infl-rule & [SUPRA [TONE [LIST h*-l-cons], LEN [LIST , LAST #llast]], DTR [SYNSEM [LOCAL.AGR.PNG.GEND m, LKEYS.--MCLASS n-pl-14 & [INH-GEND na]], SUPRA [LEN [LIST <#l . #llist>, LAST #llast]]]]. noun_f_sg_14_ir := %suffix (!ca !ce!ciya) (za jejiya) (sa sheshiya) (ta ceciya) noun-singular-infl-rule & [SUPRA [TONE [LIST h*-l-h-cons], LEN [LIST , LAST #llast]], DTR [SYNSEM [LOCAL.AGR.PNG.GEND f, LKEYS.--MCLASS n-pl-14 & [INH-GEND na]], SUPRA [LEN [LIST <#l . #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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], 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-cons], LEN [LIST < long . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-9_i, 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-cons], LEN [LIST < long . #llist>, LAST #llast]], DTR [MORPH.MCLASS n-pl-9_u, 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-redup-const-rule & [MORPH.COMPLETE na-or--, SUPRA #supra, MORPH.--REDUP.--SUPRA [TONE #tone, LEN #len & [LIST cons]], DTR [SUPRA #supra & [TONE #tone, LEN #len], MORPH [MCLASS n-pl-12] ]]. ; noun_pl12_red_lr := ; noun-plural-const-rule & ; [MORPH [--REDUP.--SUPRA [LEN diff-list], ; COMPLETE na-or--], ; SUPRA #supra, ; DTR [SUPRA #supra, ; MORPH [MCLASS n-pl-12, ; --REDUP [--SUPRA [TONE & [LIST <> ], ; LEN & [LIST <> ]]]] ; ]]. noun_pl14_lr := noun-plural-redup-const-rule & [MORPH [--REDUP.--SUPRA [TONE.LIST h*-list, LEN #red-len], COMPLETE na-or--], SUPRA [TONE.LIST l*-list, LEN [LIST #len & < [], [], ...> & [--LT #red-len], LAST #last]], DTR [SUPRA [TONE.LIST h*-l-cons, LEN [LIST #len, LAST #last]], MORPH [MCLASS n-pl-14 ] ]]. ;;; This rule will go once ace records spelling changes properly ; noun_pl14_red_lr := ; %suffix (__REDUP__ __REDUP__) (!ce!ce !ca) ; noun-plural-infl-rule & ; [MORPH #m & [COMPLETE na-or--], ; SUPRA [TONE.LIST h*-list, ; LEN [LIST #len, ; LAST #last]], ; DTR [SUPRA [TONE.LIST h*-l-cons, ; LEN [LIST < long . #len >, ; LAST #last]], ; MORPH #m & [MCLASS n-pl-14, ; --REDUP [--SUPRA [TONE & [LIST <> ], ; LEN & [LIST <> ]]] ; ]]]. noun_pl_lex_lr := noun-plural-const-rule & [INFLECTED [NUM-GEND +], SUPRA #supra & [TONE.LIST #tone], DTR [INFLECTED [NUM-GEND -], SYNSEM.LKEYS.--TONE #tone, SUPRA #supra, MORPH [MCLASS n-pl-uninfl]]]. ;;; Derivational rules ;;; pluractionals, deverbal adjectives, agentive nouns ;;; Deverbal adjectives participle_ir := %suffix (!c?v !ca!c!ce) (s?v sasshe) (t?v tacce) (z?v zajje) participle-infl-lex-rule. stative_ir := %suffix (!c?v !ce) (s?v she) (t?v ce) (z?v je) stative-infl-lex-rule. ;;; Pluractionals ;;; Toneless reduplicative prefix ;;; TODO: Incorporate vowel reduction for /e/ ;;; TODO: Migrate grammar to monographs (replace 'y, ts, sh in phonology) ;;; TODO: Make word initial consonants explicit (e.g. \textipa{?}) pluractional_gem_ir := %prefix (!c!v !c!v!c!c!v) pluractional-verb-prefix-lex-rule. pluractional_ir := %prefix (!c!v!l !c!v!l!c!v!l) (!v!l !v\'!v!l) (!c!v!t !c!vr!c!v!t) (!c!v!n !c!vn!c!v!n) (!t!v!n !t!vn!t!v!n) (!c!vy !c!vi!c!vy) pluractional-verb-prefix-lex-rule & [MORPH.MCLASS v-vn-reg-gr]. pluractional_infix_ir := %prefix (!k!e!c!v !k!e!c!v!c!c!v!c) (!k!e!c!c!v !k!e!c!v!c!c!v) (!k!e!c!v!l !k!e!c!v!l!c!v!l) (!k!e!c!v!t !k!e!c!vr!c!v!t) (!k!e!c!v!n !k!e!c!v!n!c!v!n) (!k!e!t!v!n !k!e!t!vn!t!v!n) pluractional-verb-infix-lex-rule & [MORPH.MCLASS v-vn-reg-gr]. ;;; Restrict MCLASS to respective verb grades noun_pluract_ir := %suffix (?e e) (t?a ce) (s?a she) (?d?a je) pluractional-noun-infl-lex-rule & [STEM <#stem>, MORPH [MCLASS n-pl-13, --REDUP [--STEM <#stem>, --SUPRA [TONE #tone, LEN [LIST.--LT #red-len, LAST #last]]], COMPLETE na-or--], SUPRA [TONE #tone & [LIST l*-h-cons], LEN [LIST & [--LT #red-len], LAST #last ]], DTR [SUPRA [LEN [LIST < [] . #len >, LAST #last]]]]. noun_pl13_lr := %suffix (?e e) noun-plural-redup-infl-rule & [MORPH [--REDUP.--SUPRA [TONE.LIST l*-h-cons, LEN [LIST.--LT #red-len, LAST #last]], COMPLETE na-or--], SUPRA [TONE.LIST l*-h-cons, LEN [LIST & [--LT #red-len], LAST #last ]], DTR [SUPRA [LEN [LIST < [] . #len >, LAST #last]], MORPH [MCLASS n-pl-13 ] ]].