Dato un oggetto AST in clang, come posso ottenere il codice dietro di esso? Ho provato la modifica del codice nella tutorial, e ha aggiunto:Ottenere il codice sorgente di clang 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";
ma ahimè, non è stato stampato nella dichiarazione typedef, solo circa la metà di esso! Lo stesso fenomeno si è verificato durante la stampa di Expr
.
Come posso stampare e visualizzare l'intera stringa originale che costituisce la dichiarazione?
Credo che i punti di locazione fonte fine l'ultimo token nel campo (non uno dopo la fine) e così vi perderete l'ultimo token. – bames53
@ bames53 sembra che tu abbia ragione! Come ottengo quest'ultimo token? – mikebloch
A parte il fatto che probabilmente dovrebbe essere '_e' non' _w' nella terza riga, la differenza nell'ultima riga non è la differenza? (Ie 'e - b' non' b - e') –