;;; -*- Mode: TDL; Coding: utf-8 -*- ;;; HAG (Hausa Grammar) ;;; Author: Berthold Crysmann ;;; 2009 ;;; 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)) ;;; Palatalising vowels %(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)) ;;; verb-A_ir := verb-A-irule & [SYNSEM.LOCAL.CONT.HOOK.INDEX.E non-cont-tam]. 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 [SYNSEM.LKEYS.--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 [SYNSEM.LKEYS.--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 [SYNSEM.LKEYS.--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 [SYNSEM.LKEYS.--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 [SYNSEM.LKEYS.--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 [SYNSEM.LKEYS.--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 [SYNSEM.LKEYS.--MCLASS v-vn-irr-m-gr, SUPRA [TONE [LIST #tlist, LAST #tlast], LEN [LIST #llist, LAST #llast]]]]. ;;; 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 [SYNSEM.LKEYS.--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 [SYNSEM.LKEYS.--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 [SYNSEM.LKEYS.--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 [SYNSEM.LKEYS.--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 [SYNSEM.LKEYS.--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 & [SUPRA [TONE [LIST l*-h-list , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SYNSEM.LKEYS.--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 & [SUPRA [TONE [LIST l*-h-list , LAST #tlast], LEN [LIST , LAST #llast]], DTR [SYNSEM.LKEYS.--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 [SYNSEM.LKEYS.--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 (* n) (ai an) (au an) (a ar) 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 (!v !vn) (ai an) (au an) 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 (!v !vn) (!v?g !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 (!v !vr) (!v?g !vr) 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 (!v !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 (!v !vr) (!v?g !vr) 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] ]]]. ;;; 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] ]]]. ;;; 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) (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 [LIST < short, short, long, short . #llast >, LAST #llast]], DTR [MORPH.MCLASS n-pl-2_redup, SUPRA.LEN [LIST < [] . list>, LAST #llast]]]. ;;; 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]]]. ;;; 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]]]. noun_pl12_lr := noun-plural-const-rule & [MORPH.COMPLETE na-or--, SUPRA #supra, DTR [SUPRA #supra, MORPH.MCLASS n-pl-12 ]].