我構建了一個目錄 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
- 1 回答
- 0 關注
- 196 瀏覽
添加回答
舉報
0/150
提交
取消