Grammar::Debugger
This module provides a simple debugger for grammars. Just use
it:
use Grammar::Debugger;
And any grammar in the lexical scope of the use
statement will
automatically have debugging enabled. The debugger will break
execution when you first enter the grammar, and provide a prompt.
Type "h" for a list of commands.
If you are debugging a grammar and want to set up breakpoints in
code rather than entering them manually at the debug prompt, you
can apply the breakpoint trait to any rule:
token name is breakpoint { \w+ [\h+ \w+]* }
If you want to conditionally break, you can also do something like:
token name will break { $^m eq 'Russia' } { \w+ [\h+ \w+]* }
Which will only break after the name rule has matched "Russia".
Grammar::Tracer
This gives similar output to Grammar::Debugger, but just runs through
the whole grammar without stopping until it is successful or fails.
Once again, after a use:
use Grammar::Tracer;
It will apply to any grammars in the lexical scope of the use statement.
Bugs? Ideas?
Please file them in GitHub issues.