<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Feb 14, 2014 at 8:57 PM, Vladimir <span dir="ltr"><<a href="mailto:VladimirPlyashkun@yandex.ru" target="_blank">VladimirPlyashkun@yandex.ru</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello, everyone. I have some trouble. Earlier i'm using Lexer module to<br>
getting source text. This sample code works fine, if my source file doesnt<br>
have any #include directive:<br>
clang::SourceLocation b(d->getLocStart()), _e(d->getLocEnd());<br>
clang::SourceLocation e(clang::Lexer::getLocForEndOfToken(_e, 0, *sm,<br>
lopt));<br>
return std::string(sm->getCharacterData(b),<br>
         sm->getCharacterData(e)-sm->getCharacterData(b));<br>
But when i'm trying to get some location on file(which have some includes)<br>
this code always returns trash. For example, attempt to get source filename<br>
'sourceManager->getFilename(location)' returns null string.<br>
Moreover, above code also returns incorrect values. I know that this fact<br>
caused by preprocessor macroses and different files, but i dont know correct<br>
way to get source text of AST (which represent preprocessed file). Do you<br>
have any ideas?<br></blockquote><div><br></div><div>There is no "source text of the AST". What will work in basically all cases where it's possible is to use Lexer::getSourceText. Note that you still need to be careful to not pass in a bogus range, but if you get it as start/end from a single AST node, it's usually fine. Also note that not all cases are resolvable to a single StringRef (but we found it's usually not a problem in practice).</div>
<div><br></div><div>Cheers,</div><div>/Manuel</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://clang-developers.42468.n3.nabble.com/How-to-get-source-text-after-preprocessing-tp4037854.html" target="_blank">http://clang-developers.42468.n3.nabble.com/How-to-get-source-text-after-preprocessing-tp4037854.html</a><br>

Sent from the Clang Developers mailing list archive at Nabble.com.<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div></div>