http://qs321.pair.com?node_id=845797

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.

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

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;
Be well,
rir