Grammar::Debugger and Grammer::Tracer Perl 6 modules
Perl6
Latest commit c149506 Oct 26, 2015 @jnthn Merge pull request #21 from FROGGS/master
unbreak the debugger
Permalink
Failed to load latest commit information.
lib/Grammar unbreak the debugger Oct 22, 2015
t working again, at least partially. ignores NQPRoutine $meth now Jun 25, 2015
.gitignore
META.info Update Term::ANSIColor dep to Terminal::ANSIColor Sep 10, 2015
README.markdown Initial commit of modules, a README and META.info. Aug 17, 2011

README.markdown

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 satement 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.