clang  14.0.0git
Classes | Namespaces | Macros | Enumerations | Functions
Nodes.h File Reference
#include "clang/Basic/TokenKinds.h"
#include "clang/Lex/Token.h"
#include "clang/Tooling/Syntax/Tokens.h"
#include "clang/Tooling/Syntax/Tree.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/raw_ostream.h"
#include "clang/Tooling/Syntax/Nodes.inc"
#include "clang/Tooling/Syntax/NodeClasses.inc"
Include dependency graph for Nodes.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  clang::syntax::NestedNameSpecifier
 Models a nested-name-specifier. More...
 
class  clang::syntax::UnqualifiedId
 Models an unqualified-id. More...
 
class  clang::syntax::UnknownExpression
 An expression of an unknown kind, i.e. More...
 
class  clang::syntax::CallArguments
 Models arguments of a function call. More...
 
class  clang::syntax::UnaryOperatorExpression
 An abstract class for prefix and postfix unary operators. More...
 
class  clang::syntax::PrefixUnaryOperatorExpression
 <operator> <operand> More...
 
class  clang::syntax::PostfixUnaryOperatorExpression
 <operand> <operator> More...
 
class  clang::syntax::BinaryOperatorExpression
 <lhs> <operator> <rhs> More...
 
class  clang::syntax::Statement
 An abstract node for C++ statements, e.g. More...
 
class  clang::syntax::UnknownStatement
 A statement of an unknown kind, i.e. More...
 
class  clang::syntax::DeclarationStatement
 E.g. 'int a, b = 10;'. More...
 
class  clang::syntax::EmptyStatement
 The no-op statement, i.e. ';'. More...
 
class  clang::syntax::SwitchStatement
 switch (<cond>) <body> More...
 
class  clang::syntax::CaseStatement
 case : <body> More...
 
class  clang::syntax::DefaultStatement
 default: <body> More...
 
class  clang::syntax::IfStatement
 if (cond) <then-statement> else <else-statement> FIXME: add condition that models 'expression or variable declaration' More...
 
class  clang::syntax::ForStatement
 for (<init>; <cond>; <increment>) <body> More...
 
class  clang::syntax::WhileStatement
 while (<cond>) <body> More...
 
class  clang::syntax::ContinueStatement
 continue; More...
 
class  clang::syntax::BreakStatement
 break; More...
 
class  clang::syntax::ReturnStatement
 return <expr>; return; More...
 
class  clang::syntax::RangeBasedForStatement
 for (<decl> : <init>) <body> More...
 
class  clang::syntax::ExpressionStatement
 Expression in a statement position, e.g. More...
 
class  clang::syntax::CompoundStatement
 { statement1; statement2; … } More...
 
class  clang::syntax::Declaration
 A declaration that can appear at the top-level. More...
 
class  clang::syntax::UnknownDeclaration
 Declaration of an unknown kind, e.g. not yet supported in syntax trees. More...
 
class  clang::syntax::EmptyDeclaration
 A semicolon in the top-level context. Does not declare anything. More...
 
class  clang::syntax::StaticAssertDeclaration
 static_assert(<condition>, <message>) static_assert(<condition>) More...
 
class  clang::syntax::LinkageSpecificationDeclaration
 extern <string-literal> declaration extern <string-literal> { <decls> } More...
 
class  clang::syntax::DeclaratorList
 
class  clang::syntax::SimpleDeclaration
 Groups multiple declarators (e.g. More...
 
class  clang::syntax::TemplateDeclaration
 template <template-parameters> <declaration> More...
 
class  clang::syntax::ExplicitTemplateInstantiation
 template <declaration> Examples: template struct X<int> template void foo<int>() template int var<double> More...
 
class  clang::syntax::NamespaceDefinition
 namespace <name> { <decls> } More...
 
class  clang::syntax::NamespaceAliasDefinition
 namespace <name> = <namespace-reference> More...
 
class  clang::syntax::UsingNamespaceDirective
 using namespace <name> More...
 
class  clang::syntax::UsingDeclaration
 using <scope>::<name> using typename <scope>::<name> More...
 
class  clang::syntax::TypeAliasDeclaration
 using <name> = <type> More...
 
class  clang::syntax::Declarator
 Covers a name, an initializer and a part of the type outside declaration specifiers. More...
 
class  clang::syntax::SimpleDeclarator
 A top-level declarator without parentheses. More...
 
class  clang::syntax::ParenDeclarator
 Declarator inside parentheses. More...
 
class  clang::syntax::ArraySubscript
 Array size specified inside a declarator. More...
 
class  clang::syntax::TrailingReturnType
 Trailing return type after the parameter list, including the arrow token. More...
 
class  clang::syntax::ParameterDeclarationList
 Models a parameter-declaration-list which appears within parameters-and-qualifiers. More...
 
class  clang::syntax::ParametersAndQualifiers
 Parameter list for a function type and a trailing return type, if the function has one. More...
 
class  clang::syntax::MemberPointer
 Member pointer inside a declarator E.g. More...
 

Namespaces

 clang
 
 clang::syntax
 

Macros

#define CONCRETE_NODE(Kind, Base)   Kind,
 
#define CONCRETE_NODE(Kind, Base)
 
#define ABSTRACT_NODE(Kind, Base, First, Last)
 

Enumerations

enum  clang::syntax::NodeKind : uint16_t { clang::syntax::NodeKind::CONCRETE_NODE }
 A kind of a syntax node, used for implementing casts. More...
 
enum  clang::syntax::NodeRole : uint8_t {
  clang::syntax::NodeRole::Detached, clang::syntax::NodeRole::Unknown, clang::syntax::NodeRole::OpenParen, clang::syntax::NodeRole::CloseParen,
  clang::syntax::NodeRole::IntroducerKeyword, clang::syntax::NodeRole::LiteralToken, clang::syntax::NodeRole::ArrowToken, clang::syntax::NodeRole::ExternKeyword,
  clang::syntax::NodeRole::TemplateKeyword, clang::syntax::NodeRole::BodyStatement, clang::syntax::NodeRole::ListElement, clang::syntax::NodeRole::ListDelimiter,
  clang::syntax::NodeRole::OperatorToken, clang::syntax::NodeRole::Operand, clang::syntax::NodeRole::LeftHandSide, clang::syntax::NodeRole::RightHandSide,
  clang::syntax::NodeRole::ReturnValue, clang::syntax::NodeRole::CaseValue, clang::syntax::NodeRole::ThenStatement, clang::syntax::NodeRole::ElseKeyword,
  clang::syntax::NodeRole::ElseStatement, clang::syntax::NodeRole::Expression, clang::syntax::NodeRole::Statement, clang::syntax::NodeRole::Condition,
  clang::syntax::NodeRole::Message, clang::syntax::NodeRole::Declarator, clang::syntax::NodeRole::Declaration, clang::syntax::NodeRole::Size,
  clang::syntax::NodeRole::Parameters, clang::syntax::NodeRole::TrailingReturn, clang::syntax::NodeRole::UnqualifiedId, clang::syntax::NodeRole::Qualifier,
  clang::syntax::NodeRole::SubExpression, clang::syntax::NodeRole::Object, clang::syntax::NodeRole::AccessToken, clang::syntax::NodeRole::Member,
  clang::syntax::NodeRole::Callee, clang::syntax::NodeRole::Arguments, clang::syntax::NodeRole::Declarators
}
 A relation between a parent and child node, e.g. More...
 

Functions

raw_ostream & clang::syntax::operator<< (raw_ostream &OS, NodeKind K)
 For debugging purposes. More...
 
raw_ostream & clang::syntax::operator<< (raw_ostream &OS, NodeRole R)
 For debugging purposes. More...
 

Macro Definition Documentation

◆ ABSTRACT_NODE

#define ABSTRACT_NODE (   Kind,
  Base,
  First,
  Last 
)
Value:
inline bool Kind::classof(const Node *N) { \
return N->getKind() >= NodeKind::First && N->getKind() <= NodeKind::Last; \
}

Definition at line 587 of file Nodes.h.

◆ CONCRETE_NODE [1/2]

#define CONCRETE_NODE (   Kind,
  Base 
)    Kind,

Definition at line 583 of file Nodes.h.

◆ CONCRETE_NODE [2/2]

#define CONCRETE_NODE (   Kind,
  Base 
)
Value:
inline bool Kind::classof(const Node *N) { \
return N->getKind() == NodeKind::Kind; \
}

Definition at line 583 of file Nodes.h.

Node
DynTypedNode Node
Definition: ASTMatchFinder.cpp:67
clang::ObjCPropertyAttribute::Kind
Kind
Definition: DeclObjCCommon.h:22