在 How can I pass arguments to a Perl 6 grammar?我将一个参数作为淹没的一部分传递给规则。我想知道如何在语法中完全做到这一点。假设我有类似的东西:
grammar TryIt {
rule TOP { \d+ <stuff> }
rule stuff ($count) { <[ \S A..Z ]>{$count} }
}
my $match = TryIt.parse: "123 ABCD";
say $match;
如何从
TOP
传递参数至 stuff
?我没有找到任何例子,而且关于parens 附近的各种猜测都没有奏效。
最佳答案
这些表格都有效:
<stuff(...)>
<stuff: ...>
不确定它们在用户文档中的何处列出,但是 S05:正则表达式和规则设计文档 has a section on them .
请注意,在规则内部,反向引用如
$0
和 $/
仅保证在序列点之后可用,例如块的左大括号。一个空块 {}
作品。例子:
grammar TryIt {
token TOP { (\d+) \s {} <stuff($0)> .* }
token stuff ($count) { <[ A..Z ]> ** {$count} }
}
say TryIt.subparse: "3 ABCDEFG";
输出:
「3 ABCDEFG」
0 => 「3」
stuff => 「ABC」
关于regex - Perl 6 规则如何将参数传递给另一个规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45341962/