如何设置和调用ANTLR4 Javascript访问者

Gab*_*son 3 javascript antlr4

任何人都可以解释或指向一个使用ANTLR4 Javascript Visitor实现的工作示例吗?ANTLR4 Javascript目标的文档显示了如何实现监听器,而不是访客.

这个问题不是关于ANTLR语法,甚至不是工具本身.我可以使用该工具愉快地生成访问者JS文件.我根本不知道如何调用它.

Gab*_*son 5

监听器是您实现的,由ANTLR助手调用.你必须设置walker,给它你的解析树和你的监听器实现.

访客只是一个你自称的课程.您调用的函数与相关的AST节点对应,其名称类似于visitStatementvisitProgram.该名称基于ANTLR语法分析器规则,或者如果您已经给出了子规则名称(使用#alternativeNameForThisSubrule语法),则它基于您提供的名称.但它会visit有先例.

这就是让我失望的原因,因为我看到的例子被巧妙地用作visit实际功能的替代品.

无论哪种方式,使用访客都是完全手动的.

var chars = new antlr4.InputStream(input)
var lexer = new FancyLexer(chars)
var tokens  = new antlr4.CommonTokenStream(lexer)
var parser = new FancyParser(tokens)
parser.buildParseTrees = true
var tree = parser.block() // 'block' is the start rule
var visitor = new FancyVisitor()
return visitor.visitBlock(tree) // 'visitBlock' since that was the start rule
Run Code Online (Sandbox Code Playgroud)