Hi again,<br><br>Could you tell me what's a Qualtype in detail. How does it save space for representing different types ?<br><br>Thanks<br><br><div class="gmail_quote">On Wed, Mar 3, 2010 at 10:19 PM, Charles Davis <span dir="ltr"><<a href="mailto:cdavis@mymail.mines.edu">cdavis@mymail.mines.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="im">On 3/3/10 7:57 PM, kalyan ponnala wrote:<br>
> Thanks for the support Charles.<br>
> Could you tell me a better way to understand how parser works. Or is<br>
> "steping into" the code is the only solid way to understand it.<br>
</div>Clang's Parser class works like this:<br>
1. Someone calls ParseTopLevelDecl() to parse a top-level declaration<br>
from the source.<br>
2. ParseTopLevelDecl() calls other methods inside the Parser class to<br>
parse fragments of the source according to the grammar as defined in the<br>
C and C++ standards. Most functions get called indirectly; for example,<br>
when the Parser encounters a function declaration, the<br>
ParseFunctionDeclaration() method gets called.<br>
3. These parsing methods notify some object through the "Action"<br>
interface every time something gets parsed. The default Action object<br>
does nothing. The Semantic Analyzer (another really important part of<br>
the compiler), or just "Sema" for short, provides an implementation<br>
which not only builds the AST but also annotates it with types and<br>
checks the semantics of the program specified by the source code.<br>
4. Steps 1-3 are repeated for every top-level declaration in the<br>
translation unit (a source file plus all its included headers).<br>
5. When it does hit the end of the unit, ParseTopLevelDecl() calls<br>
Action::ActOnEndOfTranslationUnit(). This lets the object on the other<br>
side know that the translation unit has ended, and it's time to do<br>
whatever. The Sema implementation invokes an ASTConsumer object with<br>
this information.<br>
<div class="im">> I would like to know some important files inside the solution file which<br>
> are responsible for building the AST.<br>
</div>The Sema library is your best bet. Study it; that's where I started with<br>
Clang. Trust me: it's one of the easiest parts of the compiler to<br>
understand. Like most of Clang, it was designed to be relatively easy to<br>
understand, even for someone with little or no prior experience with<br>
compiler technology. In particular, look at lib/Sema/SemaDecl.cpp and<br>
lib/Sema/SemaExpr.cpp .<br>
<br>
Also, take a look at include/clang/Parse/Action.h . This is the file<br>
that defines the Action interface.<br>
> Thanks.<br>
No problem.<br>
<br>
Chip<br>
<br>
</blockquote></div><br><br clear="all"><br>-- <br>Kalyan Ponnala<br>phone: 8163772059<br>