sammccall accepted this revision.
sammccall added inline comments.

================
Comment at: clang/include/clang/Tooling/Syntax/Pseudo/Grammar.h:85
+  static constexpr unsigned SizeBits = 4;
+  static_assert(SizeBits + SymbolBits <= 16,
+                "Must be able to store symbol ID + size efficiently");
----------------
hokein wrote:
> sammccall wrote:
> > We're being quite fiddly with layout but actually pretty wasteful.
> > 
> > wc says 652 with 1323 total RHS elements on the RHS - average ~2.
> > So we could aim for 6 bytes per rule = 4KB but we're using 34 bytes per 
> > rule = 22KB.
> > 
> > Can't see a nice concrete way to achieve that though.
> Yes :(
> I'd keep it as-is (and decrease the MaxElements to 9). One idea is to use a 
> flat array as a center storage of all sequences, then Rule class just need an 
> index, and size. But there will be more data (annotations, hooks) in this 
> class, we could figure it out later.
> Yes :(
> I'd keep it as-is (and decrease the MaxElements to 9).
SGTM

> One idea is to use a flat array as a center storage of all sequences, then 
> Rule class just need an index, and size.

This makes APIs awkward though: Rule.seq() needs extra params to build an 
ArrayRef, unless you want to carry around a pointer to the big array (which 
gives back most of the size savings)


================
Comment at: clang/lib/Tooling/Syntax/Pseudo/GrammarBNF.cpp:140
+    for (llvm::StringRef Line : llvm::split(Lines, '\n')) {
+      Line = Line.trim();
+      // Strip anything coming after the '#' (comment).
----------------
move this after the take_while, so that `   # this is a comment` is still 
skipped?


================
Comment at: clang/lib/Tooling/Syntax/Pseudo/GrammarBNF.cpp:153
+
+  bool ParseLine(llvm::StringRef Line, RuleSpec &Out) {
+    auto Parts = Line.split(":=");
----------------
ParseLine -> parseLine


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D114790

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

Reply via email to