]> git.corax.cc Git - ccc/commitdiff
doc: Add graph of the hierarchy of grammatical structures
authorMatthias Kruk <m@m10k.eu>
Tue, 7 Jul 2020 13:10:02 +0000 (22:10 +0900)
committerMatthias Kruk <m@m10k.eu>
Tue, 7 Jul 2020 13:10:02 +0000 (22:10 +0900)
doc/parser.dot [new file with mode: 0644]

diff --git a/doc/parser.dot b/doc/parser.dot
new file mode 100644 (file)
index 0000000..e477129
--- /dev/null
@@ -0,0 +1,94 @@
+digraph parser {
+  expr        [label = "expression"];
+  assignexpr  [label = "assignment-expression", fillcolor="#26c326", style=filled];
+  condexpr    [label = "conditional-expression", fillcolor="#26c326", style=filled];
+  assignop    [label = "assignment-operator", fillcolor="#26c326", style=filled];
+  unaryexpr   [label = "unary-expression"];
+
+  pfixexpr    [label = "postfix-expression"];
+  castexpr    [label = "cast-expression", fillcolor="#26c326", style=filled];
+  unaryop     [label = "unary-operator", fillcolor="#d2d2d2", style=filled];
+
+  priexpr     [label = "primary-expression", fillcolor="#26c326", style=filled];
+  argexprlist [label = "argument-expression-list"];
+
+  identifier  [label = "identifier", fillcolor="#26c326", style=filled];
+  constant    [label = "constant", fillcolor="#26c326", style=filled];
+  string      [label = "string", fillcolor="#26c326", style=filled];
+  typename    [label = "type-name"];
+
+  logorexpr   [label = "logical-OR-expression", fillcolor="#26c326", style=filled];
+  logandexpr  [label = "logical-AND-expression", fillcolor="#26c326", style=filled];
+  incorexpr   [label = "inclusive-OR-expression", fillcolor="#26c326", style=filled];
+  excorexpr   [label = "exclusive-OR-expression", fillcolor="#26c326", style=filled];
+  andexpr     [label = "AND-expression", fillcolor="#26c326", style=filled];
+  eqexpr      [label = "equality-expression", fillcolor="#26c326", style=filled];
+  relexpr     [label = "relational-expression", fillcolor="#26c326", style=filled];
+  shiftexpr   [label = "shift-expression", fillcolor="#26c326", style=filled];
+  addexpr     [label = "additive-expression", fillcolor="#26c326", style=filled];
+  mulexpr     [label = "multiplicative-expression", fillcolor="#26c326", style=filled];
+
+  expr -> assignexpr;
+  assignexpr -> condexpr;
+  assignexpr -> unaryexpr;
+  assignexpr -> assignexpr;
+  assignexpr -> assignop;
+
+  unaryexpr -> unaryop;
+  unaryexpr -> castexpr;
+  unaryexpr -> pfixexpr;
+  unaryexpr -> unaryexpr;
+  unaryexpr -> typename;
+
+  condexpr -> logorexpr;
+  condexpr -> expr;
+  condexpr -> condexpr;
+
+  logorexpr -> logorexpr;
+  logorexpr -> logandexpr;
+
+  logandexpr -> logandexpr;
+  logandexpr -> incorexpr;
+
+  incorexpr -> incorexpr;
+  incorexpr -> excorexpr;
+
+  excorexpr -> excorexpr;
+  excorexpr -> andexpr;
+
+  andexpr -> andexpr;
+  andexpr -> eqexpr;
+
+  eqexpr -> relexpr;
+  eqexpr -> eqexpr;
+
+  relexpr -> shiftexpr;
+  relexpr -> relexpr;
+
+  shiftexpr -> addexpr;
+  shiftexpr -> shiftexpr;
+
+  addexpr -> addexpr;
+  addexpr -> mulexpr;
+
+  mulexpr -> castexpr;
+  mulexpr -> mulexpr;
+
+  castexpr -> unaryexpr;
+  castexpr -> castexpr;
+  castexpr -> typename;
+
+  pfixexpr -> priexpr;
+  pfixexpr -> pfixexpr;
+  pfixexpr -> expr;
+  pfixexpr -> identifier;
+  pfixexpr -> argexprlist;
+
+  argexprlist -> argexprlist;
+  argexprlist -> assignexpr;
+
+  priexpr -> identifier;
+  priexpr -> constant;
+  priexpr -> string;
+  priexpr -> expr;
+}