--- /dev/null
+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;
+}