如何在ANTLR4中实现CommonTree类

问题描述

我要实现的是:使用ANTLR4在JavaScript中处理注释

现在我正在用antlr4js编码解释C脚本,我想评论内容。 例如:

/* this is my function */
int add(int a,int b);

然后,我要获取字符串"this is my function",并附加到add()

我在Google上搜索后发现可以使用hidden channel。 这是我引用的页面

This is Stuff: Tackling Comments in ANTLR Compiler

我可以编写词法后收集注释的代码(在上一页中描述了收集隐藏的令牌),但是我无法按照下一节与AST合并令牌的方法进行操作,因为我找不到CommonTree类是什么基类。

问题点

要编码的图像。(在上一页中)

public class HiddenTokenAwareTree extends CommonTree {

  private List<Token> preceding = new LinkedList<Token>();
  private List<Token> orphans = new LinkedList<Token>();
  private List<Token> following = new LinkedList<Token>();

  // ... constructors,getters and setters follow

}

这是Java代码,因此在以javascript实现时,代码将如下所示:

var CommonTree = require("antlr4/PATH/TO/COMMONTREE").CommonTree;

class HiddenTokenAwareTree{

}

我找不到这个PATH/TO/COMMONTREE

我的项目设置

节点:6.14.6 $ npm list --depth = 0 ├──antlr4@4.8.0 ├──webpack@4.44.1 └──webpack-cli@3.3.12 我通过$ npm i antlr4安装了antlr4。

感谢您的任何建议!

解决方法

您要链接的教程是针对ANTLR v3的,ANTLR v4无法定义自定义树适配器。

您可以做的是创建一个visitorlistener并在解析树的某些节点上检索隐藏的令牌。