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

时间:2016-02-12 23:24:45

标签: javascript antlr4

有人可以解释或指出我正在使用的ANTLR4 Javascript 访客实施的工作示例吗? this的文档显示了如何实现监听器,而不是访客。

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

1 个答案:

答案 0 :(得分:5)

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

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