Trouble with illegal vowel combinations
In one of my conlangs, I've been trying to prevent duplicate vowels showing up next to each other, but I'm struggling with diphthongs.
For example, it'll generate words like jìaan /ˈʤiaan/, where it's added /ia/+/a/. I've been trying to forbid combinations like that in RegEx, but words seem to slip through the cracks. (They don't seem to be derived words, so it's not an issue of a suffix creating an illegal combination.)
How can I fix this? I didn't want to forbid any vowel next to each other, because I do want it to create certain vowel combinations (e.g. u+a is fine, but not u+e). I have a series of long RegEx rules in an attempt to ban all the vowel combinations that I don't work but let the ones I do like through- however, it's clearly not catching certain combinations that I'd like it to.
Here's all my illegal combinations:
(aɪ|ɪ|iɛ|ia|ua|iu|iɔ|o|eɔ|ɛɔ|io|aʊ|ʊ)(a|e|ɛ|i|aɪ|ɔ|ɪ|u|iɛ|ia|ua|iu|iɔ|o|eɔ|ɛɔ|io|aʊ|ʊ)
i(e|i|aɪ|ɪ|iɛ|ia|ua|iu|iɔ|eɔ|ɛɔ|io|aʊ|ʊ)
a(a|e|ɛ|i|aɪ|ɔ|u|iɛ|ia|ua|iu|iɔ|o|eɔ|ɛɔ|io|aʊ)
ɛ(a|e|ɛ|aɪ|u|iɛ|ia|ua|iu|iɔ|o|eɔ|ɛɔ|io|aʊ|ʊ)
u(e|ɛ|aɪ|ɔ|u|iɛ|ia|ua|iu|iɔ|o|eɔ|ɛɔ|io|aʊ|ʊ)
e(a|e|ɛ|i|aɪ|ɪ|u|iɛ|ia|ua|iu|iɔ|eɔ|ɛɔ|io|aʊ|ʊ)
ɔ(a|e|ɛ|aɪ|ɔ|u|iɛ|ia|ua|iu|iɔ|o|eɔ|ɛɔ|io|aʊ)
(ɪ|ʊ|ɛɔ|eɔ)$
aa ee ɛɛ ii aɪaɪ ɪɪ uu ɔɔ iɛiɛ iaia uaua iuiu iɔiɔ aʊaʊ oo eɔeɔ ɛɔɛɔ ioio ʊʊ
So far problem pairs that I've noticed are /uaa/ and /iaa/ (here are several examples I found, all of which are auto-generated with the Pro vocabulary):
ìaal /ˈiaal/ n. alumnus jìaan /ˈʤiaan/ n. play (stage play) lìaa /ˈliaa/ [ˈliaʌ] v. inhale luamuaach /ˈluamuaax/ n. luggage nìaam /ˈniaam/ v. rock (move back and forth) cìaa /ˈkiaa/ [ˈkiaʌ] v. verify cìaam /ˈkiaam/ v. pledge cuamuaad /ˈkuamuaad/ n. flaw
I'm not sure if this is a bug, or if I just need some RegEx help.
In the same vein, derived affixes seem to be having some trouble with diphthongs when I specify IF statements based on final vowels. For example, I have the affix rule ADJ.TO.N = IF V$ THEN -d ELSE -ed. However, there are a couple of errors:
- ìu /iu/ adj. true
- ìuaed /ˈiued/ n. truth
- nìu /niu/ adj. young
- nìuaed /ˈniued/ n. youth
V.TO.N = IF V$ THEN -kiɔ ELSE -iɔ doesn't seem to apply here
- shisìaw /ˈʃɪsiɔ/ v. destroy
- shisìàìaw /ˈʃɪsiɔˌiɔ/ n. destruction
but has no problem with
- rinda /ˈɹɪnda/ [ˈɹɪndʌ] v. please
- rindacìaw /ˈɹɪndaˌkiɔ/ n. pleasure
Is this an issue where it doesn't count diphthongs as vowels?
Posted Nov 28, 2018, 2:48 AM UTC
Good pick up. Spent ages trying to work this one out. Here's the story:
Vulgar quietly adds the little diphthong diacritic to end of a pair of two vowels. So when you write "ia" it actually becomes "ia̯" at word generation time. This is necessary so that it doesn't analyse your dipthong as two separate syllables when applying the stress. It then deletes all these little diacritics at the very end of the process (unless you untick Remove affricate and diphthong diacritics). So /ˈiaal/ must have actually been /ˈia̯al/, which obviously doesn't quite match "aa".
The solution, for the time being, is to write illegal rules with the diphthong diacritics, regardless of whether of you tick Remove affricate and diphthong diacritics or not. I'm not 100% sure if i'll try to fix it though, because I like having the affricates and diphthong diacritics removed. It looks neater, and I feel like the less weird symbols there are the more "user friendly" Vulgar is to newbies.
Additionally, looks like the shorthand V hasn't sufficiently accounted for this diacritic symbol. I should be able to fix that. Again, the work around is to write it all out with the diacritics. (sidenote: dont put V inside square brackets. This will be invalid. Try shorthand symbols in round brackets if you have to.)
Thanks for the tips! I'll work those into my rules right away.