import of rt 3.0.4
[freeside.git] / rt / docs / design_docs / rql_parser_machine.graphviz
1
2 /* GraphViz graph representing the state diagram of the RQL parser.
3 */
4
5 digraph G {
6
7     PAREN -> PAREN;
8     PAREN -> KEYWORD;
9     PAREN -> AGGREG;
10
11     AGGREG -> KEYWORD;
12     AGGREG -> PAREN;
13
14     KEYWORD -> OP;
15
16     OP -> VALUE;
17
18     VALUE -> PAREN;
19     VALUE -> AGGREG;
20
21 /*
22     Blue lines represent added complexity of q[IN (x,y,z)] support.
23     The only place that the "blue tree" can be entered is at IN, and
24     exited at PAREN.
25 */
26     KEYWORD -> IN [color=blue];
27     IN -> PAREN [color=blue];
28     PAREN -> VALUE [color=blue];
29     VALUE -> COMMA [color=blue];
30     COMMA -> VALUE [color=blue]; 
31     VALUE -> PAREN [color=blue];
32 }