当前位置: 首页 > 知识库问答 >
问题:

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

贾越
2023-03-14

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

p、 p6

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

MyGrammar.pm6:

unit grammar MyGrammar;
use Grammar::Tracer;

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

但是没有启用跟踪。我猜是因为语法MyGrammar不在use Grammar::Tracer语句的词汇范围内?

共有1个答案

柴琦
2023-03-14

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

解决方法是将use语句放在语法声明之前:

use Grammar::Tracer;
unit grammar MyGrammar;
 类似资料:
  • 问题内容: 我在该领域做了一些谷歌搜索,发现了很多有关让Jenkins理解boost.test的XML输出格式的讨论,但是没有规范的参考。 有人说我们只需要使用XLST来转换XML格式,另一些人则认为XML在此之前需要进行一些修改有人拥有XSL来将Boost.TestXML日志转换为可显示的格式吗?)。有些人建议xUnit插件可以原生理解boost.test XML格式,另一些人则认为它不能 因为

  • 问题内容: 核心问题是有关HTTP标头的使用,包括Range,If- Range ,Accept- Ranges 和用户定义的范围说明符。 这是一个虚构的示例,可以帮助说明我的问题。假设我有一个Web 2.0样式的应用程序,它显示某种人类可读的文档。这些文档在编辑上分为几页(类似于您在新闻网站上看到的文章)。对于此示例,假定: 有一个标题为“ HTTP范围问题”的文档分为三页。 外壳页面()知道有

  • 问题内容: 假设我们使用Unix timestamp列将事件记录在Sqlite数据库中: 并且我们想要快速查找日期时间范围,例如: 与此类似,给人这是不好的,所以一个显而易见的解决方案是 创建一个索引 用。 这样就解决了问题,但是要为已经增加的序列/已经排序的列维护索引是一个很 糟糕的解决方案,我们可以 直接在O(log n)中 使用 B树搜索 来为其建立索引。在内部,这将是索引: 这浪费了数据库

  • 我在Ubuntu 14.04中安装了phpbrew以使用PHP5.4。它工作得很好,但当我尝试使用composer时除外,composer会忽略phpbrew并安装与PHP5.5相关的依赖项。 有没有办法强制composer与phpbrew config兼容?我试图在我的作曲家中添加:php:“5.4”。json,但是它说这个要求在我的php版本中是不可能的。

  • 我是Micronaut框架的新手,我正在尝试使用entitymanager创建我的存储库。我这样创建了我的存储库 我使用这个类实现接口并注入entitymanager 问题是我一直有这个错误: PS:我已经启用了注释处理