Dado un objeto AST en clang, ¿cómo puedo obtener el código detrás de él? He intentado editar el código en el tutorial, y añadió:Obteniendo la fuente detrás de clang's 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";
pero por desgracia, no se imprime toda la declaración typedef, sólo la mitad de ella! El mismo fenómeno ocurrió al imprimir Expr
.
¿Cómo puedo imprimir y ver toda la cadena original que constituye la declaración?
Creo que la ubicación de la fuente final apunta al último token en el rango (no uno más allá del final) y por lo tanto se perderá el último token. – bames53
@ bames53 parece que estás en lo cierto! ¿Cómo obtengo este último token? – mikebloch
Aparte del hecho de que probablemente debería ser '_e' no' _w' en la tercera línea, ¿no es la diferencia en la última línea al revés? (Es decir, 'e - b' no' b - e') –