如何设置和调用ANTLR4 Javascript Visitor
How to set up and invoke ANTLR4 Javascript Visitor
谁能解释或指出我使用ANTLR4 Javascript Visiter实现的工作示例?ANTLR4 Javascript Target 的文档展示了如何实现侦听器,而不是访问者。
这个问题与ANTLR语法无关,甚至与工具本身无关。我可以使用该工具愉快地生成访问者JS文件。我只是不知道如何调用它。
侦听器是你实现的东西,由ANTLR步行者调用。你必须设置步行者,给它你的解析树,以及你的侦听器实现。
访客只是您称呼自己的一个类。您调用的函数与相关的 AST 节点相对应,并命名为 visitStatement
或 visitProgram
。该名称基于 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
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何从Java/scala调用js美化程序
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- 我需要从php调用javascript或jquery
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- node.js:setInterval()正在跳过调用
- 如何在单击复选框后调用控制器方法
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 使用Google Visualization动态调用构造函数
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 调用函数内部的函数
- 函数未在Object.keys或Object.getOwnPropertyNames下列出,但可以调用
- Javascript/jQuery中的并行Ajax调用
- 如何设置和调用ANTLR4 Javascript Visitor