Export the ASTBuilder class from the AST module.
llvm-svn: 39095
diff --git a/clang/Sema/Sema.cpp b/clang/Sema/Sema.cpp
index 5cd84be..bbda610 100644
--- a/clang/Sema/Sema.cpp
+++ b/clang/Sema/Sema.cpp
@@ -1,4 +1,4 @@
-//===--- Builder.cpp - AST Builder Implementation -------------------------===//
+//===--- ASTBuilder.cpp - AST Builder Implementation ----------------------===//
//
// The LLVM Compiler Infrastructure
//
@@ -12,6 +12,7 @@
//
//===----------------------------------------------------------------------===//
+#include "clang/AST/ASTBuilder.h"
#include "clang/Parse/Action.h"
#include "clang/AST/Decl.h"
#include "clang/AST/Expr.h"
@@ -22,107 +23,6 @@
using namespace llvm;
using namespace clang;
-/// ASTBuilder
-namespace {
-class VISIBILITY_HIDDEN ASTBuilder : public Action {
- Preprocessor &PP;
-
- /// FullLocInfo - If this is true, the ASTBuilder constructs AST Nodes that
- /// capture maximal location information for each source-language construct.
- bool FullLocInfo;
-
- /// LastInGroupList - This vector is populated when there are multiple
- /// declarators in a single decl group (e.g. "int A, B, C"). In this case,
- /// all but the last decl will be entered into this. This is used by the
- /// ASTStreamer.
- std::vector<Decl*> &LastInGroupList;
-public:
- ASTBuilder(Preprocessor &pp, bool fullLocInfo,
- std::vector<Decl*> &prevInGroup)
- : PP(pp), FullLocInfo(fullLocInfo), LastInGroupList(prevInGroup) {}
-
- //===--------------------------------------------------------------------===//
- // Symbol table tracking callbacks.
- //
- virtual bool isTypeName(const IdentifierInfo &II, Scope *S) const;
- virtual DeclTy *ParseDeclarator(Scope *S, Declarator &D, ExprTy *Init,
- DeclTy *LastInGroup);
- virtual DeclTy *ParseFunctionDefinition(Scope *S, Declarator &D,
- StmtTy *Body);
- virtual void PopScope(SourceLocation Loc, Scope *S);
-
- //===--------------------------------------------------------------------===//
- // Statement Parsing Callbacks.
-
- virtual StmtResult ParseCompoundStmt(SourceLocation L, SourceLocation R,
- StmtTy **Elts, unsigned NumElts);
- virtual StmtResult ParseExprStmt(ExprTy *Expr) {
- // TODO: Full info should track this with a node.
- return Expr; // Exprs are Stmts.
- }
-
- virtual StmtResult ParseIfStmt(SourceLocation IfLoc, ExprTy *CondVal,
- StmtTy *ThenVal, SourceLocation ElseLoc,
- StmtTy *ElseVal);
-
- virtual StmtResult ParseReturnStmt(SourceLocation ReturnLoc,
- ExprTy *RetValExp);
-
- //===--------------------------------------------------------------------===//
- // Expression Parsing Callbacks.
-
- // Primary Expressions.
- virtual ExprResult ParseSimplePrimaryExpr(SourceLocation Loc,
- tok::TokenKind Kind);
- virtual ExprResult ParseIntegerConstant(SourceLocation Loc);
- virtual ExprResult ParseFloatingConstant(SourceLocation Loc);
- virtual ExprResult ParseParenExpr(SourceLocation L, SourceLocation R,
- ExprTy *Val);
- virtual ExprResult ParseStringExpr(const char *StrData, unsigned StrLen,
- bool isWide,
- SourceLocation *TokLocs, unsigned NumToks);
-
- // Binary/Unary Operators. 'Tok' is the token for the operator.
- virtual ExprResult ParseUnaryOp(SourceLocation OpLoc, tok::TokenKind Op,
- ExprTy *Input);
- virtual ExprResult
- ParseSizeOfAlignOfTypeExpr(SourceLocation OpLoc, bool isSizeof,
- SourceLocation LParenLoc, TypeTy *Ty,
- SourceLocation RParenLoc);
-
- virtual ExprResult ParsePostfixUnaryOp(SourceLocation OpLoc,
- tok::TokenKind Kind, ExprTy *Input);
-
- virtual ExprResult ParseArraySubscriptExpr(ExprTy *Base, SourceLocation LLoc,
- ExprTy *Idx, SourceLocation RLoc);
- virtual ExprResult ParseMemberReferenceExpr(ExprTy *Base,SourceLocation OpLoc,
- tok::TokenKind OpKind,
- SourceLocation MemberLoc,
- IdentifierInfo &Member);
-
- /// ParseCallExpr - Handle a call to Fn with the specified array of arguments.
- /// This provides the location of the left/right parens and a list of comma
- /// locations.
- virtual ExprResult ParseCallExpr(ExprTy *Fn, SourceLocation LParenLoc,
- ExprTy **Args, unsigned NumArgs,
- SourceLocation *CommaLocs,
- SourceLocation RParenLoc);
-
- virtual ExprResult ParseCastExpr(SourceLocation LParenLoc, TypeTy *Ty,
- SourceLocation RParenLoc, ExprTy *Op);
-
- virtual ExprResult ParseBinOp(SourceLocation TokLoc, tok::TokenKind Kind,
- ExprTy *LHS,ExprTy *RHS);
-
- /// ParseConditionalOp - Parse a ?: operation. Note that 'LHS' may be null
- /// in the case of a the GNU conditional expr extension.
- virtual ExprResult ParseConditionalOp(SourceLocation QuestionLoc,
- SourceLocation ColonLoc,
- ExprTy *Cond, ExprTy *LHS, ExprTy *RHS);
-};
-} // end anonymous namespace
-
-
//===----------------------------------------------------------------------===//
// Symbol table tracking callbacks.
//===----------------------------------------------------------------------===//
@@ -432,11 +332,3 @@
ColonLoc, (Expr*)RHS);
}
-
-/// Interface to the Builder.cpp file.
-///
-Action *CreateASTBuilderActions(Preprocessor &PP, bool FullLocInfo,
- std::vector<Decl*> &LastInGroupList) {
- return new ASTBuilder(PP, FullLocInfo, LastInGroupList);
-}
-