Skip to content

Instantly share code, notes, and snippets.

@perlpilot
Created March 15, 2016 19:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save perlpilot/742924b6e1f6ffc6d1d6 to your computer and use it in GitHub Desktop.
Save perlpilot/742924b6e1f6ffc6d1d6 to your computer and use it in GitHub Desktop.
v6;
grammar BUU {
token TOP { <abc>+ };
token abc { 'a' <bc>* };
token bc { [ 'b' <c>* ]+ }
token c { 'c' };
};
# default result
class BuuAbc1 {
method TOP($/) { make $<abc>>>.ast; }
method abc($/) { make $<bc>>>.ast; }
method bc($/) { make $<c>>>.ast; }
method c($/) { make ~$/; }
};
class BuuAbc2 {
method TOP($/) { make $<abc>>>.ast; }
method abc($/) { make $<bc>>>.ast; }
method bc($/) { make ~@$<c>>>.ast; }
method c($/) { my $c = 3; make 3; }
};
my $r = BUU.parse( "abcabccaabbc", :actions( BuuAbc2 ) );
say $r.ast;
say $r;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment