【发布时间】:2019-09-29 18:25:38
【问题描述】:
虽然文档声明将令牌/规则/正则表达式称为 <.foo> 而不是 <foo> 使它们无法捕获,但范围似乎有所不同,但我不确定它是否是有意的。
这是一个简化的测试。在模块文件中:
unit module Foo;
my token y { y }
my token a is export { x <y> }
my token b is export { x <.y> }
另一个脚本文件的内部:
grammar A {
use Foo;
token TOP { <a> }
}
grammar B {
use Foo;
token TOP { <b> }
}
如果我们调用A.parse("xy"),一切都会按预期运行。但是,调用B.parse("xy") 会导致错误No such method 'y' for invocant of type 'B'。这是预期的行为还是潜在的错误?
【问题讨论】: