Я легко могу использовать подписи токена, используя имя токена напрямую:
my token t ( $x ) { $x };
'axb' ~~ / 'a' <t: 'x'> 'b' /; # match
'axb' ~~ / 'a' <t( 'x' )> 'b' /; # match
Однако я не нашел способ сделать это, когда токен хранится в переменной:
my $t = token ( $x ) { $x };
'axb' ~~ / 'a' <$t: 'x'> 'b' /;
'axb' ~~ / 'a' <$t( 'x' )> 'b' /;
Оба дают:
===SORRY!=== Error while compiling ...
Unable to parse expression in metachar:sym<assert>; couldn't find final '>'
Какой магический синтаксис для этого?
Кстати, я даже просмотрел тестовый набор Raku, и он не включает в себя такой случай roast/S05-grammar/signatures.t
.
&
переменные.Поместите
&
перед переменной:Анализатор ищет
&
, а затем делегирует правило разбора переменных Raku, которое с радостью проанализирует контекстуализатор, подобный этому.источник