# ndetere.xfst (or 'bring me' in ekegusii) # # Companion code to "Finite State Methods for Bantu Verb Morphology" # To appear, Proceedings of the Texas Linguistics Society X # # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Please feel free to contact the creator, Robert Elwell, with any questons # at robert.elwell@gmail.com, or visit his website at http://comp.ling.utexas.edu/relwell # for more information on computational linguistics in ekegusii. ### This transducer will decode surface forms of Ekegusii verbs into its UR ### ### Morphemes will be given their meaning on the lower-end ### ### Phonological Inventory ### define C [{k} | {g} | {b} | {n} | {t} | {r} | {y} | {s} | {m} | {w} | {N} | {c} | {M}]; # N is the velar nasal; c is palatal affricate; M is the underspecified nasal# define V [{a} | {i} | {e} | {o} | {u} | {á} | {í} | {ú} | {é} | {ó}]; define Gld [{w} | {y} ]; define VNT [{a} | {i} | {e} | {o} | {u}]; define VT [{á} | {í} | {ú} | {é} | {ó}]; define Cnas [{n} | {m} | {M} | {N}]; define OBS [{k} | {g} | {b} | {t} | {r} | {s} | {c}]; define Cvoi [{g} | {b} | {n] | {N} | {r} | {y} | {m} | {w} | {M}]; define Cunvoi [{k} | {t}| {s} | {k} | {c}]; define ONS [[Cnas C] | C | [C Gld]]; ### Verbal Stems -- note: rare instances of imbrication will be avoided ### define STEM ["@U.TRANS.NO@"{'run'}:{minyok} | "@U.TRANS.YES@"{'eat'}:{ráager} | {'do'}:{kor} | "@U.TRANS.NO@"{'sleep'}:{rá} | "@U.TRANS.NO@"{'walk'}:{taar} | {'hide'}:{bis} | "@U.TRANS.NO@"{'continue'}:{geenderer} | "@U.TRANS.YES@"{'weigh'}:{ger} | {'learn'}:{eeger} | {'sing'}:{téer} | "@U.TRANS.NO@"{'dance'}:{teeNg} | "@U.TRANS.YES@"{'break'}:{bún} | "@U.TRANS.NO@"{'rest'}:{timok}]; ### Morphological Classes ### define PPFX ["@U.TNS.INF@"{-ppfx}:{o}]; define PFX ["@U.TNS.INF@"{-inf}:{kó}]; define IN ["@U.NEG.NO@"{-IN}:{M} | "@R.NEG.NO@""@R.SUBJ@"{-IN}:{ní} | "@U.NEG.NO@""@R.SUBJ@"{-IN}:{nA}]; define SM ["@D.TNS.INF@""@U.SUBJ.1S@"{-s=1sg}:{M} | "@D.TNS.INF@""@U.SUBJ.2S@"{-s=2sg}:{o} | "@D.TNS.INF@""@U.SUBJ.2S@"{-s=2sg}:{ko} | "@D.TNS.INF@""@U.SUBJ.3S@"{-s=3sg}:{a} | "@D.TNS.INF@""@U.SUBJ.1P@"{-s=1pl}:{to} | "@D.TNS.INF@""@U.SUBJ.2P@"{-s=2pl}:{mo} | "@D.TNS.INF@""@U.SUBJ.3P@"{-s=3pl}:{ba} | "@D.TNS.INF@""@U.NEG.YES@""@U.SUBJ.1S@"{-neg-s=1sg}:{tíín} | "@D.TNS.INF@""@U.NEG.YES@""@U.SUBJ.2S@"{-neg-s=2sg}:{tó} | "@D.TNS.INF@""@U.NEG.YES@""@U.SUBJ.3S@"{-neg-s=3sg}:{tá} | "@D.TNS.INF@""@U.NEG.YES@""@U.SUBJ.1P@"{-neg-s1pl}:{ntó} | "@D.TNS.INF@""@U.NEG.YES@""@U.SUBJ.2P@"{-neg-s=2pl}:{mmó} | "@D.TNS.INF@""@U.NEG.YES@""@U.SUBJ.3P@"{-neg-s=3pl}:{mbá} | "@R.TNS.INF@"0:0]; define TM [ "@U.TNS.PRES@"{-pres}:0 | "@R.TNS.INF@" 0:0 | "@U.TNS.RPAST@""@D.ASP.PERF@"{-recpast}:{áá} | "@U.TNS.FPAST@""@D.ASP.PERF@"{-farpast}:{áa} | "@U.TNS.PAST@""@U.ASP.PERF@"{-perfpast}:{a} | "@U.TNS.FUT@""@U.MOOD.SUBJ@""@D.ASP.PERF@"{-fut}:{ráa}]; define OM [ "@D.TRANS.NO@""@D.SUBJ.1S@"{-o=1sg}:{N} | "@D.TRANS.NO@""@D.SUBJ.2S@"{-o=2sg}:{ko} | "@D.TRANS.NO@""@D.SUBJ.3S@"{-o=3sg}:{mo} | "@D.TRANS.NO@""@D.SUBJ.1P@"{-o=1pl}:{to} | "@D.TRANS.NO@"{-o=2pl/3pl}:{ba} | "@D.TRANS.NO@"{-o=refl}:{éé}]; define LM ["@D.TNS.PRES@""@D.TNS.FPAST@""@D.MOOD.SUBJ@""@D.TNS.RPAST@"{+lim}:{ka}]; define EXT [("@C.TRANS@""@U.TRANS.YES@"{-app}:{er}) ({-rec}:{an}) ("@C.TRANS@""@U.TRANS.YES@"{-cause}:[{i} .o. [i -> y || V_V]] ) ("@C.TRANS@""@U.TRANS.YES@"{-pas}:[{w} | {gw}])]; define FV ["@D.MOOD.SUBJ@""@D.TNS.PAST@""@D.TNS.FPAST@""@D.TNS.RPAST@""@D.ASP.PERF@""@D.NEG.YES@"{+ind}:{a} | "@U.MOOD.SUBJ@""@U.TNS.FUT@""@D.NEG.YES@""@D.ASP.PERF@"{-subj}:{e} | "@R.NEG.YES@""@D.TNS.PAST@""@D.TNS.FPAST@""@D.ASP.PERF@"{-neg}:{i} | "@U.TNS.PAST@""@U.TNS.FPAST@""@U.TNS.RPAST@""@D.NEG.YES@"{-past}:{ete} | "@U.TNS.PAST@""@U.TNS.FPAST@""@U.TNS.RPAST@""@U.NEG.YES@"{-neg-past}:{eti} | "@U.ASP.PERF@""@D.TNS.RPAST@""@D.TNS.FPAST@"{-perf}:{ire}]; define FLOAT [ 0:0 | "@D.TNS.PAST@""@D.TNS.FPAST@""@D.ASP.PERF@""@D.NEG.YES@"{+habit}:{x} | "@R.TNS.FPAST@"0:{X} | "@R.TNS.RPAST@"0:{X} | "@R.TNS.FUT@"0:{X}]; define DISSIM [[{k} -> {g} || .#.([{o} | Cnas])_ V Cunvoi] .o. [{g} -> {k} || .#.({o})_ V Cvoi]]; define COMPLEN [[{o} -> {we} || ~V _ ({!}) {e} ] .o. [{o} -> {wa} || ~V _ ({!}) {a}] .o. [ {ó} -> {wá} || ~V _ ({!}) {a}] .o. [ {ó} -> {wé} || _ ({!}) {e}] .o. [{o} -> {wá} || ~V _ ({!}) {á}] .o. [{o} -> {wé} || ~V _ ({!}) {é}] .o. [{ó} -> {wá} || ~V _ ({!}) {á}]]; define VDEF [[{A} -> {e} || _{e}] .o. [{A} -> {i} || _{i}] .o. [{A} -> {o} || _{o}] .o. [{A} -> {u} || _{u}] .o. [{A} -> {á}|| _{á}] .o. [{A} -> {í}|| _{í}] .o. [{A} -> {ú} || _{ú}] .o. [{A} -> {é}|| _ {é}] .o. [{A} -> {ó} || _{ó}] .o. [{A}->{a}]]; #fix define SPREAD [[{a} -> {aq} || VT ONS _ [[C VNT] | .#. ]] .o. [{i} -> {iq} || VT ONS _ [[ONS VNT] | .#. ]] .o. [{u} -> {uq} || VT C _ [[ONS VNT] | .#. ]] .o. [{e} -> {eq} || VT ONS _ [[ONS VNT] | .#. ]] .o. [{o} -> {oq} || VT ONS _ [[ONS VNT] | .#. ] ] ]; #.o. [{a} -> {aq} || {á} _ ] .o. [{i} -> {iq} || {í} _] .o. [{u} -> {uq} || {ú} _] .o. [{e} -> {eq} || {é} _] .o. [{o} -> {oq} || {ó} _]]; define OCP1 [[{á} -> {áz} || _ [(ONS) [{í} | {ú} | {é} | {ó}]] | [ONS VT] ] .o. [{í} -> {íz} || _ [(ONS) [{á} | {ú} | {ó} | {é}]] | [ONS VT]] .o. [{ú} -> {úz} || _ [(ONS) [{á} | {í} | {é} | {ó}]] | [ONS VT]] .o. [{ó} -> {óz} || _ [(ONS) [{á} | {í} | {é} | {ú}]]| [ONS VT]] .o. [{é} -> {éz} || _ [(ONS) [{á} | {í} | {ú} | {ó}]] | [ONS VT]]]; # vowel marked for delinking if it's next to an unidentical vowel or other syllable with high linking# define OCP2 [{a} -> {aq} || _ ONS VT {z}] .o. [{i} -> {iq} || _ ONS VT z] .o. [{u} -> {uq} || _ ONS VT {z}] .o. [{e} -> {eq} || _ ONS VT {z}] .o. [{o} -> {oq} || _ ONS VT {z}]; define ADDTONE [ [{aq} -> {á}] .o. [{eq} -> {é}] .o. [{iq} -> {í}] .o. [{oq} -> {ó}] .o. [{uq} -> {ú}]]; define STRIPTONE [ [{áz} -> {a}] .o. [{éz} -> {e}] .o. [{íz} -> {i}] .o. [{óz} -> {o}] .o. [{úz} -> {u}]]; define INTERCEPT {z} -> 0 || .#. (ONS) VT _; define SUPERHIGH [ [{ax} -> {â}] .o. [{ex} -> {ê}] .o. [{ix} -> {î}] .o. [{ox} -> {ô}] .o. [{ux} -> {û}] .o. [{áx} -> {â}] .o. [{éx} -> {ê}] .o. [{íx} -> {î}] .o. [{óx} -> {ô}] .o. [{úx} -> {û}]]; define STEP [ [..] -> {!} || .#. (ONS) VT ONS _ VT]; define UNLONG [[{a} -> 0 || V _ {a}] .o. [{i} -> 0 || V _ {i}] .o. [{o} -> 0 || V _ {o}] .o. [{u} -> 0 || V _ {u}] .o. [{á} -> 0 || V _ {á}] .o. [{í} -> 0 || V _ {í} ] .o. [{ú} -> 0 || V _ {ú}] .o. [{ó} -> 0 || V _ {ó}] .o. [V -> 0 || _ V V] ]; define SHORT [V -> 0 || _ V V ]; # fix? define PRENAS [{N} -> {M} || _ OBS]; define NASSIM [[Cnas -> {n} || _ [{t}|{d}|{r}|{s}|{c}|{n}]] .o. [Cnas -> {m} \\ _ [{b}|{m}]] .o. [Cnas -> {N} || _ [{k}|{g}|{N}]]]; define NOCLUST [OBS -> 0 || OBS _]; define TWONASALS [Cnas -> 0 || _ Cnas Cnas]; define CLEAN [[{c} -> {ch}] .o. [ {N} -> {ng'}] .o. [{M} -> {n}] .o. [{ng'} -> {n} || _[{g} | {k}]] .o. [{q} -> 0 .o. {x} -> 0]]; define DOCK1 [ [..] -> {Q} || VNT ONS VNT _ ONS VNT ONS VNT {X}]; define DOCK2 [ [..] -> {Q} || [[VNT {Q} ONS VNT] | [VNT ONS VNT]] _ ONS VNT {X}]; define DOCK3 [ [{X} -> {Q}] .o. [{Q} -> {q}]]; define DOCK [DOCK1 .o. DOCK2 .o. DOCK3]; define UNDOCK [ [..] -> {z} || VT VT _ ONS VT]; define FIXFLOAT [ [..] -> [q] || VT VNT+ _ ]; define PHON [DISSIM .o. VDEF .o. COMPLEN .o. UNLONG .o. SHORT .o. SPREAD .o. OCP1 .o. OCP2 .o. UNDOCK .o. FIXFLOAT .o. DOCK .o. ADDTONE .o. SUPERHIGH .o. INTERCEPT .o. STRIPTONE .o. STEP .o. PRENAS .o. NASSIM .o. NOCLUST .o. TWONASALS .o. CLEAN]; define ROOT [STEM (EXT) FV FLOAT]; define WORD [ ([[([IN|PPFX]) PFX] | IN]) SM TM (OM) (LM) ROOT]; push WORD; set obey-flags on set flag-is-epsilon on; define GRAM [WORD .o. PHON]; push GRAM; set char-encoding UTF-8