Parsing shell scripts is hard. Here's a fun ambiguity:
miniblog.
Related Posts
TIL Rust has an ambiguity `if Foo {}` -- is `Foo` a value of type bool, or a struct?
Rust solves this by defining a grammar production 'any expression except struct literals' and using it in this position.
We think of assemblers as being a simple mapping of mnemonics to opcodes, but there is ambiguity sometimes:
Instaparse https://github.com/Engelberg/instaparse is an extraordinary parse library. Left/right recursion, ambiguity and some lovely debug tooling.