clang: clang::syntax::TreeBuilder Class Reference (original) (raw)

A helper class for constructing the syntax tree while traversing a clang AST. More...

Public Member Functions
TreeBuilder (syntax::Arena &Arena, TokenBufferTokenManager &TBTM)
llvm::BumpPtrAllocator & allocator ()
const SourceManager & sourceManager () const
void foldNode (ArrayRef< syntax::Token > Range, syntax::Tree *New, ASTPtr From)
Populate children for New node, assuming it covers tokens from Range.
void foldNode (ArrayRef< syntax::Token > Range, syntax::Tree *New, TypeLoc L)
void foldNode (llvm::ArrayRef< syntax::Token > Range, syntax::Tree *New, NestedNameSpecifierLoc From)
void foldList (ArrayRef< syntax::Token > SuperRange, syntax::List *New, ASTPtr From)
Populate children for New list, assuming it covers tokens from a subrange of SuperRange.
void noticeDeclWithoutSemicolon (Decl *D)
Notifies that we should not consume trailing semicolon when computing token range of D.
void markStmtChild (Stmt *Child, NodeRole Role)
Mark the Child node with a corresponding Role.
void markExprChild (Expr *Child, NodeRole Role)
Should be called for expressions in non-statement position to avoid wrapping into expression statement.
void markChildToken (SourceLocation Loc, NodeRole R)
Set role for a token starting at Loc.
void markChildToken (const syntax::Token *T, NodeRole R)
Set role for T.
void markChild (syntax::Node *N, NodeRole R)
Set role for N.
void markChild (ASTPtr N, NodeRole R)
Set role for the syntax node matching N.
void markChild (NestedNameSpecifierLoc N, NodeRole R)
Set role for the syntax node matching N.
syntax::TranslationUnit * finalize () &&
Finish building the tree and consume the root node.
const syntax::Token * findToken (SourceLocation L) const
Finds a token starting at L. The token must exist if L is valid.
ArrayRef< syntax::Token > getRange (SourceRange Range) const
Finds the syntax tokens corresponding to the SourceRange.
ArrayRef< syntax::Token > getRange (SourceLocation First, SourceLocation Last) const
Finds the syntax tokens corresponding to the passed source locations.
ArrayRef< syntax::Token > getTemplateRange (const ClassTemplateSpecializationDecl *D) const
bool isResponsibleForCreatingDeclaration (const Decl *D) const
Returns true if D is the last declarator in a chain and is thus reponsible for creating SimpleDeclaration for the whole chain.
ArrayRef< syntax::Token > getDeclarationRange (Decl *D)
ArrayRef< syntax::Token > getExprRange (const Expr *E) const
ArrayRef< syntax::Token > getStmtRange (const Stmt *S) const
Find the adjusted range for the statement, consuming the trailing semicolon when needed.

A helper class for constructing the syntax tree while traversing a clang AST.

At each point of the traversal we maintain a list of pending nodes. Initially all tokens are added as pending nodes. When processing a clang AST node, the clients need to:

Note that all children are expected to be processed when building a node.

Call finalize() to finish building the tree and consume the root node.

Definition at line 367 of file BuildTree.cpp.

allocator()

llvm::BumpPtrAllocator & clang::syntax::TreeBuilder::allocator ( ) inline

finalize()

syntax::TranslationUnit * clang::syntax::TreeBuilder::finalize ( ) && inline

findToken()

foldList()

foldNode() [1/3]

foldNode() [2/3]

foldNode() [3/3]

getDeclarationRange()

getExprRange()

getRange() [1/2]

getRange() [2/2]

getStmtRange()

getTemplateRange()

isResponsibleForCreatingDeclaration()

bool clang::syntax::TreeBuilder::isResponsibleForCreatingDeclaration ( const Decl * D) const inline

markChild() [1/3]

void clang::syntax::TreeBuilder::markChild ( ASTPtr N,
NodeRole R
)

Set role for the syntax node matching N.

Definition at line 1706 of file BuildTree.cpp.

markChild() [2/3]

Set role for the syntax node matching N.

Definition at line 1711 of file BuildTree.cpp.

markChild() [3/3]

markChildToken() [1/2]

markChildToken() [2/2]

markExprChild()

void clang::syntax::TreeBuilder::markExprChild ( Expr * Child,
NodeRole Role
)

Should be called for expressions in non-statement position to avoid wrapping into expression statement.

Definition at line 1736 of file BuildTree.cpp.

References IgnoreImplicit().

markStmtChild()

void clang::syntax::TreeBuilder::markStmtChild ( Stmt * Child,
NodeRole Role
)

noticeDeclWithoutSemicolon()

void clang::syntax::TreeBuilder::noticeDeclWithoutSemicolon ( Decl * D )

Notifies that we should not consume trailing semicolon when computing token range of D.

Definition at line 1685 of file BuildTree.cpp.

References D.

sourceManager()

const SourceManager & clang::syntax::TreeBuilder::sourceManager ( ) const inline

The documentation for this class was generated from the following file: