217 lines
6.3 KiB
Plaintext
217 lines
6.3 KiB
Plaintext
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] _ [] // _ [<coda>]
|
||
rule poststress-vowel2 [[V] *long] => * / [+stress] [-syll] _ [] // _ [<coda>]
|
||
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 [(ɾ) <coda>] => ə̯
|
||
rule a-r a => ɑ / _ ə̯
|
||
|
||
rule voice-l [(ɬ)] => l
|
||
rule coda-l [+lat <coda>] => ɫ
|
||
|
||
rule debuc-fric-coda
|
||
[+cont -vc <coda> $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 <coda>]
|
||
|
||
rule ɣ-ʁ ɣ => ʁ
|
||
rule χɾ χ => ʃ / _ ɾ
|
||
|
||
###########
|
||
# CLEANUP #
|
||
###########
|
||
|
||
rule cleanup-syll [+cons -syll] => [*syll]
|