Lines Matching refs:syntax

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