def-gthill / lexurgy

A high-powered sound change applier
GNU General Public License v3.0
47 stars 5 forks source link

Not applying a change. #29

Closed Thomas-Patterson closed 3 years ago

Thomas-Patterson commented 3 years ago

I had the following input as the change:

`Feature voicing(unvoiced, voiced) Feature place(labial, dental, alveolar, postalveolar, palatal, velar, glottal) Feature manner(stop, fricative, nasal, approximant, affricate, flap) Feature length(long, regular, short) Feature diphthong(oy, longi, ow, longa, longo, oi, shorta) Feature rhotic (rhotic, nonrhotic) Feature height(low, mid, high, nearhigh, midlow, nearlow, midhigh) Feature frontness(front, central, back) Feature rounding (rounded, unrounded) Feature vowelness (vowel, consonant) Feature +stress

Symbol p [unvoiced labial stop consonant] Symbol b [voiced labial stop consonant] Symbol t [unvoiced dental stop consonant] Symbol d [voiced dental stop consonant] Symbol k [unvoiced velar stop consonant] Symbol ʔ [unvoiced glottal stop consonant] Symbol ɡ [voiced velar stop consonant] Symbol f [unvoiced labial fricative consonant] Symbol v [voiced labial fricative consonant] Symbol θ [unvoiced dental fricative consonant] Symbol ð [voiced dental fricative consonant] Symbol s [unvoiced alveolar fricative consonant] Symbol z [voiced alveolar fricative consonant] Symbol x [unvoiced velar fricative consonant] Symbol ɣ [voiced velar fricative consonant] Symbol h [unvoiced glottal fricative consonant] Symbol m [labial nasal consonant] Symbol n [alveolar nasal consonant] Symbol l [alveolar approximant consonant] Symbol ɹ = [postalveolar approximant consonant] Symbol t͡ʃ [unvoiced postalveolar affricate consonant] Symbol d͡ʒ [voiced postalveolar affricate consonant] Symbol ʃ [unvoiced postalveolar fricative consonant] Symbol ʒ [voiced postalveolar fricative consonant] Symbol ɾ [alveolar flap consonant] Symbol ŋ [velar nasal consonant] Symbol ɔ͡ɪ [regular oy vowel] Symbol o͡i [regular oi vowel] Symbol e͡ɪ [regular longa vowel] Symbol t͡s [unvoiced alveolar affricate consonant] Symbol o͡ʊ [regular longo vowel] Symbol a͡ɪ [regular longi vowel] Symbol a͡ʊ [regular ow vowel] Symbol ɔ˞ [regular rhotic midlow back rounded vowel] Symbol ɪ [regular nearhigh front unrounded nonrhotic vowel] Symbol i [regular high front unrounded nonrhotic vowel] Symbol æ [regular nearlow front unrounded nonrhotic vowel] Symbol ɔ [regular midlow back rounded nonrhotic vowel] Symbol e͡ə [regular vowel shorta]

Diacritic ː [long] Diacritic ̥ [unvoiced] Diacritic ̆ [short] Diacritic ˈ (floating) [+stress] diacritic ̩ [vowel]

class vowel {ɔ͡ɪ, o͡i, e͡ɪ, t͡s, o͡ʊ, a͡ɪ, a͡ʊ, iː, ă, ĭ, ĕ, ŏ, æ̆, ɑ̆, ɔ̆͡ɪ, ŏ͡i, ĕ͡ɪ, ŏ͡ʊ, ă͡ɪ, ă͡ʊ, ə̆, ɚ̆, ɛ̆, ɜ̆, ɝ̆, ɪ̆, ʊ̆, ʉ̆, ĭː, ɔ̆˞, ɔ˞, a, i, e, o, æ, ɑ, ə, ɚ, ɛ, ɜ, ɝ, ɪ, ʊ, ʉ, o} class consvoiced {w, r, d, g, j, l, z, v, b, n, m, ŋ, ɹ, ʒ, ɫ, ð}

caught-cot-merger: ɔ => ɑ pre-eng-raising: {ɪ, æ} => {i, e} / .* ŋ prenasal-diphthognisation: æ => e͡ə / [nasal] u-fronting: u => ʉ diphthong-raising: a͡ʊ => a͡u ɔ͡ɪ => o͡i a͡ɪ => a͡i pre-voiceless-shortening: {a, i, a͡ɪ, e, o, æ, ɑ, ɔ͡ɪ, o͡i, e͡ɪ, o͡ʊ, a͡ɪ, a͡ʊ, ə, ɚ, ɛ, ɜ, ɝ, ɪ, ʊ, ʉ, iː, ɔ˞, o, a͡i, a͡u, ɐ} => {ă, ĭ, ă͡ɪ, ĕ, ŏ, æ̆, ɑ̆, ɔ̆͡ɪ, ŏ͡i, ĕ͡ɪ, ŏ͡ʊ, ă͡ɪ, ă͡ʊ, ə̆, ɚ̆, ɛ̆, ɜ̆, ɝ̆, ɪ̆, ʊ̆, ʉ̆, i, ɔ̆˞, ŏ, ă͡i, ă͡u, ɐ̆} / . [unvoiced] l-assimilation: gl => ɫ g.l => .ɫ ɫd => l ɫ.d => l. ɫɾ => l ɫ.ɾ => l. final-coda-obstruent-devoicing: {[stop], [affricate], [fricative]} => [unvoiced] / [vowel] [consonant] [consonant]* {., $} open-o-restoration: ɔ˞ => ɔ ɔ̆˞ => ɔ̆` , and it had trouble using l-assimilation on wɛst.ko͡ʊst.

def-gthill commented 3 years ago

Very odd, that rule shouldn't even be applying to that word, as there are no L's in it at all. Taking a look...

def-gthill commented 3 years ago

So Lexurgy seems to have problems with your ŏ͡ʊ symbols. When I replace it with ŏ͡ʊ, the problem goes away. Can't see the difference between those? The first has the tie bar then the short symbol, while the second has the short symbol then the tie bar. Most fonts will draw those the same way, but they're different character sequence. So that's the workaround for now: put the short symbol first, then the tie bar.

Of course, the two diacritic orders should be equivalent, so I'm leaving this issue open as a bug till I can track down the cause.

def-gthill commented 3 years ago

Looking into this error has spun off a series of improvements for diacritics that'll be in an upcoming feature release. For now I've implemented a quick fix for the crash in commit caf90ae9a3986cab63d1da84a5e8aa36d94835f0, so at least you'll get a slightly better error message.

With the current version of Lexurgy, you're going to run into all sorts of trouble with your ŏ͡ʊ symbols. Currently diacritics have to go before or after the symbol they modify. If you turn o͡ʊ into ŏ͡ʊ, you're inserting a diacritic into the middle of the symbol, which means Lexurgy won't think of it as a o͡ʊ plus a diacritic, but as an entirely separate symbol. This could cause rules that look for [regular longo vowel] to not recognize ŏ͡ʊ.

So I'd highly recommend moving the diacritics to the end of the symbols: o͡ʊ̆. It may not look the way you want, but it'll make sure that Lexurgy understands that this is a symbol with a diacritic.