summaryrefslogtreecommitdiff
path: root/rt/docs/design_docs/rql_parser_machine.graphviz
blob: 36463ecc9280d025e3ababbf6869d2c931eafd0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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];
}