同じような実装は卒論のときにもしたけれど、そのたびによくわからないのがAST生成メソッドの引数です。
ILanguage.getASTTranslationUnit(
FileContent content,
IScannerInfo scanInfo,
IncludeFileContentProvider fileCreator,
IIndex index,
int options,
IParserLogService log)
引数がいっぱいあるけれど、これらについてまともなドキュメントは存在しません。
何を渡せばいいのかはっきりせず、卒論のときも今も、自己流で引数を用意しています。こんな感じに。
ILanguage language = GCCLanguage.getDefault();
FileContent reader = FileContent.create(filePath, source);
Map<String, String> macroDefinitions = null;
String[] includeSearchPath = null;
IScannerInfo scanInfo = new ScannerInfo(macroDefinitions, includeSearchPath );
IncludeFileContentProvider fileCreator = IncludeFileContentProvider.getEmptyFilesProvider();
IIndex index = null;
int options = 0;
IParserLogService log = new DefaultLogService();
try {
IASTTranslationUnit translationUnit = language.getASTTranslationUnit(reader, scanInfo, fileCreator, index, options, log);
とりあえずFileContentだけきちんと解析したいソースコードの内容を渡すようにすれば、とりあえずはそれなりの抽象構文木が手に入るなあという印象です。
0 件のコメント:
コメントを投稿