Compiler construction libclang中是否有用于simpilfy BinaryOperator的api

Compiler construction libclang中是否有用于simpilfy BinaryOperator的api,compiler-construction,llvm,clang,libclang,Compiler Construction,Llvm,Clang,Libclang,我想在我的代码上做一个转换,它将二进制运算符(例如“1+a+2”)简化为“a+3”,那么libclang中有没有api可以做这样的事情呢?不太可能 如果您将Clang称为LLVM的C/C++/ObjC前端,那么据我所知,没有这样的API—这不是前端设计要做的事情 LLVM内核(如果您将其称为完整的编译器,它是Clang的一部分)可以做这些事情,但是没有API将其翻译回源语言 我认为最好的办法是编写一个基于叮当声的工具来修改源代码(参见示例)。但是,我建议您首先重新思考为什么需要它,因为编译期间无

我想在我的代码上做一个转换,它将二进制运算符(例如“1+a+2”)简化为“a+3”,那么libclang中有没有api可以做这样的事情呢?

不太可能

如果您将Clang称为LLVM的C/C++/ObjC前端,那么据我所知,没有这样的API—这不是前端设计要做的事情

LLVM内核(如果您将其称为完整的编译器,它是Clang的一部分)可以做这些事情,但是没有API将其翻译回源语言

我认为最好的办法是编写一个基于叮当声的工具来修改源代码(参见示例)。但是,我建议您首先重新思考为什么需要它,因为编译期间无论如何都会发生这种情况。您将无法获得任何性能,并且可能会降低代码的可读性


一般来说,如果出于性能原因要添加某个转换,而当前在编译过程中没有进行转换,那么正确的方法不是修改源程序,而是修改将在编译过程中运行的源程序并执行修复。Clang与此无关。

我希望Clang将此作为其代码生成过程的一部分,那么您这样做能实现什么?