antlr4:代码制作与访问者

时间:2015-07-31 17:57:35

标签: optimization antlr4 production visitors

我的语法包含生产代码。 是否真的可以将其与访客混在一起? (我的问题是如果cond然后阻止endif实现)

就表现而言,语法与访客的生产代码有区别吗? (我必须在Javascript目标的浏览器中重新评估几个程序每秒30-60次。我知道直接生产代码更接近编译代码但可能我错了。)

1 个答案:

答案 0 :(得分:0)

所示类型的操作仅影响解析树的内容 - 将创建一个e上下文节点,其返回字段具有Action计算值。因此,随后无法与访问者一起走解析树。

使用访问者(不使用嵌入式操作)可以获得相同的最终结果。

使用访问者会产生一些开销 - 不可能说没有测试它是否会很重要(使用Java / Antlr运行时,在相当冗长的源文本中使用多个步行者评估相对复杂的语法,在温暖的情况下平均需要3毫秒环境 - YMWV)。