2016-07-01 7 views
4

私はclang :: TreeTransformの統合点を理解しようとしています。clang :: TreeTransformのインストール方法

目標はコード生成の前にASTを変換することです。

ありがとうございます。

+0

文書をお読みになりましたか? – Nawaz

+2

@Nawazは文書ですか? - TreeTransformに関するページが見つかりませんでした – Gaetano

+0

[this](http://clang.llvm.org/doxygen/classclang_1_1TreeTransform.html#details)のようなLLVMのdoxygenドキュメント...はい、あなたはそれを使用する方法を理解するために少し働いてください。 – Nawaz

答えて

2

ASTFrontEndActionを使用し、CreateASTConsumerメソッドを再定義して(ASTConsumerではなく)SemaConsumerを作成する方法があります。

次に、handleTopLevelDeclメソッドで、TreeTransformに必要なSemaを渡してRecursiveASTVisitorを作成します。

次に、RecursiveASTVisitorのVisitメソッドで、TreeTransformのインスタンスを作成し、適切な変換メソッドを呼び出すことができます。

PS:compund文を変換するとき、機能スコープが空であることがあります。あなたはあなたのトランスフォーミング機能を呼び出す前に

SemaRef.PushFunctionScope(); 
SemaRef.PushCompoundScope(); 

の前に行うことができます。

関連する問題