sammccall accepted this revision.
sammccall added a comment.
This revision is now accepted and ready to land.
Very nice!
And change to compiled grammar size is small.
Would including *every* nonterminal as a start symbol would blow the size up a 
bit?
This would eliminate some complexity in the interface.



================
Comment at: clang-tools-extra/pseudo/include/clang-pseudo/GLR.h:125
 };
-// Parse the given token stream with the GLR algorithm, and return a forest 
node
-// of the start symbol.
----------------
From the caller's perspective, is "target symbol" really a clearer name than 
"start symbol"? The latter seems like more common terminology.


================
Comment at: clang-tools-extra/pseudo/include/clang-pseudo/GLR.h:126
+// Parses the given token stream as the Target symbol with the GLR algorithm,
+// and returns a forest node of the target symbol.
 //
----------------
// A rule `_ := Target` must exist for the chosen target symbol.


================
Comment at: clang-tools-extra/pseudo/lib/LRGraph.cpp:163
 LRGraph LRGraph::buildLR0(const Grammar &G) {
+  std::vector<std::pair<SymbolID, StateID>> StartStates;
   class Builder {
----------------
might be clearer just to make this a member of the builder, and add a 
`addStartState(SymbolID, StateID)` method?


================
Comment at: clang-tools-extra/pseudo/lib/LRTableBuild.cpp:43
 public:
+  Builder(std::vector<std::pair<SymbolID, StateID>> StartStates)
+      : StartStates(std::move(StartStates)) {}
----------------
nit: since we're ultimately copying this array to call the constructor, maybe 
just take ArrayRef here?


================
Comment at: clang-tools-extra/pseudo/lib/cxx.bnf:28
 #
-# _ serves as a "fake" start symbol, coming with real grammar symbols.
+# _ serves as a "fake" start symbol, coming with real grammar symbols which we
+# target to parse.
----------------
Maybe "_ lists all the start-symbols which we support parsing".


================
Comment at: clang-tools-extra/pseudo/tool/ClangPseudo.cpp:41
 static opt<bool> PrintForest("print-forest", desc("Print parse forest"));
+static opt<std::string> ParseSymbol("parse-symbol",
+                                    desc("specify the target symbol to parse"),
----------------
-start-symbol might be more common


================
Comment at: clang-tools-extra/pseudo/tool/ClangPseudo.cpp:57
+static clang::pseudo::SymbolID
+findNonterminalID(llvm::StringRef Name, const clang::pseudo::Grammar &G) {
+  for (clang::pseudo::SymbolID ID = 0; ID < G.table().Nonterminals.size(); 
++ID)
----------------
nit: just findNonterminal()? rather than echoing the type


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D125006

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

Reply via email to