Учитывая объект AST в clang, как я могу получить код за ним? Я попытался редактирование коды в tutorial, и добавил:Получение источника позади AST АНГ
clang::SourceLocation _b = d->getLocStart(), _e = d->getLocEnd();
char *b = sourceManager->getCharacterData(_b),
e = sourceManager->getCharacterData(_E);
llvm:errs() << std::string(b, e-b) << "\n";
, но увы, не печатал всю декларацию ЬурейеЙ, только около половины этого! То же самое произошло при печати Expr
.
Как распечатать и увидеть всю исходную строку, составляющую декларацию?
Я думаю, что местоположение конечного источника указывает на последний токен в диапазоне (не один за его конец), и поэтому вы пропустите последний токен. – bames53
@ bames53 похоже, что вы правы! Как мне получить этот последний токен? – mikebloch
Помимо того, что в третьей строке это, вероятно, должно быть '_e' not' _w', разве разница в последней строке неправильная? (I.e. 'e - b' not' b - e') –