Lines Matching refs:G

43   SortByNextSymbol(const Grammar &G) : G(G) {}  in SortByNextSymbol()
45 if (L.hasNext() && R.hasNext() && L.next(G) != R.next(G)) in operator ()()
46 return L.next(G) < R.next(G); in operator ()()
51 const Grammar &G; member
63 State closure(ItemSet Queue, const Grammar &G) { in closure() argument
74 SymbolID NextSym = ExpandingItem.next(G); in closure()
77 auto RRange = G.table().Nonterminals[NextSym].RuleRange; in closure()
79 Item NewItem = Item::start(RID, G); in closure()
85 llvm::sort(Queue, SortByNextSymbol(G)); in closure()
99 nextAvailableKernelItems(const State &S, const Grammar &G) { in nextAvailableKernelItems() argument
104 SymbolID AdvancedSymbol = AllItems.front().next(G); in nextAvailableKernelItems()
105 auto Batch = AllItems.take_while([AdvancedSymbol, &G](const Item &I) { in nextAvailableKernelItems()
107 return I.next(G) == AdvancedSymbol; in nextAvailableKernelItems()
124 availableRecovery(const State &S, const Grammar &G) { in availableRecovery() argument
127 const auto &Rule = G.lookupRule(I.rule()); in availableRecovery()
139 std::string Item::dump(const Grammar &G) const { in dump()
140 const auto &Rule = G.lookupRule(RID); in dump()
144 Results.push_back(G.symbolName(SID)); in dump()
147 return llvm::formatv("{0} := {1} • {2}{3}", G.symbolName(Rule.Target), in dump()
154 std::string State::dump(const Grammar &G, unsigned Indent) const { in dump() argument
158 OS.indent(Indent) << llvm::formatv("{0}\n", Item.dump(G)); in dump()
162 std::string LRGraph::dumpForTests(const Grammar &G) const { in dumpForTests()
168 OS << States[ID].dump(G, /*Indent*/ 4); in dumpForTests()
171 OS << llvm::formatv("{0} ->[{1}] {2}\n", E.Src, G.symbolName(E.Label), in dumpForTests()
177 LRGraph LRGraph::buildLR0(const Grammar &G) { in buildLR0() argument
180 Builder(const Grammar &G) : G(G) {} in buildLR0() argument
189 States.push_back(closure(KernelItems, G)); in buildLR0()
229 const Grammar &G; in buildLR0() member in clang::pseudo::LRGraph::buildLR0::Builder
231 } Builder(G); in buildLR0()
235 auto RRange = G.table().Nonterminals[G.underscore()].RuleRange; in buildLR0()
237 auto StartState = std::vector<Item>{Item::start(RID, G)}; in buildLR0()
242 const Rule &StartRule = G.lookupRule(RID); in buildLR0()
251 for (auto Next : nextAvailableKernelItems(Builder.find(StateID), G)) { in buildLR0()
257 for (auto Recovery : availableRecovery(Builder.find(StateID), G)) in buildLR0()