r224894 - Add stub sections about Parse, Sema, CodeGen to the internals manual.

Nico Weber nicolasweber at gmx.de
Sat Dec 27 18:07:26 PST 2014


Author: nico
Date: Sat Dec 27 20:07:26 2014
New Revision: 224894

URL: http://llvm.org/viewvc/llvm-project?rev=224894&view=rev
Log:
Add stub sections about Parse, Sema, CodeGen to the internals manual.

I'd be interested if the paragraph on Parse not knowing much about AST is
something folks agree with.  I think this used to be true after rjmccall removed
the Action interface in r112244 and I believe it's still true, but I'm not sure.
(For example, ParseOpenMP.cpp does include AST/StmtOpenMP.h.  Other than that,
Parse not using AST nodes much seems to be still true, though.)

Modified:
    cfe/trunk/docs/InternalsManual.rst

Modified: cfe/trunk/docs/InternalsManual.rst
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/InternalsManual.rst?rev=224894&r1=224893&r2=224894&view=diff
==============================================================================
--- cfe/trunk/docs/InternalsManual.rst (original)
+++ cfe/trunk/docs/InternalsManual.rst Sat Dec 27 20:07:26 2014
@@ -784,9 +784,24 @@ buffer uses this idiom and is subsequent
 simply check to see whether the guarding condition is defined or not.  If so,
 the preprocessor can completely ignore the include of the header.
 
+.. _Parser:
+
 The Parser Library
 ==================
 
+This library contains a recursive-descent parser that polls tokens from the
+preprocessor and notifies a client of the parsing progress.
+
+Historically, the parser used to talk to an abstract ``Action`` interface that
+had virtual methods for parse events, for example ``ActOnBinOp()``.  When Clang
+grew C++ support, the parser stopped supporting general ``Action`` clients --
+it now always talks to the :ref:`Sema` library.  However, the Parser still
+accesses AST objects only through opaque types like ``ExprResult`` and
+``StmtResult``.  Only ::ref::`Sema` looks at the AST node contents of these
+wrappers.
+
+.. _AST:
+
 The AST Library
 ===============
 
@@ -1582,6 +1597,23 @@ interacts with constant evaluation:
 * ``__builtin_strlen`` and ``strlen``: These are constant folded as integer
   constant expressions if the argument is a string literal.
 
+.. _Sema:
+
+The Sema Library
+================
+
+This library is called by the :ref:`Parser` library during parsing to do
+semantic analysis of the input.  For valid programs, Sema builds an AST for
+parsed constructs.
+
+.. _CodeGen:
+
+The CodeGen Library
+===================
+
+CodeGen takes an :ref:`AST` as input and produces `LLVM IR code
+<//llvm.org/docs/LangRef.html>`_ from it.
+
 How to change Clang
 ===================
 





More information about the cfe-commits mailing list