regex - Perl 6 规则如何将参数传递给另一个规则?

标签 regex grammar raku

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/

相关文章:

javascript - Javascript 上的正则表达式

javascript - 正则表达式匹配不返回 true 或 false

parsing - 移动/减少杯子误差

raku - 使用 Panda 安装 Perl6 模块的路径

hex - q{} 删除乐谱中的空格

java - 检查各个捕获组

javascript - 正则表达式中的展望是做什么的?

c++ - 使用依赖于类型的模板名称的声明

objective-c - 如何调试无效的 ParseKit 语法?

scope - 我们的变量是动态的吗?