grammar H { rule TOP {^ $} rule pairs { [ ]* } rule pair { ':' } token key { \w+ } token mash { \w+ } } class H::Actions { method TOP($/) { my %h; for $/ -> $p { %h{$p} = $p; } 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;