【发布时间】:2022-01-20 23:07:19
【问题描述】:
我按照指南 here 使用 antlr generate go mysql 解析器代码,但我得到一些错误,如下所示:
C:\Users\moyuduo\Desktop\antlr\mysql>java org.antlr.v4.Tool -Dlanguage=Go MySQLLexer.g4
C:\Users\moyuduo\Desktop\antlr\mysql>java org.antlr.v4.Tool -Dlanguage=Go MySQLParser.g4
error(134): MySQLParser.g4:476:61: symbol type conflicts with generated code in target language or runtime
error(134): MySQLParser.g4:757:18: symbol type conflicts with generated code in target language or runtime
error(134): MySQLParser.g4:776:22: symbol type conflicts with generated code in target language or runtime
error(134): MySQLParser.g4:1301:6: symbol type conflicts with generated code in target language or runtime
error(134): MySQLParser.g4:1305:4: symbol type conflicts with generated code in target language or runtime
error(134): MySQLParser.g4:1687:4: symbol type conflicts with generated code in target language or runtime
...
但是使用antlr生成java代码是可以的,为什么呢? 有人帮我吗?
【问题讨论】:
-
你应该使用grammars-v4/sql/mysql的语法。我花了数百个小时无偿地清理这些语法。 mysql/ 语法的 Go 目标有效。您应该使用trgen 为 Go 目标(或其他目标之一)生成驱动程序和 makefile。人们不应该用手来做这件事。