Open
Description
Clang AST では、ソースコード上のコメントや、 clang が知らない #pragma については表現されていない。これらについて、
- コメントはだいたい元の位置に再現したい、という要望がある
- #pragma の取得はいずれ xmp 記法に対応するために必須となる
という需要がある。
いずれも、 Clang AST として表現できるようにしようと思うと libclang 本体に手を入れねばならないが、そうではなく、
- Clang AST にはほとんどの要素に SourceRange (ソースコード上での始点と終点)が付いている
- SourceRange の情報を元にして、ソースコード上の任意の位置の文字を取得することができる
という特徴を利用して、「Clang AST で表現され損なっている位置の文字」を取得すれば、
そこにコメントや #pragma があることが期待できるので、あとは自力でパースすれば取得できるはず。