[raku] 변수가 참조하는 토큰에 매개 변수를 전달하는 방법은 무엇입니까?

토큰 이름을 직접 사용하여 토큰 서명을 쉽게 사용할 수 있습니다.

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 '>'

그 마법의 구문은 무엇입니까?

BTW : Raku 테스트 스위트를 찾아 보았으며에 해당 사례가 포함되어 있지 않습니다 roast/S05-grammar/signatures.t.



답변

어느 한 쪽:

  • jnthn의 답변에서 솔루션을 사용하여 Raku가 $sigild 토큰 변수를로 사용하고 싶다고 명시 적으로 알도록하십시오 Callable.

  • 변수를 Callable처음에 명시 적으로 선언하고 해당하는 호출을 변경하십시오.

my &t = token ( $x ) { $x };

say 'axb' ~~ / 'a' <&t: 'x'> 'b' /;   # 「axb」
say 'axb' ~~ / 'a' <&t( 'x' )> 'b' /; # 「axb」


답변

를 놓고 &변수 전에 :

my $t = token ( $x ) { $x };
say 'axb' ~~ / 'a' <&$t: 'x'> 'b' /;
say 'axb' ~~ / 'a' <&$t( 'x' )> 'b' /;

파서는을 &찾은 다음 Raku 변수 파싱 규칙에 위임합니다.


답변