Mogę łatwo korzystać z sygnatur tokenów, używając bezpośrednio nazwy tokena:
my token t ( $x ) { $x };
'axb' ~~ / 'a' <t: 'x'> 'b' /; # match
'axb' ~~ / 'a' <t( 'x' )> 'b' /; # match
Jednak nie znalazłem sposobu, aby to zrobić, gdy token jest przechowywany w zmiennej:
my $t = token ( $x ) { $x };
'axb' ~~ / 'a' <$t: 'x'> 'b' /;
'axb' ~~ / 'a' <$t( 'x' )> 'b' /;
Oba dają:
===SORRY!=== Error while compiling ...
Unable to parse expression in metachar:sym<assert>; couldn't find final '>'
Jaka jest magiczna składnia, aby to zrobić?
BTW: Przeglądałem nawet pakiet testowy Raku i nie zawiera takiego przypadku roast/S05-grammar/signatures.t
.
&
zmienne.Umieść
&
przed zmienną:Parser szuka
&
, a następnie deleguje do reguły parsowania zmiennej Raku, która z powodzeniem parsuje taki kontekstyzator.źródło