I was just playing around with this recently. I was experimenting with walking the parsed grammar in a macro and checking for 'handlers' for the rules defined in the grammar. The macro would then map any found handlers into the existing event loop code.
Part of the reason for doing it that way was to be able to keep the grammar and the actions separated. I haven't done enough with it yet to know if this approach will be workable for real world usage though. One issue that I hit was that when you try to parse the grammar in a 'static' block for compile time logic, there were some errors (as of 0.19.0). I did some local hacky patches to get around it, but I need to research it a bit more to see what the underlying issue is.
