Håk*_*and 8 grammar perl6 raku
我正在通过以下设置使用语法::追踪器:
第6页
use v6;
use lib '.';
use MyGrammar;
my $res = MyGrammar.parse('hello 6 9 bye');
say $res;
Run Code Online (Sandbox Code Playgroud)
MyGrammar.pm6:
unit grammar MyGrammar;
use Grammar::Tracer;
rule TOP { [<number> || <word> ]* }
rule number { \d+ }
rule word { \w+}
Run Code Online (Sandbox Code Playgroud)
但是未启用跟踪。我猜这是因为语法MyGrammar不在use Grammar::Tracer语句的词法范围内吗?
该Grammar::Tracer模块通过导出自定义元类来代替grammar关键字的默认元类来工作。在grammar遇到关键字之前,它必须已经存在,因为那是我们解析并提交给要用于声明的类型的元类时。
解决方案是将use语句放在声明之前grammar:
use Grammar::Tracer;
unit grammar MyGrammar;
Run Code Online (Sandbox Code Playgroud)