Yeah, even just a basic markup language could accomplish this for them if it was designed well. But I doubt they’ll adopt something like that anytime soon. It would be insanely hard to design, and you’d probably still be quite a long time extending the spec for the edge cases that you hadn’t considered in the original design.
For example, C has been around as long as I have, but there’s still times when you have to drop into assembly to properly accomplish what you need to do*. So, you’d still probably be dropping out of the markup language to express some things in English. That might be better than the situation we have now, but it’s possible you’d still have the same problems at the end of the day.
*In C, you’d do things like that for speed, not clarity. But, work with me here.
Agreed. But I think that’s ok. Just identify those elements which have proven to have ambiguity problems (like this one) and replace them piecemeal. Expressing lists of items unambiguously, clearing up Boolean operations (for both sets and logical statements), and so on would all be pretty easy to drop in. Eventually, over a long period of time, it might evolve to be a rigorously defined language.