現在、clang C API を使用して C++ コードのパーサーを構築しています。パーサーはヘッダー ファイルを処理し、定義済みシンボルと不足しているシンボルのリストを生成します (インクルード ディレクティブを無視するため、ヘッダーの内容を厳密に解析します)。私の問題は、次typedefのような未定義の型の引数を取る関数ポインターがある場合です。
typedef SOME_TYPE (* funcPtrName)(SOME_UNDEF_TYPE x);
AST はSOME_TYPEではなく typedef として解析しますfuncPtrName。に置き換えるSOME_UNDEF_TYPEと、正しくint解析されます。funcPtrName
clang_tokenizeカーソルのすべてのトークンを取得し、関数ポインター名を手動で取得するために使用できると思いclang_getCursorExtentましたが、typedef を指すカーソルでの呼び出しは正しく機能しません (返される範囲は 0,0 です)。
この問題を回避する方法を知っていますか?