gpt4 book ai didi

java - ANTLR4 生成不正确的 java 代码

转载 作者:行者123 更新时间:2023-11-30 08:34:07 24 4
gpt4 key购买 nike

我正在尝试使用 this grammar解析 Mathematica 代码。我使用 gradle 插件生成 java 代码。生成的两个文件包含不正确的 Java 代码,如下所示:

private void LBARBRACKET_action(RuleContext _localctx, int actionIndex) {
switch (actionIndex) {
case 12:
self.incrementBracketLevel(1);
break;
}
}

也许我可以删除所有“ self ”。发生,但我不想这样做。有没有人遇到过同样的问题?

最佳答案

引用的语法结构不佳。它使用 import 语句来包含整个词法分析器。相反,只需依靠 ANTLR 处理适当的拆分词法分析器/解析器。

将(内部和外部)重命名为 FoxySheepParserFoxySheepLexer并标记语法类型:

  parser grammar FoxySheepParser ;
lexer grammar FoxySheepLexer ;

FWIW,ANTLR 在内部将词法分析器与组合语法分开,然后像使用普通的拆分词法分析器/解析器一样继续进行。由于当前词法分析器及其合并方式的复杂性,这种分离失败了,如果生成了任何代码,则结果不能确定是可靠的。

最后,语法代码生成默认为Java。然而,词法分析器中存在一些似乎特定于 Python 的 native 代码语句。要么将 Python 指定为代码生成目标,要么将本地语句替换为其 Java 等效项(检查 java target/src 子目录)。

关于java - ANTLR4 生成不正确的 java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39052269/

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