antlr4 语法适用于 Java 目标,失败与 Python 一个
antlr4 grammar works with Java target, fails with Python one
我最初使用 Java 目标开发了一个语法(用于 TestRig 支持),然后将其移植到 Python(从 git 扩展了 Python3 语法因此需要将操作移植到 Python)的中心语法库。在向两个版本添加一些辅助打印方法后,运行 两个解析器都在同一输入上,Python 目标产生错误。
我使用 setTrace 方法获得了跟踪输出,并且在 运行 两者之后,跟踪是相同的(与打印语句的一些空白行有细微差别)。这告诉我两个解析器都遇到相同的标记并构建相同的树......理论上。但是,如前所述,Java 版本正确完成,而 Python 版本出现“...但预期...”错误。
是否有人检测到类似的行为?如果是,是否找到了解决方法?抱歉,我没有 post 实际代码,但文法很长。
此行为是 Python3 antlr 语法定义中的错误造成的。我在 antlr 语法项目中为语法定义添加了修复[1]。
[1]https://github.com/antlr/grammars-v4/commit/4eb968b8d8bc11185042b2ba69f14e349bee3468
我最初使用 Java 目标开发了一个语法(用于 TestRig 支持),然后将其移植到 Python(从 git 扩展了 Python3 语法因此需要将操作移植到 Python)的中心语法库。在向两个版本添加一些辅助打印方法后,运行 两个解析器都在同一输入上,Python 目标产生错误。
我使用 setTrace 方法获得了跟踪输出,并且在 运行 两者之后,跟踪是相同的(与打印语句的一些空白行有细微差别)。这告诉我两个解析器都遇到相同的标记并构建相同的树......理论上。但是,如前所述,Java 版本正确完成,而 Python 版本出现“...但预期...”错误。
是否有人检测到类似的行为?如果是,是否找到了解决方法?抱歉,我没有 post 实际代码,但文法很长。
此行为是 Python3 antlr 语法定义中的错误造成的。我在 antlr 语法项目中为语法定义添加了修复[1]。
[1]https://github.com/antlr/grammars-v4/commit/4eb968b8d8bc11185042b2ba69f14e349bee3468