我正在尝试使用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 comment introspection页上找到任何可以从CXComment获取源代码行的内容。不幸的是,我只能使用libclang C API,所以我知道实际上可能没有一种方法可以完成我想要的事情。
感谢您的帮助。