grammar - 如何将 Grammar::Tracer 与单元范围语法一起使用?

标签 grammar raku

我正在使用 Grammar::Tracer使用以下设置:

第6页

use v6;
use lib '.';
use MyGrammar;
my $res = MyGrammar.parse('hello 6 9 bye');
say $res;

我的语法.pm6 :
unit grammar MyGrammar;
use Grammar::Tracer;

rule TOP { [<number> || <word> ]* }
rule number { \d+ }
rule word { \w+}

但未启用跟踪。我猜是因为语法 MyGrammar不在 use Grammar::Tracer 的词法范围内陈述?

最佳答案

Grammar::Tracer模块通过导出一个自定义元类来代替 grammar 的默认元类来工作。关键词。这必须在关键字 grammar 之前已经存在。遇到,因为那是我们解析并提交要用于声明的类型的元类的时候。

解决办法是把 use grammar 之前的声明宣言:

use Grammar::Tracer;
unit grammar MyGrammar;

关于grammar - 如何将 Grammar::Tracer 与单元范围语法一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55569905/

相关文章:

c# - Microsoft Speech SDK 11 中的语法过多

migration - 在 Raku 中替代 Perl 的 <>?

JavaScript 语法 : indexing object literals syntactically forbidden?

parsing - LL 和递归下降解析器之间的区别?

regex - 在Raku的语法中使用 'after'

parsing - 如何使用 perl6 语法创建解析树?

c - 如何使用 NativeCall 处理可变参数

c - 为什么我在这个 bison 语法中收到这么多 'useless rule/token' 警告?

io - 似乎无法从运行中获取非字符串输出

raku - 如何正确扩充Any?