Golang调用Antlr生成的parser时提示无法找到对应模块路径如何解决
报错原因
你遇到的build command-line-arguments: cannot find module for path path/to/parser报错,本质是Go Module模式下不支持./parser这类相对路径导入写法,Go模块要求所有导入路径都基于项目声明的模块名作为根路径。
解决步骤
- 初始化项目模块(未初始化的情况下操作)
在项目根目录执行命令:go mod init 自定义模块名(示例:antlr-test) - 校验antlr生成文件的包声明
打开parser目录下所有生成的Go文件,确认头部包声明为package parser,如果不一致可以重新生成antlr代码,生成时添加-package parser参数统一指定包名。 - 修改main.go的导入路径
把导入部分的"./parser"替换为「你刚才声明的模块名/parser」,示例:
import ( "fmt" "antlr-test/parser" "github.com/antlr/antlr4/runtime/Go/antlr" )
- 拉取依赖并运行
执行以下命令完成依赖安装和项目运行:go mod tidygo run main.go
目录结构校验
确保你的项目目录结构和下方一致:
项目根目录
├── go.mod
├── go.sum
├── main.go
└── parser/
├── xxx_lexer.go
├── xxx_parser.go
└── 其余antlr生成的代码文件
内容的提问来源于stack exchange,提问作者Aleksandr Podyachev
相关产品推荐
相关产品推荐

