登录
首页 >  Golang >  Go问答

使用antlr4生成go代码获取符号类型冲突错误

来源:stackoverflow

时间:2024-03-31 19:30:34 466浏览 收藏

本篇文章向大家介绍《使用antlr4生成go代码获取符号类型冲突错误》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

我按照这里的指南使用antlr生成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代码是可以的,为什么呢? 有人可以帮帮我吗?


正确答案


type 是 go 上的关键字。 mysqlparger.g4 文件中的第 476 行是:

AGGREGATE_SYMBOL? FUNCTION_SYMBOL udfName RETURNS_SYMBOL type = (

您需要将该行中的 type 更改为不与 go 关键字冲突的内容。

我相信您会在其他报告中找到类似的案例。

语法作者很难避免以一种避免所有目标语言冲突的方式命名事物,所以这样的事情就会突然出现。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>