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


in reply to Perl 6 grammars - setting the actions object

One solution is to pass-through the made value instead of stringifying. There may be a better way of doing this (update: the post by moritz below is that better way), but this at least works:

token value { <val=object> | <val=string> | <val=number> | true | false | null } # ... given ~$/ { when "true" {make Bool::True;} when "false" {make Bool::False;} when "null" {make Any;} default { make $<val>.made; } }

Though it would probably be better to pass-through if $<val> is defined at all rather than rely on the stringified fall-through:

return make $<val>.made if $<val>; given ~$/ { when "true" {make Bool::True;} when "false" {make Bool::False;} when "null" {make Any;} default { die; } }

Good Day,
    Dean

Replies are listed 'Best First'.
Re^2: Perl 6 grammars - setting the actions object
by Anonymous Monk on Jul 19, 2016 at 07:44 UTC
    Thank you very much. I did not think at all about this solution, I'll try it as soon as possible.

    I definitely agree that stringifying the parts I couldn't handle better is not a good solution, I only did it as a cheap temporary debugging scaffolding so that the overall thing could succeed and that I could check that at least the rest was working properly.