sammccall marked 7 inline comments as done.
sammccall added a comment.

Thanks for the review!



================
Comment at: clang-tools-extra/pseudo/tool/CMakeLists.txt:29
+add_custom_target(clang-pseudo-resources DEPENDS HTMLForestResources.inc)
+add_dependencies(clang-pseudo clang-pseudo-resources)
----------------
hokein wrote:
> This likely introduces some pain. (An alternative is to inline the content of 
> `.js`, `.css`, `html` in the cpp directly, but it is awkward).
> 
> Would be nice to prepare an internal BUILD file change when landing (if you 
> don't have time, I'm happy to help with it).
> This likely introduces some pain. (An alternative is to inline the content of 
> `.js`, `.css`, `html` in the cpp directly, but it is awkward).
Yeah, I think this is unreasonably difficult to edit, unfortunately - no editor 
understands JS/CSS/html inside string literals. (We can probably get away with 
the HTML, but the JS is a significant amount of code)

(In fact had a second mode where the resources were read from disk without a 
recompile, which was faster while working on it, but I don't think it's 
necessary - inotifywait loop is enough)
 
> Would be nice to prepare an internal BUILD file change when landing (if you 
> don't have time, I'm happy to help with it).
Good point, I'll prepare that.


================
Comment at: clang-tools-extra/pseudo/tool/HTMLForest.cpp:64
+  void write() {
+    Out << "<!doctype html>\n<html>\n<head>\n<title>HTMLForest</title>\n";
+    Out << "<script>" << HTMLForest_js << "</script>\n";
----------------
hokein wrote:
> nit: it is clearer to use use `llvm::formatv`
> 
> ```
> llvm::formatv(R"html(
> ...
> )html", js, css, forest_json, code, html);.
> ```
I guess, but:
 - a long formatv string means it's hard to spot which {n} corresponds to which 
arg
 - we still have to break up the formatv for writeForestJSON() etc, which 
doesn't seem like a natural place to break.

Added a small tag(name, block) function instead which I think makes the 
structure easier to follow (basically the clang-formatted code shows the HTML 
structure)


================
Comment at: clang-tools-extra/pseudo/tool/HTMLForest.cpp:115
+  llvm::DenseMap<const ForestNode *, unsigned> Index;
+  std::vector<std::pair<const ForestNode *, /*End*/ Token::Index>> Queue;
+  auto AssignID = [&](const ForestNode* N, Token::Index End) -> unsigned {
----------------
hokein wrote:
> I'd suggest renaming to `Array` and adding comment for the `Index` (it is the 
> index in the `Queue`), `Queue` leaves an impression to me that we will do 
> some pop_back.
I agree about Queue.
`Array` is confusing as this isn't actually either a C++ array or a 
`json::Array`.
Chose `Sequence` to emphasize that it's the order we're establishing.


================
Comment at: clang-tools-extra/pseudo/tool/HTMLForest.cpp:170
+
+// We only accept the derived stream here. Would it be useful or confusing
+// to allow the original stream instead?
----------------
hokein wrote:
> Having derived stream is fine to me at the moment, particularly useful for 
> debugging.
> 
> But as a regular user, I would prefer to see the original token stream (the 
> derived stream is confusing, as a regular user doesn't know how pseudoparser 
> work inside).
Yeah, I think we'll want this later changed to FIXME.
We will have to assume some invariants to get it (i.e. that the derived tokens 
are basically a same-order subset of the original ones).
Not sure if "regular users" will ever see this tool :-) I'm not sure it extends 
well to forests, we may want something else.


================
Comment at: clang-tools-extra/pseudo/tool/HTMLForest.css:50
+}
+#i_kind {
+  float: right;
----------------
hokein wrote:
> nit: just an idea we could use different background color for different 
> forest node kind.
Done, and made the colors of the nodes in the tree match.
I like it, hope it's not too rainbow-y


================
Comment at: clang-tools-extra/pseudo/tool/HTMLForest.css:63
+
+#tree {
+  flex-grow: 0;
----------------
hokein wrote:
> nit: can we make the tree and code view resizable?  so that I can adjust the 
> width of tree/code view.
`resize: horizontal` seems to do the trick


================
Comment at: clang-tools-extra/pseudo/tool/HTMLForest.html:1
+<div id="tree"><ul></ul></div>
+<pre id="code"></pre>
----------------
hokein wrote:
> I think it might be better to move these `.html, .css, .js` files to a 
> separate directory  `tool/resources` rather than `tool`.
the tool/ directory is ~empty or I would... happy to add some more structure if 
it gets at all crowded


================
Comment at: clang-tools-extra/pseudo/tool/HTMLForest.html:13
+  <section>
+    <div id="i_context"></div>
+  </section>
----------------
hokein wrote:
> nit: maybe name it `i_context_stack`, I had no idea what does the `context` 
> mean until I read the actual implementation. 
Renamed to `i_ancestors` which seems explicit without being long


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D130004

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

Reply via email to