gpt4 book ai didi

java - Antlr 4 无法编译带参数的直接递归表达式

转载 作者:行者123 更新时间:2023-11-30 04:15:27 24 4
gpt4 key购买 nike

ANTLR 4 支持直接左递归,如下所示:

grammar test2;

options {
language = Java;
}


start : expr;

expr :
NUMBER
| expr ('+'|'-') expr;


NUMBER:
('+'|'-')? DIGIT+;

fragment
DIGIT:
'0'..'9';

但是如果expr有参数,例如:

expr [ int i] :
NUMBER
| expr[&i] ('+'|'-') expr[&i]
;

编译时会失败,错误消息如下:
找不到规则 GrammarSpec 或树结构错误:...

目前 ANTLR 4 不支持此类表达式,还是我犯了一些错误?

最佳答案

你是对的。包含直接左递归的规则可能不包含用户定义的参数列表。请注意,生成的代码包含一个参数,该参数是在自动左递归消除步骤期间创建的。

关于java - Antlr 4 无法编译带参数的直接递归表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18523592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com