【发布时间】:2013-07-29 20:40:46
【问题描述】:
在 ANTLR4 中,似乎谓词只能放在子规则的前面,以便它们导致子规则被跳过。在我的语法中,一些谓词依赖于出现在子规则末尾附近的标记,在它前面有一个或多个规则调用。例如:
date :
{isYear(_input.LT(3).getText())}?
month day=INTEGER year=INTEGER { ... }
在这个特定的示例中,我知道month 始终是一个单独的令牌,因此始终需要isYear() 来检查令牌3。不过,一般来说,直到运行时,我才知道构成像 month 这样的规则的令牌数量。有没有办法获取它的令牌数?
【问题讨论】: