我按照這里的指南使用 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代碼是可以的,為什么呢?有人幫我嗎?
uj5u.com熱心網友回復:
type是 Go 上的關鍵字。MySQLParger.g4 檔案中的第 476 行是:
AGGREGATE_SYMBOL? FUNCTION_SYMBOL udfName RETURNS_SYMBOL type = (
您需要type將該行更改為與 Go 關鍵字不沖突的內容。
我相信你會在其他報告中找到類似的案例。
語法作者很難避免以一種避免所有目標語言沖突的方式命名事物,因此會出現這樣的事情。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/386898.html
