我正在尝试使用 antlr4 在 golang 中创建一个 javascript 解析器。我正在使用的语法是这个(https://github.com/antlr/grammars-v4/tree/master/javascript/ecmascript),我正在按照本自述文件中的说明https://github.com/antlr /antlr4/blob/master/doc/go-target.md


所以我已经从语法中生成了词法分析器和解析器文件,并且我正在尝试测试解析程序。


func Parse(program string) {


    is := antlr.NewInputStream(program)


    lexer := parser.NewECMAScriptLexer(is)

    stream := antlr.NewCommonTokenStream(lexer, antlr.TokenDefaultChannel)


    p := parser.NewECMAScriptParser(stream)

    antlr.ParseTreeWalkerDefault.Walk(&ParserListener{}, tree)


}

问题是 antlr.ParseTreeWalkerDefault.Walk期望解析器侦听器和树。但是 BaseParser 没有生成树型对象的功能。https://godoc.org/github.com/antlr/antlr4/runtime/Go/antlr#BaseParser