Next | Higher-Order Parsing | 26 |
Regexes have a ? notation that means an item is optional
We might want to say something like:
term → factor optional("*" term)
We can define optional quite easily:
sub optional { my $p = shift; return alt($p, $nothing); }
Now this:
$term = $FACTOR - (L("*") - $TERM | $nothing);
Becomes this:
$term = $FACTOR - optional(L("*") - $TERM);
Parse::RecDescent provides this with its (?) notation
Similarly, we can implement repeat
Next | Copyright © 2007 M. J. Dominus |