TheGoatMan wrote:You might be able to use
It isn't strictly equivalent, but should be functionally equivalent, depending on the clusters that show up in your lexicon.
Except that also kills geminates. But yeah, it wouldn't be that hard to modify that to make it work.
Do all of these sequences even occurs as a result of previous rules?
I think so. All of the ones ending in a nasal are possible.
I think you can define
Code: Select all
[VNasal] = ã ẽ ĩ õ ũ ỹ
[Vowel] = a e i o u y
[Vowel][VNasal] > [VNasal]:
[VNasal][Vowel] > [VNasal]:
But the rules might give errors about how many variables you have.
Yeah, that errors. And that would shift, for example, aỹ to ỹ:.
Hmm. Some sort of index feature might be useful. So I could do something like:
Code: Select all
[Vowel]{a}[VNasal]{a} > [VNasal]{a}:
Or something like this to nasalize the vowels in the first place:
Also, I've been trying to implement a compensatory lengthening rule (word-final /@/ <ă>~<o> drops and lengthens the preceding vowel), but it hasn't been working properly. I ran this as a test:
Code: Select all
V = a o
C = s k
o > :
VC: > V:C
VCC: > V:CC
VCCC: > V:CCC
on a lexicon of
Code: Select all
ao
ako
aso
asso
akso
asko
akko
akkko
akkso
aksko
askko
askso
assko
aksso
assso
and got
Code: Select all
a:
ak:
as:
ass:
aks:
ask:
akk:
akkk:
akks:
aksk:
askk:
asks:
assk:
akss:
asss:
-- it apparently ignored the last three rules completely.
Then I ran
Code: Select all
V = a o
C = s k
o > :
V > V: / _(C)(C)(C):
and got the same thing.
Thinking it might be a problem with the condition or the <:>, I ran:
Code: Select all
[VOWEL] = a o
[CONSONANT] = s k
[VOWEL] > [VOWEL]: / _kkko
o > 0 / _#
and
Code: Select all
[VOWEL] = a o
[CONSONANT] = s k
o > : / _#
[VOWEL] > [VOWEL][VOWEL] / _([CONSONANT])([CONSONANT])([CONSONANT])o
and got the same result. But for some reason,
Code: Select all
[VOWEL] = a o
[CONSONANT] = s k
a > a: / _([CONSONANT])([CONSONANT])([CONSONANT])o
o > 0 / _#
gives the intended result.