hokein added inline comments.

================
Comment at: clang-tools-extra/pseudo/lib/GLR.cpp:298
   auto Pop = [&](const GSS::Node *Head, RuleID RID) {
-    LLVM_DEBUG(llvm::dbgs() << "  Pop " << Params.G.dumpRule(RID) << "\n");
-    const auto &Rule = Params.G.lookupRule(RID);
+    LLVM_DEBUG(llvm::dbgs() << "  Pop " << Params.Lang.G.dumpRule(RID) << 
"\n");
+    const auto &Rule = Params.Lang.G.lookupRule(RID);
----------------
sammccall wrote:
> I'm not sure exactly what the best thing to do about this is, but 
> `Params.Lang.G` is hard to read - it's a long complicated name that doesn't 
> even name the thing.
> 
> I think probably we should split ParseParams up instead of nesting ParseLang 
> in it, e.g.
> 
> ```
> struct GLRStorage { ForestArena&, GSS }
> glrReduce(vector<ParseStep>, const ParseLang&, GLStorage&, NewHeadCallback)
> ```
> 
> Or even put a forest pointer in the GSS just for convenience.
Changed the signature of glrShift/Reduce/Parse.




================
Comment at: clang-tools-extra/pseudo/lib/GLR.cpp:306
+          auto It = Params.Lang.Guards.find(Rule.Guard);
+          assert(It != Params.Lang.Guards.end() && "missing guard!");
+          if (!It->getSecond()(TempSequence, Tokens))
----------------
sammccall wrote:
> I think diagnosing missing guards but then treating them as always-passing is 
> less surprising and more ergonomic while modifying a grammar
I wanted to make this as a contract  (guard in each rule must refer to a valid 
extension function) in GLR parser.

I think loosing the restriction is also fine -- the only downside I can see is 
that if we have a typo guard in the grammar file, which we don't have a 
corresponding function, the parser will run and emit confusing results. We can 
fix it by adding "missing guard function" diagnostics.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D127448/new/

https://reviews.llvm.org/D127448

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to