Okay, I've released rust-soundchange with a basic documentation and tests.
I've also pushed a pull request to P1start's an-rs
,
let's see if it really is accepted :)
Notes on english.sc
Mark Rosenfelder's article links to a computerized rule file, which I've used as a basis of rust-soundchange rules. After some debugging, however, I found that the following rule is incorrect:
Incorrect: V/@/VC(V)_l#
Correct: U/@/VC(V)_l#
This particular rule corresponds to the rule 38,
i.e. any vowel reduces to a schwa (@
) before final l
(as in final
),
but only when it is not the only vowel in that word and
its sound value has been assigned by prior rules.
The original rule has incorrectly used an "any vowel" (V
) variable
in place of an "any untranslated vowel" (U
) variable.
It seems that english.out
itself is generated via the fixed rules
(and with this fix my implementation produces 100% exact output for this set)
but Rosenfelder forgot to update english.sc
. Oops.