Lines Matching refs:syntax

19 static void traverse(const syntax::Node *N,
20 llvm::function_ref<void(const syntax::Node *)> Visit) {
21 if (auto *T = dyn_cast<syntax::Tree>(N)) {
22 for (const syntax::Node &C : T->getChildren())
27 static void traverse(syntax::Node *N,
28 llvm::function_ref<void(syntax::Node *)> Visit) {
29 traverse(static_cast<const syntax::Node *>(N), [&](const syntax::Node *N) {
30 Visit(const_cast<syntax::Node *>(N));
35 syntax::Leaf::Leaf(syntax::TokenManager::Key K) : Node(NodeKind::Leaf), K(K) {}
37 syntax::Node::Node(NodeKind Kind)
44 bool syntax::Node::isDetached() const {
48 void syntax::Node::setRole(NodeRole NR) {
52 void syntax::Tree::appendChildLowLevel(Node *Child, NodeRole Role) {
60 void syntax::Tree::appendChildLowLevel(Node *Child) {
76 void syntax::Tree::prependChildLowLevel(Node *Child, NodeRole Role) {
84 void syntax::Tree::prependChildLowLevel(Node *Child) {
100 void syntax::Tree::replaceChildRangeLowLevel(Node *Begin, Node *End,
174 static void dumpNode(raw_ostream &OS, const syntax::Node *N,
175 const syntax::TokenManager &TM, llvm::BitVector IndentMask) {
176 auto DumpExtraInfo = [&OS](const syntax::Node *N) {
177 if (N->getRole() != syntax::NodeRole::Unknown)
186 if (const auto *L = dyn_cast<syntax::Leaf>(N)) {
195 const auto *T = cast<syntax::Tree>(N);
200 for (const syntax::Node &It : T->getChildren()) {
220 std::string syntax::Node::dump(const TokenManager &TM) const {
227 std::string syntax::Node::dumpTokens(const TokenManager &TM) const {
230 traverse(this, [&](const syntax::Node *N) {
231 if (const auto *L = dyn_cast<syntax::Leaf>(N)) {
239 void syntax::Node::assertInvariants() const {
277 void syntax::Node::assertInvariantsRecursive() const {
279 traverse(this, [&](const syntax::Node *N) { N->assertInvariants(); });
283 const syntax::Leaf *syntax::Tree::findFirstLeaf() const {
285 if (const auto *L = dyn_cast<syntax::Leaf>(&C))
287 if (const auto *L = cast<syntax::Tree>(C).findFirstLeaf())
293 const syntax::Leaf *syntax::Tree::findLastLeaf() const {
295 if (const auto *L = dyn_cast<syntax::Leaf>(C))
297 if (const auto *L = cast<syntax::Tree>(C)->findLastLeaf())
303 const syntax::Node *syntax::Tree::findChild(NodeRole R) const {
311 std::vector<syntax::List::ElementAndDelimiter<syntax::Node>>
312 syntax::List::getElementsAsNodesAndDelimiters() {
316 std::vector<syntax::List::ElementAndDelimiter<Node>> Children;
317 syntax::Node *ElementWithoutDelimiter = nullptr;
320 case syntax::NodeRole::ListElement: {
327 case syntax::NodeRole::ListDelimiter: {
328 Children.push_back({ElementWithoutDelimiter, cast<syntax::Leaf>(&C)});
339 case syntax::List::TerminationKind::Separated: {
343 case syntax::List::TerminationKind::Terminated:
344 case syntax::List::TerminationKind::MaybeTerminated: {
357 std::vector<syntax::Node *> syntax::List::getElementsAsNodes() {
361 std::vector<syntax::Node *> Children;
362 syntax::Node *ElementWithoutDelimiter = nullptr;
365 case syntax::NodeRole::ListElement: {
372 case syntax::NodeRole::ListDelimiter: {
383 case syntax::List::TerminationKind::Separated: {
387 case syntax::List::TerminationKind::Terminated:
388 case syntax::List::TerminationKind::MaybeTerminated: {
399 clang::tok::TokenKind syntax::List::getDelimiterTokenKind() const {
413 syntax::List::TerminationKind syntax::List::getTerminationKind() const {
427 bool syntax::List::canBeEmpty() const {