Поиск местоположения строки комментария с помощью libclang - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь использовать libclang для синтаксического анализа некоторого кода, и в рамках этой работы я хочу извлечь комментарии и сохранить их формат (включая разрывы строк). Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти хороший способ сказать, где разрывы строк на самом деле. Ниже дамп AST:

| |   |-BlockCommandComment 0x65abae0 <col:6, line:41:5> Name="li"
| |   | `-ParagraphComment 0x65abc80 <line:40:9, line:41:5>
| |   |   |-TextComment 0x65abb10 <line:40:9> Text=" "
| |   |   |-InlineCommandComment 0x65abb60 <col:10, col:11> Name="b" RenderBold Arg[0]="Range:"
| |   |   |-TextComment 0x65abb80 <col:19, col:21> Text=" 0 "
| |   |   |-TextComment 0x65abba0 <col:22> Text="<"
| |   |   |-TextComment 0x65abbc0 <col:23, col:26> Text="= x "
| |   |   |-TextComment 0x65abbe0 <col:27> Text="<"
| |   |   |-TextComment 0x65abc00 <col:28, col:31> Text=" 180"
| |   |   `-TextComment 0x65abc20 <line:41:5> Text=" "

Как видите, некоторые текстовые комментарии находятся на одной строке, а некоторые - нет, поэтому я не могу использовать это в качестве надежного метода определения места появления новых строк. Я также не могу найти ничего на странице комментария libclang для самоанализа , которая могла бы получить исходную строку из CXComment. К сожалению, я ограничен в libclang C API, поэтому я понимаю, что на самом деле не может быть способа делать то, что я хочу.

Спасибо за любую помощь.

...