【问题标题】:Using ANTLR4 to generate modified code使用 ANTLR4 生成修改后的代码
【发布时间】:2015-09-12 02:49:48
【问题描述】:

我正在尝试使用 antlr4 使用 C.g4 语法解析 C 文件。

我想知道是否有办法更改解析树节点内的文本,然后从编辑的树开始生成一个新的 .c 文件。

我的目标基本上是将所有函数名替换为<FUNC>

【问题讨论】:

    标签: antlr4


    【解决方案1】:

    一个函数名——看起来是一个“标识符”——将被表示为一个 TerminalNode(扩展 ParseTree,它是基本的解析树节点)。所以,在适当的情况下,

    TerminalNode id = (TerminalNode) node;
    CommonToken token = (CommonToken) id.getSymbol();
    token.setText("<FUNC>");
    

    要在保留原始标记文本的同时记录简单的更改,请使用所需的任何附加字段创建自定义标记类型(扩展 CommonToken)。在词法分析器上设置自定义标记工厂以使用自定义标记。见,TokenFactory

    创建解析树后,请对其进行分析和更新自定义标记字段。然后,在遍历解析树以创建新的“.c”文件时,根据上下文写出任何合适的字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 2010-12-29
      • 2022-01-20
      相关资源
      最近更新 更多