Dave Cross: Still Munging Data With Perl: Online event - Mar 27 Learn more

use v6;
module Java::Javap::Parser;
#grammar JavapParser {
rule method_decl { Method = <ws>* <mode>?
<ws>+ <method_name>
\(
<arg_list>
\) \;
}
rule mode { Mode = ( public | private | protected ) }
rule method_name { Name = ( <IDENT> [ <dot> <IDENT> ]* ) }
rule arg_list { Args = ( <ARG> [ <comma> <ARG> ]* ) }
rule ARG { ( <IDENT> [ <array> ]* ) }
rule IDENT { ( \w+ ) }
#}
sub parse_javap( Str $raw_javap ) is export {
my $raw_method = ' public java.lang.String(byte[], int, int);';
# $raw_method ~~ m:keepall/<JavaParser.method_decl>/;
# say $/;
my $parse_tree;
$raw_method ~~ /$<ast> := <method_decl>/;
# $raw_method ~~ /$<ast> := <JavaParser.method_decl>/;
say "$/<ast>.Method";
# given $raw_method {
# $parse_tree = m:keepall/<JavaParser.method_decl>/;
# }
# say $parse_tree<Method>;
# say $parse_tree;
return $parse_tree;
}