gpt4 book ai didi

java - ANTLR - NoViableAltException

转载 作者:搜寻专家 更新时间:2023-10-31 19:48:40 27 4
gpt4 key购买 nike

我正在尝试通过编写语法来学习 ANTLR(我正在将 eclipse 与 ANTLR 的插件一起使用),在遇到错误之前一切正常:

NoViableAltException: line 0:-1 no viable alternative at input '<EOF>'

当我尝试测试我的 args 解析器规则时;

typedident  :   (INT|CHAR) IDENT;

args : (typedident ( COMMA typedident)*)?;

ident 是一个字母后跟任何字符,这个有效,我已经测试过了。 typedident 也适用于测试。

我正在使用 int a12q2efwe, char a12eqdsf 的输入(完全随机)并且树在解释器中看起来很好,唯一的问题是 args 有四个分支而不是 3 个,typedident,逗号、typedident,然后是最后一个中的错误。

如有任何帮助,我们将不胜感激。

谢谢。

最佳答案

我假设您使用的是内置解释器。别这样,很坑爹要么自己创建自定义测试类,要么使用 ANTLRWorks 的调试器(我相信 Eclipse 插件使用与 ANTLRWorks 相同的调试器)。永远不要使用解释器。

在 ANTLRWorks 中,输入 "int a12q2efwe, char eq45dsf" 被解析(使用调试器)如下:

enter image description here

正如您可以看到自己使用这个小语法:

grammar T;

args : (typedident (COMMA typedident)*)? EOF;
typedident : (INT | CHAR) IDENT;

COMMA : ',';
INT : 'int';
CHAR : 'char';
IDENT : ('a'..'z' | 'A'..'Z') ('a'..'z' | 'A'..'Z' | '0'..'9')*;
SPACE : ' ' {skip();};

关于java - ANTLR - NoViableAltException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9282087/

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