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::Arena::Arena(SourceManager &SourceMgr, const LangOptions &LangOpts, in Arena()
39 const syntax::TokenBuffer &syntax::Arena::getTokenBuffer() const { in getTokenBuffer()
43 std::pair<FileID, ArrayRef<syntax::Token>>
44 syntax::Arena::lexBuffer(std::unique_ptr<llvm::MemoryBuffer> Input) { in lexBuffer()
51 syntax::Leaf::Leaf(const syntax::Token *Tok) : Node(NodeKind::Leaf), Tok(Tok) { in Leaf()
55 syntax::Node::Node(NodeKind Kind) in Node()
62 bool syntax::Node::isDetached() const { in isDetached()
66 void syntax::Node::setRole(NodeRole NR) { in setRole()
70 void syntax::Tree::appendChildLowLevel(Node *Child, NodeRole Role) { in appendChildLowLevel()
78 void syntax::Tree::appendChildLowLevel(Node *Child) { in appendChildLowLevel()
94 void syntax::Tree::prependChildLowLevel(Node *Child, NodeRole Role) { in prependChildLowLevel()
102 void syntax::Tree::prependChildLowLevel(Node *Child) { in prependChildLowLevel()
118 void syntax::Tree::replaceChildRangeLowLevel(Node *Begin, Node *End, in replaceChildRangeLowLevel()
192 static void dumpLeaf(raw_ostream &OS, const syntax::Leaf *L, in dumpLeaf()
204 static void dumpNode(raw_ostream &OS, const syntax::Node *N, in dumpNode()
206 auto DumpExtraInfo = [&OS](const syntax::Node *N) { in dumpNode()
207 if (N->getRole() != syntax::NodeRole::Unknown) in dumpNode()
216 if (const auto *L = dyn_cast<syntax::Leaf>(N)) { in dumpNode()
225 const auto *T = cast<syntax::Tree>(N); in dumpNode()
230 for (const syntax::Node &It : T->getChildren()) { in dumpNode()
250 std::string syntax::Node::dump(const SourceManager &SM) const { in dump()
257 std::string syntax::Node::dumpTokens(const SourceManager &SM) const { in dumpTokens()
260 traverse(this, [&](const syntax::Node *N) { in dumpTokens()
261 if (const auto *L = dyn_cast<syntax::Leaf>(N)) { in dumpTokens()
269 void syntax::Node::assertInvariants() const { in assertInvariants()
306 void syntax::Node::assertInvariantsRecursive() const { in assertInvariantsRecursive()
308 traverse(this, [&](const syntax::Node *N) { N->assertInvariants(); }); in assertInvariantsRecursive()
312 const syntax::Leaf *syntax::Tree::findFirstLeaf() const { in findFirstLeaf()
314 if (const auto *L = dyn_cast<syntax::Leaf>(&C)) in findFirstLeaf()
316 if (const auto *L = cast<syntax::Tree>(C).findFirstLeaf()) in findFirstLeaf()
322 const syntax::Leaf *syntax::Tree::findLastLeaf() const { in findLastLeaf()
324 if (const auto *L = dyn_cast<syntax::Leaf>(C)) in findLastLeaf()
326 if (const auto *L = cast<syntax::Tree>(C)->findLastLeaf()) in findLastLeaf()
332 const syntax::Node *syntax::Tree::findChild(NodeRole R) const { in findChild()
340 std::vector<syntax::List::ElementAndDelimiter<syntax::Node>>
341 syntax::List::getElementsAsNodesAndDelimiters() { in getElementsAsNodesAndDelimiters()
345 std::vector<syntax::List::ElementAndDelimiter<Node>> Children; in getElementsAsNodesAndDelimiters()
346 syntax::Node *ElementWithoutDelimiter = nullptr; in getElementsAsNodesAndDelimiters()
349 case syntax::NodeRole::ListElement: { in getElementsAsNodesAndDelimiters()
356 case syntax::NodeRole::ListDelimiter: { in getElementsAsNodesAndDelimiters()
357 Children.push_back({ElementWithoutDelimiter, cast<syntax::Leaf>(&C)}); in getElementsAsNodesAndDelimiters()
368 case syntax::List::TerminationKind::Separated: { in getElementsAsNodesAndDelimiters()
372 case syntax::List::TerminationKind::Terminated: in getElementsAsNodesAndDelimiters()
373 case syntax::List::TerminationKind::MaybeTerminated: { in getElementsAsNodesAndDelimiters()
386 std::vector<syntax::Node *> syntax::List::getElementsAsNodes() { in getElementsAsNodes()
390 std::vector<syntax::Node *> Children; in getElementsAsNodes()
391 syntax::Node *ElementWithoutDelimiter = nullptr; in getElementsAsNodes()
394 case syntax::NodeRole::ListElement: { in getElementsAsNodes()
401 case syntax::NodeRole::ListDelimiter: { in getElementsAsNodes()
412 case syntax::List::TerminationKind::Separated: { in getElementsAsNodes()
416 case syntax::List::TerminationKind::Terminated: in getElementsAsNodes()
417 case syntax::List::TerminationKind::MaybeTerminated: { in getElementsAsNodes()
428 clang::tok::TokenKind syntax::List::getDelimiterTokenKind() const { in getDelimiterTokenKind()
442 syntax::List::TerminationKind syntax::List::getTerminationKind() const { in getTerminationKind()
456 bool syntax::List::canBeEmpty() const { in canBeEmpty()