import std.features import std.symbols.ipa import std.symbols.ipa.diacritics ######### # SETUP # ######### feature stress # needs to go directly after vowel instead of the normal place symbol ˈ (diacritic) [+stress] symbol ɡ [(g)] symbol ɫ [(l) +bk +hi] symbol ɬ [(l) -son -vc] symbol dʒ [(ʒ) -cont] symbol tʃ [(ʃ) -cont] feature [V] [-cons +syll] feature [I] [[V] +fr +hi] feature [U] [[V] -bk +hi] feature [A] [[V] +lo] feature [N] [+nas +cons *syll] feature [ALV] [+ant -dist *syll +cons] feature [PST] [+str -ant +dist *syll +cons] # Phonix hangs if it's unable to display a sound. And fricatives aren't just # plosive +cont, because of course they aren't. symbol ?v [(b) +cont] rule ?v-v (persist) ?v => v symbol ?f [(p) +cont] rule ?f-f (persist) ?f => f symbol ?θ [(t) +cont] rule ?θ-θ (persist) ?θ => θ symbol ?ð [(d) +cont] rule ?ð-ð (persist) ?ð => ð symbol ?x [(k) +cont] rule ?x-x (persist) ?x => x symbol ?ɣ [(g) +cont] rule ?ɣ-ɣ (persist) ?ɣ => ɣ feature long symbol ː (diacritic) [+long] rule schwa-glide ə => [-syll] syllable onset [-syll] onset [*syll] nucleus [+syll] coda [-syll] coda ([-syll])[*syll] ##################### # INITIAL ALLOPHONY # ##################### rule nasal-assim [+nas] => [$Place] / _ [$Place +cons] rule r-before-i ɾ => zʲ / _ i rule s-after-postalv s => ʃ / _ [+str +dist] rule nas-cont1 [-cons] => [+nas] / _ [[N]][+cons +cont] rule nas-cont2 [[N]] => * / [+nas -cons] _ [+cons +cont] rule nas-cont3 [[N]] => * / [+syll +cons] _ [+cons +cont] rule nas-vowel-spread [-cons] => [+nas] / _ [+nas -cons] rule nas-glide-fix [+syll -cons][-cons -syll +nas] => [+nas][-nas] rule iv-voiced [+vc -cont] => [+cont] / [-cons] _ [-cons] rule x-before-sr x => h / r̩ _ rule x-after-sr x => h / _ r̩ rule x-before-i x => ç / _ i rule double-r ɾɾ => ʐʐ rule final-r ɾ => ɾ̥ / _ $ rule double-l ll => ɫɫ rule postv-l l => lʲ / _ [+cons] // _ l rule tl l => ɬ / t _ rule final-l l => ɬʲ / _ $ rule lθ lθ => ɬʲɬʲ rule l-back l => ɫ / _ [+bk] rule back-a [[A]] => [-fr +bk] / [+bk] _ rule lower-hi1 [[V] +hi] => [-hi +str] / [+bk] _ // [+lat] _ rule lower-hi2 [-hi -lo *long] => [-str] // _ [-cons] rule ji [[V] +fr +hi] => [-hi +str] / j _ rule ju [[V] +bk +hi] => [-bk +fr] / j _ rule pst-u [[V] +bk +hi] => [-bk +fr] / [[PST]] _ rule wu [[V] +bk +hi] => [-hi +str] / w _ rule alv-i [[V] +fr +hi] => [-str] / [[ALV]] _ rule syll-l l̩ => ɫ̩ rule syll-n-v n̩ => ŋ̩ / _ [+bk +cons] ################# # SOUND CHANGES # ################# rule init-j-nasal j => ɲ / $ _ rule iv-j-fort j => ʒ / [[V]] _ [[V]] rule au-mono [[A] *stress] => ɔː / _ w rule au-mono2 w => * / [(ɔː)] _ rule ai-mono-f [[A] *stress] => æː / _ j rule ai-mono-f2 j => * / [(æː)] _ rule uə-mono [[V] *stress +bk] => ɤː / _ ə̯ rule uə-mono2 ə̯ => * / [(ɤː)] _ rule iə-mono [[V] *stress +fr *ro] => ɨː / _ ə̯ rule iə-mono2 ə̯ => * / [(ɨː)] _ rule ye-mono [[V] *stress +fr +ro] => øː / _ ə̯ rule yə-mono2 ə̯ => * / [(øː)] _ rule hiatus-merge1 [+long] => [*long] / _ [[V]] rule hiatus-merge2 [+long] => [*long] / [[V]] _ rule hiatus-merge3 [[V]] => [-syll] / [[V]] _ rule one-glide [-cons -syll] => * / _ [-cons -syll] rule ns-a-frontness [-cons -syll +lo] => [$fr $bk] / [-cons $fr $bk] _ rule eow-nasal1 [[V]] => [+nas] / _ [+nas *syll] $ rule eow-nasal2 [+nas *syll] => * / [[V] +nas] _ $ syllable onset [-syll] onset [*syll] nucleus [+syll] coda [-syll] coda ([-syll])[*syll] rule poststress-vowel1 [[V] *long] => * / [+stress] [*syll] _ [] // _ [] rule poststress-vowel2 [[V] *long] => * / [+stress] [-syll] _ [] // _ [] rule unstressed-short [[V] *stress] => [*long] // _ $ rule eow-u [[V] +ro -fr] => u / _ $ rule eow-schwa1 [[V] *long *nas -hi] => ə / _ $ rule no-v-wj [-cons -syll] => * / [+cons] _ [+cons] rule init-glide-cons [-cons -syll] => * / $ _ [+cons] rule syll-glide [+cons +syll *stress] => [*syll] / _ [-cons -syll] rule l-light ɫ => l / _ j rule l-pal l => ʎ / _ j rule l-pal2 j => * / ʎ _ rule syll-r-v1 * => ɑ / _ [(r̩)] rule syll-r-v2 [+syll] => [+stress] / _ [(r) +stress] rule syll-r-v3 [(r̩)] => ɾ rule syll-n-v1 n̩ˈ => ɛ̃ˈ rule syll-n-v2 * => j / ɛ̃ˈ _ rule syll-n-v3 n̩ => ɛ̃ rule syll-m-v1 m̩ˈ => ɔ̃ˈ rule syll-m-v2 * => w / ɔ̃ˈ _ rule syll-m-v3 m̩ => ɔ̃ rule syll-l-v1 ɫ̩ˈ => uˈ rule syll-l-v2 ɫ̩ => u syllable onset [-syll] onset [*syll] nucleus [+syll] coda [-syll] coda ([-syll])(ɾ)[*syll] rule nonrhotic [(ɾ) ] => ə̯ rule a-r a => ɑ / _ ə̯ rule voice-l [(ɬ)] => l rule coda-l [+lat ] => ɫ rule debuc-fric-coda [+cont -vc $Place $Manner] => χ // _ [$Place $Manner] rule debuc-fric-coda2 χ => ç / [+fr +syll] _ rule ts-pal1 t => tʃ / _ s rule ts-pal2 s => * / tʃ _ rule ts-pal3 ɪ => i / [[PST]] _ rule nasal-a ã => ɑ̃ rule nasal-y [+fr +hi +ro +nas +syll] => ø̃ rule nasal-i [+fr +hi *ro +nas +syll] => ẽ rule nasal-u [+bk +hi +nas +syll] => õ rule ps p => w / [-cons] _ s rule ww w => * / _ w rule ks k => j / [-cons] _ s rule jj j => * / _ j rule iv-pls-v [-cont -vc] => [+vc] / [-cons] _ [-cons] rule iv-s-v s => z / [-cons] _ [-cons] rule iv-š-v ʃ => ʒ / [-cons] _ [-cons] rule iv-gem-s [-son $Place $Manner] => * / [-cons] _ [$Place $Manner] [-cons] rule iv-gem-s2 t => * / _ tʃ rule final-i-pst [+hi +fr *ro] => * / [[PST]] _ $ rule ð-ɣ ð => ɣ / [-cons] _ [-cons] rule ð-ː ð => [$Place $Manner $vc] / [+cons $vc $Place $Manner] _ rule ɣ-w wɣ => ɣw rule ɣ-j ɣ => * / j _ rule t-pls t => θ / _ [-cont] // _ t rule ə̯-unstressed ə̯ => * / [*stress] _ // _ $ rule a-unstressed [+lo *stress] => ə // _ [-cons ] rule ɣ-ʁ ɣ => ʁ rule χɾ χ => ʃ / _ ɾ ########### # CLEANUP # ########### rule cleanup-syll [+cons -syll] => [*syll]