clang 20.0.0git
|
A list of Elements separated or terminated by a fixed token. More...
#include "clang/Tooling/Syntax/Tree.h"
Classes | |
struct | ElementAndDelimiter |
Public Types | |
enum class | TerminationKind { Terminated , MaybeTerminated , Separated } |
Public Member Functions | |
std::vector< ElementAndDelimiter< Node > > | getElementsAsNodesAndDelimiters () |
Returns the elements and corresponding delimiters. | |
std::vector< Node * > | getElementsAsNodes () |
Returns the elements of the list. | |
clang::tok::TokenKind | getDelimiterTokenKind () const |
Returns the appropriate delimiter for this list. | |
TerminationKind | getTerminationKind () const |
bool | canBeEmpty () const |
Whether this list can be empty in syntactically and semantically correct code. | |
Public Member Functions inherited from clang::syntax::Tree | |
Node * | getFirstChild () |
const Node * | getFirstChild () const |
Node * | getLastChild () |
const Node * | getLastChild () const |
const Leaf * | findFirstLeaf () const |
Leaf * | findFirstLeaf () |
const Leaf * | findLastLeaf () const |
Leaf * | findLastLeaf () |
llvm::iterator_range< ChildIterator > | getChildren () |
llvm::iterator_range< ConstChildIterator > | getChildren () const |
const Node * | findChild (NodeRole R) const |
Find the first node with a corresponding role. | |
Node * | findChild (NodeRole R) |
Public Member Functions inherited from clang::syntax::Node | |
Node (const Node &)=delete | |
Nodes cannot simply be copied without violating tree invariants. | |
Node & | operator= (const Node &)=delete |
Node (Node &&)=delete | |
Idiomatically, nodes are allocated on an Arena and never moved. | |
Node & | operator= (Node &&)=delete |
NodeKind | getKind () const |
NodeRole | getRole () const |
bool | isDetached () const |
Whether the node is detached from a tree, i.e. does not have a parent. | |
bool | isOriginal () const |
Whether the node was created from the AST backed by the source code rather than added later through mutation APIs or created with factory functions. | |
bool | canModify () const |
If this function return false, the tree cannot be modified because there is no reasonable way to produce the corresponding textual replacements. | |
const Tree * | getParent () const |
Tree * | getParent () |
const Node * | getNextSibling () const |
Node * | getNextSibling () |
const Node * | getPreviousSibling () const |
Node * | getPreviousSibling () |
std::string | dump (const TokenManager &SM) const |
Dumps the structure of a subtree. For debugging and testing purposes. | |
std::string | dumpTokens (const TokenManager &SM) const |
Dumps the tokens forming this subtree. | |
void | assertInvariants () const |
Asserts invariants on this node of the tree and its immediate children. | |
void | assertInvariantsRecursive () const |
Runs checkInvariants on all nodes in the subtree. No-op if NDEBUG is set. | |
Static Public Member Functions | |
static bool | classof (const Node *N) |
Static Public Member Functions inherited from clang::syntax::Tree | |
static bool | classof (const Node *N) |
Additional Inherited Members | |
Protected Member Functions inherited from clang::syntax::Tree | |
Node (NodeKind Kind) | |
Newly created nodes are detached from a tree, parent and sibling links are set when the node is added as a child to another one. | |
Node (const Node &)=delete | |
Nodes cannot simply be copied without violating tree invariants. | |
Node (Node &&)=delete | |
Idiomatically, nodes are allocated on an Arena and never moved. | |
Protected Member Functions inherited from clang::syntax::Node | |
Node (NodeKind Kind) | |
Newly created nodes are detached from a tree, parent and sibling links are set when the node is added as a child to another one. | |
~Node ()=default | |
Nodes are allocated on Arenas; the destructor is never called. | |
A list of Elements separated or terminated by a fixed token.
This type models the following grammar construct: delimited-list(element, delimiter, termination, canBeEmpty)
|
strong |
bool syntax::List::canBeEmpty | ( | ) | const |
Whether this list can be empty in syntactically and semantically correct code.
This list may be empty when the source code has errors even if canBeEmpty() returns false.
Definition at line 427 of file Tree.cpp.
References getKind().
clang::tok::TokenKind syntax::List::getDelimiterTokenKind | ( | ) | const |
std::vector< syntax::Node * > syntax::List::getElementsAsNodes | ( | ) |
Returns the elements of the list.
Missing elements are represented as null pointers in the same way as in the return value of getElementsAsNodesAndDelimiters()
.
Definition at line 357 of file Tree.cpp.
References clang::C, clang::syntax::ListDelimiter, clang::syntax::ListElement, MaybeTerminated, Separated, and Terminated.
Referenced by clang::syntax::NestedNameSpecifier::getSpecifiers().
std::vector< syntax::List::ElementAndDelimiter< syntax::Node > > syntax::List::getElementsAsNodesAndDelimiters | ( | ) |
Returns the elements and corresponding delimiters.
Missing elements and delimiters are represented as null pointers.
For example, in a separated list: "a, b, c" <=> [("a" , ","), ("b" , "," ), ("c" , null)] "a, , c" <=> [("a" , ","), (null, "," ), ("c" , null)] "a, b c" <=> [("a" , ","), ("b" , null), ("c" , null)] "a, b," <=> [("a" , ","), ("b" , "," ), (null, null)]
In a terminated or maybe-terminated list: "a; b; c;" <=> [("a" , ";"), ("b" , ";" ), ("c" , ";" )] "a; ; c;" <=> [("a" , ";"), (null, ";" ), ("c" , ";" )] "a; b c;" <=> [("a" , ";"), ("b" , null), ("c" , ";" )] "a; b; c" <=> [("a" , ";"), ("b" , ";" ), ("c" , null)]
Definition at line 312 of file Tree.cpp.
References clang::C, clang::syntax::ListDelimiter, clang::syntax::ListElement, MaybeTerminated, Separated, and Terminated.
syntax::List::TerminationKind syntax::List::getTerminationKind | ( | ) | const |