// Generated by pandoc-plot 1.5.5

digraph CodequeueProcess {
        graph [
                label="Code queueing process"
                labelloc="t"
                fontname="Helvetica,Arial,sans-serif"
        ]
        
        node [
                fontname="Helvetica,Arial,sans-serif"
                shape=record
                style=filled
                fillcolor=gray95
        ]


        Codequeue0 [
                shape=plain
                label=<<table border="0" cellborder="1" cellspacing="0" cellpadding="4">
                        <tr> <td> <b>Code queue (state 0)    </b> </td> </tr>
                        <tr> <td>
                                <table border="0" cellborder="0" cellspacing="0" >
                                        <tr> <td port="ss1" align="left" >        <i>Empty queue</i>    </td> </tr>
                                </table>
                        </td> </tr>

                </table>>
        ]
        Codequeue0 -> Codequeue1 [xlabel="addInstr() "]

        Codequeue1 [
                shape=plain
                label=<<table border="0" cellborder="1" cellspacing="0" cellpadding="4">
                        <tr> <td> <b>Code queue (state 1)</b>     </td> </tr>
                        <tr> <td>
                                <table border="0" cellborder="0" cellspacing="0" >
                                        <tr> <td port="ss1" align="left" >- LiteralValue</td> </tr>
                                </table>
                        </td> </tr>

                </table>>
                
                
        ]
        Codequeue1:ss1 -> cl1_value

        subgraph clusterLiteral
        {
            style=filled;
            color=lightgrey;
            cl1_value [label="value: 1"]
            label = "LiteralValue";
        }
        
        subgraph clusterFuncCall
        {
            style=filled;
            color=lightgrey;
            cl2_value [label="symbol: func"]
            label = "FuncCall";
        }
        

        edge [arrowhead=vee]
        Codequeue1 -> Codequeue2 [xlabel="addInstr() "]
        
        Codequeue2 [
                shape=plain
                label=<<table border="0" cellborder="1" cellspacing="0" cellpadding="4">
                        <tr> <td> <b>Code queue (state 2)    </b> </td> </tr>
                        <tr> <td>
                                <table border="0" cellborder="0" cellspacing="0" >
                                        <tr> <td port="ss1" align="left" >- FuncCall</td> </tr>
                                        <tr> <td port="ss2" align="left" >- LiteralValue</td> </tr>
                                </table>
                        </td> </tr>

                </table>>
        ]
        Codequeue2:ss1 -> cl2_value
        Codequeue2:ss2 -> cl1_value
        
        edge [arrowhead=vee]
        Codequeue2 -> Codequeue3 [xlabel="popInstr() "]
        
        Codequeue3 [
                shape=plain
                label=<<table border="0" cellborder="1" cellspacing="0" cellpadding="4">
                        <tr> <td> <b>Code queue (state 3)    </b> </td> </tr>
                        <tr> <td>
                                <table border="0" cellborder="0" cellspacing="0" >
                                        <tr> <td port="ss1" align="left" >- LiteralValue</td> </tr>
                                </table>
                        </td> </tr>

                </table>>
        ]
        Codequeue3:ss2 -> cl1_value
        
        edge [arrowhead=vee]
        Codequeue3 -> Codequeue4 [xlabel="popInstr() "]
        
        Codequeue4 [
                shape=plain
                label=<<table border="0" cellborder="1" cellspacing="0" cellpadding="4">
                        <tr> <td> <b>Code queue (state 4.0 )    </b> </td> </tr>
                        <tr> <td>
                                <table border="0" cellborder="0" cellspacing="0" >
                                        <tr> <td port="ss1" align="left" >        <i>Empty queue</i>    </td> </tr>
                                </table>
                        </td> </tr>

                </table>>
        ]
        
        edge [arrowhead=vee]
        Codequeue4 -> Codequeue5 [xlabel="addInstr() "]
        
        subgraph clusterBinaryOp
        {
            style=filled;
            color=lightgrey;
            label = "BinaryOp";
            cl3_value [label="operator: +"]
            leftInstr -> cl1_value
            rightInstr -> cl2_value
        }
        
        Codequeue5 [
                shape=plain
                label=<<table border="0" cellborder="1" cellspacing="0" cellpadding="4">
                        <tr> <td> <b>Code queue (state 4.1 )    </b> </td> </tr>
                        <tr> <td>
                                <table border="0" cellborder="0" cellspacing="0" >
                                        <tr> <td port="ss1" align="left" >- BinOpInstr</td> </tr>
                                </table>
                        </td> </tr>

                </table>>
        ]
        Codequeue5:ss1 -> cl3_value
}
Click here to see how this plot was generated.