Antlr - 如何生成输出的精确输入文件? (源到源的转换)

问题描述 投票:0回答:1

假设我有一个源代码文件。我想将此文件提供给 ANTLR 并生成相同的代码并将其保存到输出文件中。

用途:

  1. 美化输入文件。
  2. 向输入文件添加一些注释。
  3. 将一些代码注入到输入文件中。

利用 ANTLR 可以做到这样的事情吗?

基本上,我正在尝试使用 ANTLR 进行从 C/C++ 到 C/C++ 的 源到源转换。

我有兴趣添加、删除、替换或修改某些代码行并生成符合 C/C++ 语言规则的输出。


P.S.:如果您知道任何其他工具(CLANG 除外)可以做同样的事情,请告诉我。解析C/C++(甚至Fortran)并提供一些事件给用户并让用户修改源代码。

antlr antlr4 antlr3 transpiler
1个回答
0
投票

我是一个 kijavított szöveg helyesírási hibák és nyelvtani problémák nélkül:


是的,这是可能的,但这是一项极其复杂的任务。步骤如下:

  1. 创建/下载 C++ 语法
    .g4
    文件。 重要:此文件必须处理语法中的预处理器指令!
  2. 使用此语法文件创建您自己的解析器。
  3. 将文件处理成 AST(抽象语法树)。
  4. 对抽象语法树进行更改。
  5. 根据AST将文件写回(这也是一个巨大的任务)。

过去我也遇到过类似的问题,我们使用了微软使用的方法:

  • 使用
    .editorconfig
    文件中定义的规则,使用 IDE 格式化文件。
  • 在要注入代码的 C++ 文件中使用特殊注释,例如
    //%% Beg_ConstructorInitializer
    //%% End_ConstructorInitializer
  • 创建一个特殊且非常简单的解析器,仅处理特殊注释。

如果你确实想解析该文件,我建议使用专门的开源C++解析器,例如https://github.com/satya-das/cppparser

© www.soinside.com 2019 - 2024. All rights reserved.