rir has asked for the wisdom of the Perl Monks concerning the following question:
I've been waw-wawing the small project I'm using to learn about Perl 6
grammars. The following is a pared down version of what seems one of the
better approaches: replacing the default array with a hash.
rir
Can the parse tree be constructed so as to eliminate the actions class?
Can this be made simpler? (I'm prone to feel I may miss some syntax.)
Be well,grammar H { rule TOP {^ <pairs> $} rule pairs { <pair>[ <pair>]* } rule pair { <key>':'<mash> } token key { \w+ } token mash { \w+ } } class H::Actions { method TOP($/) { my %h; for $/<pairs><pair> -> $p { %h{$p<key>} = $p<mash>; } make %h; } method pairs($/){ make $/ } } my $data = " TOP:most skeleton:door " ~ "password:host belief:trust key:mash "; my $m = H.parse( $data, :actions( H::Actions ) ); die unless $m; for $m.ast.kv -> $k, $v { say $k, " -> ", $v; } my %export_me = $m.ast;
rir
Back to
Seekers of Perl Wisdom