diff options
Diffstat (limited to 'rt/docs/design_docs/rql_parser_machine.graphviz')
-rw-r--r-- | rt/docs/design_docs/rql_parser_machine.graphviz | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/rt/docs/design_docs/rql_parser_machine.graphviz b/rt/docs/design_docs/rql_parser_machine.graphviz new file mode 100644 index 0000000..36463ec --- /dev/null +++ b/rt/docs/design_docs/rql_parser_machine.graphviz @@ -0,0 +1,32 @@ + +/* GraphViz graph representing the state diagram of the RQL parser. +*/ + +digraph G { + + PAREN -> PAREN; + PAREN -> KEYWORD; + PAREN -> AGGREG; + + AGGREG -> KEYWORD; + AGGREG -> PAREN; + + KEYWORD -> OP; + + OP -> VALUE; + + VALUE -> PAREN; + VALUE -> AGGREG; + +/* + Blue lines represent added complexity of q[IN (x,y,z)] support. + The only place that the "blue tree" can be entered is at IN, and + exited at PAREN. +*/ + KEYWORD -> IN [color=blue]; + IN -> PAREN [color=blue]; + PAREN -> VALUE [color=blue]; + VALUE -> COMMA [color=blue]; + COMMA -> VALUE [color=blue]; + VALUE -> PAREN [color=blue]; +} |