I'm using a modified Parse::Earley module (thanks to (insert name here)!) for doing some NLP for Vladimir modules. It is a pretty heavy algorithm, so I intend to avoid it when possible, but there are a few places where it will be very useful. The one I'm working on now is the schedule module's parser, which does in fact have a complex grammar.