iterative-parser-states-diagram.dot 1.87 KB
Newer Older
1
digraph {
2 3 4 5 6 7 8 9
    fontname="Inconsolata, Consolas"
    fontsize=10
    margin="0,0"
    penwidth=0.0
    
    node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5]
    edge [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5]

10
    node [shape = doublecircle]; Start; Finish;
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
    node [shape = box; style = "rounded, filled"; fillcolor=white ];

    Start -> ArrayInitial [label=" ["];
    Start -> ObjectInitial [label=" {"];

    subgraph clusterArray {
        margin="10,10"
        style=filled
        fillcolor=gray95
        label = "Array"
        
        ArrayInitial; Element; ElementDelimiter; ArrayFinish;
    }

    subgraph clusterObject {
        margin="10,10"
        style=filled
        fillcolor=gray95
        label = "Object"

        ObjectInitial; MemberKey; KeyValueDelimiter; MemberValue; MemberDelimiter; ObjectFinish;
    }

    ArrayInitial -> ArrayInitial [label="["];
    ArrayInitial -> ArrayFinish [label=" ]"];
    ArrayInitial -> ObjectInitial [label="{", constraint=false];
    ArrayInitial -> Element [label="string\nfalse\ntrue\nnull\nnumber"];
38

39 40
    Element -> ArrayFinish [label="]"];
    Element -> ElementDelimiter [label=","];
41

42 43 44 45 46 47
    ElementDelimiter -> ArrayInitial [label=" ["];
    ElementDelimiter -> ObjectInitial [label="{"];
    ElementDelimiter -> Element [label="string\nfalse\ntrue\nnull\nnumber"];

    ObjectInitial -> ObjectFinish [label=" }"];
    ObjectInitial -> MemberKey [label=" string "];
48 49 50

    MemberKey -> KeyValueDelimiter [label=":"];

51 52 53
    KeyValueDelimiter -> ArrayInitial [label="["];
    KeyValueDelimiter -> ObjectInitial [label=" {"];
    KeyValueDelimiter -> MemberValue [label=" string\n false\n true\n null\n number"];
54 55 56 57

    MemberValue -> ObjectFinish [label="}"];
    MemberValue -> MemberDelimiter [label=","];

58
    MemberDelimiter -> MemberKey [label=" string "];
59 60 61 62

    ArrayFinish -> Finish;
    ObjectFinish -> Finish;
}