I made myself actually use the SCA² rewrite with writing tests. Impressions so far:
- The design is solid
- There were some howlers in the implementation
- It's hard to navigate the source code, and I should probably break it into a bunch of modules.
- In my opinion, which it should be understood is likely to be biased to see the various facets of this code in the best light possible... using the current interfaces to write phonological rules is like digging a trench with a spoon. And not a big spoon, either.
This last point is basically a result of the fact that, instead of the original's style of mingling parsing and processing, there's virtually no parsing in this whatsoever. Which is an improvement in some ways, but a massive reduction in usability.
To address this, I think I should, before I mess with any further enhancements, document everything wrong with the code in the tests, starting with the fact that 14 rule definitions somehow require 134 lines of code. I'll get on it tomorrow.