Gibt es ein AST-Objekt in clang, wie bekomme ich den Code dahinter? Ich habe versucht, den Code in den tutorial Bearbeitung und fügte hinzu:Ermitteln der Quelle hinter dem AST von CLAng
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";
aber leider hat es nicht die ganze typedef Erklärung drucken, nur etwa die Hälfte davon! Die gleichen Phänomene traten beim Drucken auf Expr
auf.
Wie kann ich die gesamte ursprüngliche Zeichenfolge drucken und anzeigen, die die Deklaration darstellt?
Ich denke, die Endquelle Position zeigt auf den letzten Token in der Reihe (nicht eine nach dem Ende) und so verpassen Sie das letzte Token. – bames53
@ bames53 sieht aus wie du bist richtig! Wie bekomme ich dann dieses letzte Token? – mikebloch
Abgesehen davon, dass es in der dritten Zeile wahrscheinlich "_e" nicht "_w" sein sollte, ist der Unterschied in der letzten Zeile nicht falsch? (I.e. 'e - b' nicht' b - e') –