为了账号安全,请及时绑定邮箱和手机立即绑定

antlr 重新声明为导入的软件包名称

antlr 重新声明为导入的软件包名称

Go
精慕HU 2022-08-01 18:50:49
我构建了一个目录 src,其中包含以下内容:src/  antlr/   basic_levex.go   basic_parse.go   basicparser_base_visitor.go   basicparser_visitor.go  example1.goantlr文件看起来是正确的,并构建了名为BasicLexer.g4和BasicParser.g4的文件。我的示例1.go文件如下所示:package main// example1.goimport (    "./antlr"    "fmt"    "github.com/antlr/antlr4/runtime/Go/antlr")func main() {    // Setup the input    is := antlr.NewInputStream("1 + 2 * 3")    // Create the Lexer    lexer := antlr.NewBasicLexer(is)    // Read all tokens    for {        t := lexer.NextToken()        if t.GetTokenType() == antlr.TokenEOF {            break        }        fmt.Printf("%s (%q)\n",            lexer.SymbolicNames[t.GetTokenType()], t.GetText())    }}我在编译时遇到的错误是# command-line-arguments./example1.go:8:2: antlr redeclared as imported package name    previous declaration at ./example1.go:6:2./example1.go:16:11: undefined: "github.com/antlr/antlr4/runtime/Go/antlr".NewBasicLexer我真的不知道出了什么问题。如何修复它,使其将来不会发生?
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

让我们一个接一个地看看你的两个问题


重复导入

./example1.go:8:2: antlr redeclared as imported package name

    previous declaration at ./example1.go:6:2

错误消息很好地解释了发生了什么,包括以下行:在第8行上,您尝试导入的名称与已在第6行上导入的名称相同。除此之外,Go不支持相对进口,就像Flimzy在评论中指出的那样。要解决此问题,请删除第 6 行上的相对导入。


未定义的函数

./example1.go:16:11: undefined: "github.com/antlr/antlr4/runtime/Go/antlr".NewBasicLexer

您尝试使用的函数不存在。


在这种情况下,它实际上是被调用的,而不是您在代码中看到的NewBaseLexerNewBasicLexer


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号