gpt4 book ai didi

c++ - 如何在C中自定义编译指示?

转载 作者:行者123 更新时间:2023-12-02 10:22:27 25 4
gpt4 key购买 nike

我想问一下构建解析器以识别C / C++代码中的自定义编译指示的最简单方法是什么。是的,一个简单的bash脚本可以做到,但是我想知道是否有任何正式的方法可以通过Clang或LLVM完成?我试图检查Clang AST,但找不到任何实用程序。

例如:

int foo1(){
#pragma hi k=1
...
}

int foo2(){
#pragma hello k=7
...
}

我希望通行证返回以下内容:
function foo1 has hi and k=1
function foo2 has hello and k=7

谢谢。

最佳答案

语法处理需要在以下部分中完成:

  • 在ParsePragma.cpp文件中添加一个处理程序(有一些执行此操作的示例)。在此步骤中,您可以逐个 token 解析pragma token ,并将相应的信息存储在AST中(这可能是将数据从此阶段传输到后续阶段的最佳方法)。
  • 如果您需要在处理LLVM IR的过程中处理此信息,则需要将先前存储在AST中的信息附加到与IR相关的类中,在您的情况下,似乎llvm::Function是保留该信息的地方。在此过程中,需要更新“lib / AsmParser / LLParser.cpp”,“lib / AsmParser / LLLexer.cpp”和“lib / IR / AsmWriter.cpp”文件。这将允许读写存储在IR中的信息。

  • 最后,如果您需要将IR中保留的其他信息写入汇编文件,则需要相应地更新'lib / CodeGen / AsmPrinter / AsmPrinter.cpp'文件。

    关于c++ - 如何在C中自定义编译指示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59519758/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com