sushi
sushi

Reputation: 95

GraphViz Dot Prevent Ranks From Overlapping

I'm using graphviz to visualize an AST tree in a compiler project I'm doing but a big problem with this is that the trees can get quite large, with some nodes having a lot of children. What this causes to happen is some parent nodes will be hugely separated from their parents, because their children force them to.

It looks like this: enter image description here

My question is, is it possible to make it so that all nodes with only one child stay directly above the node below it? So, the "decl f" node will be right above the "assignment" node, while that assignment node stays directly above the "additive" node.

I tried to do this with invisible edges and strong weights between, say in this case, the "decl f" and "additive" nodes, but that ends up offsetting the "assignment" node so it doesnt collide with the invisible edge.

The code is automatically generated, but I'll still put the output here. This output is for this graph: enter image description here

digraph "ast tree" {
    graph [bb="0,0,1767.5,377",
        bgcolor=grey12,
        concentrate=true,
        splines=true
    ];
    node [color=1,
        colorscheme=rdylbu11,
        fontcolor=white,
        height=0,
        label="\N",
        margins=0.08,
        shape=box,
        width=0
    ];
    edge [arrowhead=none,
        color=white,
        colorscheme=rdylbu11,
        constraint=true,
        penwidth=0.5
    ];
    1   [height=0.31944,
        label=program,
        pos="270,365.5",
        width=0.88889];
    2   [height=0.31944,
        label=function,
        pos="230,306.5",
        width=0.86111];
    1 -> 2  [color=1,
        pos="262.48,353.78 255.32,343.59 244.63,328.35 237.49,318.17"];
    10  [color=5,
        height=0.31944,
        label=function,
        pos="396,306.5",
        width=0.86111];
    1 -> 10 [color=5,
        pos="293.4,353.91 316.04,343.67 350.13,328.25 372.72,318.03"];
    3   [height=0.31944,
        label=scope,
        pos="135,247.5",
        width=0.69444];
    2 -> 3  [color=1,
        pos="212.13,294.78 195.15,284.59 169.75,269.35 152.79,259.17"];
    4   [height=0.31944,
        label=scope,
        pos="39,188.5",
        width=0.69444];
    3 -> 4  [color=1,
        pos="116.94,235.78 99.78,225.59 74.112,210.35 56.976,200.17"];
    8   [color=3,
        height=0.31944,
        label="return statement",
        pos="135,188.5",
        width=1.4583];
    3 -> 8  [color=3,
        pos="135,235.78 135,225.59 135,210.35 135,200.17"];
    5   [height=0.31944,
        label="decl a",
        pos="39,129.5",
        width=0.69444];
    4 -> 5  [color=1,
        pos="39,176.78 39,166.59 39,151.35 39,141.17"];
    6   [height=0.31944,
        label=assignment,
        pos="39,70.5",
        width=1.0833];
    5 -> 6  [color=1,
        pos="39,117.78 39,107.59 39,92.348 39,82.173"];
    7   [height=0.31944,
        label="literal 0",
        pos="39,11.5",
        width=0.77778];
    6 -> 7  [color=1,
        pos="39,58.779 39,48.588 39,33.348 39,23.173"];
    9   [color=3,
        height=0.31944,
        label="literal 0",
        pos="122,129.5",
        width=0.77778];
    8 -> 9  [color=3,
        pos="132.55,176.78 130.23,166.59 126.75,151.35 124.43,141.17"];
    11  [color=5,
        height=0.31944,
        label=scope,
        pos="445,247.5",
        width=0.69444];
    10 -> 11    [color=5,
        pos="405.22,294.78 413.98,284.59 427.08,269.35 435.82,259.17"];
    12  [color=5,
        height=0.31944,
        label="decl a",
        pos="253,188.5",
        width=0.69444];
    11 -> 12    [color=5,
        pos="419.9,239.05 383.1,228.12 314.91,207.88 278.11,196.95"];
    15  [color=7,
        height=0.31944,
        label="decl b",
        pos="331,188.5",
        width=0.70833];
    11 -> 15    [color=7,
        pos="423.82,235.91 403.35,225.67 372.5,210.25 352.06,200.03"];
    18  [color=9,
        height=0.31944,
        label="decl c",
        pos="404,188.5",
        width=0.69444];
    11 -> 18    [color=9,
        pos="437.29,235.78 429.96,225.59 419,210.35 411.68,200.17"];
    24  [color=4,
        height=0.31944,
        label="decl d",
        pos="486,188.5",
        width=0.70833];
    11 -> 24    [color=4,
        pos="452.71,235.78 460.04,225.59 471,210.35 478.32,200.17"];
    32  [color=3,
        height=0.31944,
        label="decl e",
        pos="575,188.5",
        width=0.69444];
    11 -> 32    [color=3,
        pos="469.15,235.91 492.5,225.67 527.68,210.25 550.98,200.03"];
    42  [color=6,
        height=0.31944,
        label="decl f",
        pos="662,188.5",
        width=0.66667];
    11 -> 42    [color=6,
        pos="470.32,239.85 512.47,228.78 596.47,206.71 637.84,195.85"];
    54  [color=2,
        height=0.31944,
        label="return statement",
        pos="767,188.5",
        width=1.4583];
    11 -> 54    [color=2,
        pos="470.27,242.03 522.68,232.75 644.17,211.24 714.36,198.82"];
    13  [color=5,
        height=0.31944,
        label=assignment,
        pos="207,129.5",
        width=1.0833];
    12 -> 13    [color=5,
        pos="244.35,176.78 236.12,166.59 223.82,151.35 215.61,141.17"];
    14  [color=5,
        height=0.31944,
        label="literal 0",
        pos="194,70.5",
        width=0.77778];
    13 -> 14    [color=5,
        pos="204.55,117.78 202.23,107.59 198.75,92.348 196.43,82.173"];
    16  [color=7,
        height=0.31944,
        label=assignment,
        pos="303,129.5",
        width=1.0833];
    15 -> 16    [color=7,
        pos="325.73,176.78 320.73,166.59 313.24,151.35 308.24,141.17"];
    17  [color=7,
        height=0.31944,
        label="idRHS a",
        pos="273,70.5",
        width=0.90278];
    16 -> 17    [color=7,
        pos="297.36,117.78 291.99,107.59 283.97,92.348 278.62,82.173"];
    19  [color=9,
        height=0.31944,
        label=assignment,
        pos="399,129.5",
        width=1.0833];
    18 -> 19    [color=9,
        pos="403.06,176.78 402.17,166.59 400.83,151.35 399.94,141.17"];
    20  [color=9,
        height=0.31944,
        label=additive,
        pos="354,70.5",
        width=0.83333];
    19 -> 20    [color=9,
        pos="390.54,117.78 382.49,107.59 370.46,92.348 362.43,82.173"];
    21  [color=9,
        height=0.31944,
        label="idRHS a",
        pos="214,11.5",
        width=0.90278];
    20 -> 21    [color=9,
        pos="328,58.912 302.85,48.674 264.96,33.25 239.87,23.031"];
    22  [color=11,
        height=0.31944,
        label="+",
        pos="277,11.5",
        width=0.34722];
    20 -> 22    [color=11,
        pos="339.52,58.779 325.23,48.201 303.59,32.183 289.88,22.037"];
    23  [color=2,
        height=0.31944,
        label="idRHS b",
        pos="341,11.5",
        width=0.91667];
    20 -> 23    [color=2,
        pos="351.55,58.779 349.23,48.588 345.75,33.348 343.43,23.173"];
    25  [color=4,
        height=0.31944,
        label=assignment,
        pos="495,129.5",
        width=1.0833];
    24 -> 25    [color=4,
        pos="487.69,176.78 489.3,166.59 491.71,151.35 493.31,141.17"];
    26  [color=4,
        height=0.31944,
        label=additive,
        pos="520,70.5",
        width=0.83333];
    25 -> 26    [color=4,
        pos="499.7,117.78 504.17,107.59 510.86,92.348 515.32,82.173"];
    27  [color=4,
        height=0.31944,
        label="idRHS a",
        pos="425,11.5",
        width=0.90278];
    26 -> 27    [color=4,
        pos="502.13,58.779 485.15,48.588 459.75,33.348 442.79,23.173"];
    28  [color=6,
        height=0.31944,
        label="+",
        pos="488,11.5",
        width=0.34722];
    26 -> 28    [color=6,
        pos="513.98,58.779 508.26,48.588 499.7,33.348 493.99,23.173"];
    29  [color=8,
        height=0.31944,
        label="idRHS b",
        pos="552,11.5",
        width=0.91667];
    26 -> 29    [color=8,
        pos="526.02,58.779 531.74,48.588 540.3,33.348 546.01,23.173"];
    30  [color=10,
        height=0.31944,
        label="+",
        pos="616,11.5",
        width=0.34722];
    26 -> 30    [color=10,
        pos="538.06,58.779 557.07,47.492 586.51,30.01 603.24,20.077"];
    31  [height=0.31944,
        label="idRHS c",
        pos="679,11.5",
        width=0.90278];
    26 -> 31    [color=1,
        pos="549.53,58.912 578.09,48.674 621.12,33.25 649.62,23.031"];
    33  [color=3,
        height=0.31944,
        label=assignment,
        pos="591,129.5",
        width=1.0833];
    32 -> 33    [color=3,
        pos="578.01,176.78 580.87,166.59 585.15,151.35 588,141.17"];
    34  [color=3,
        height=0.31944,
        label=additive,
        pos="921,70.5",
        width=0.83333];
    33 -> 34    [color=3,
        pos="630.26,119.74 633.21,119.13 636.15,118.55 639,118 730.37,100.48 839.18,83.682 890.86,75.944"];
    35  [color=3,
        height=0.31944,
        label="idRHS a",
        pos="762,11.5",
        width=0.90278];
    34 -> 35    [color=3,
        pos="891.47,58.912 862.91,48.674 819.88,33.25 791.38,23.031"];
    36  [color=5,
        height=0.31944,
        label="+",
        pos="825,11.5",
        width=0.34722];
    34 -> 36    [color=5,
        pos="902.94,58.779 883.93,47.492 854.49,30.01 837.76,20.077"];
    37  [color=7,
        height=0.31944,
        label="idRHS b",
        pos="889,11.5",
        width=0.91667];
    34 -> 37    [color=7,
        pos="914.98,58.779 909.26,48.588 900.7,33.348 894.99,23.173"];
    38  [color=9,
        height=0.31944,
        label="+",
        pos="953,11.5",
        width=0.34722];
    34 -> 38    [color=9,
        pos="927.02,58.779 932.74,48.588 941.3,33.348 947.01,23.173"];
    39  [color=11,
        height=0.31944,
        label="idRHS c",
        pos="1016,11.5",
        width=0.90278];
    34 -> 39    [color=11,
        pos="938.87,58.779 955.85,48.588 981.25,33.348 998.21,23.173"];
    40  [color=2,
        height=0.31944,
        label="+",
        pos="1079,11.5",
        width=0.34722];
    34 -> 40    [color=2,
        pos="951.1,60.584 979.15,51.97 1022,38.045 1058,23 1060.7,21.869 1063.6,20.544 1066.2,19.223"];
    41  [color=4,
        height=0.31944,
        label="idRHS d",
        pos="1143,11.5",
        width=0.91667];
    34 -> 41    [color=4,
        pos="951.4,61.694 992.85,51.053 1066.8,32.061 1109.7,21.048"];
    43  [color=6,
        height=0.31944,
        label=assignment,
        pos="687,129.5",
        width=1.0833];
    42 -> 43    [color=6,
        pos="666.7,176.78 671.17,166.59 677.86,151.35 682.32,141.17"];
    44  [color=6,
        height=0.31944,
        label=additive,
        pos="1449,70.5",
        width=0.83333];
    43 -> 44    [color=6,
        pos="726.21,119.42 729.17,118.89 732.13,118.41 735,118 998.22,80.853 1320.3,73.317 1418.9,71.845"];
    45  [color=6,
        height=0.31944,
        label="idRHS a",
        pos="1227,11.5",
        width=0.90278];
    44 -> 45    [color=6,
        pos="1418.6,61.694 1376.9,50.992 1302.3,31.843 1259.6,20.859"];
    46  [color=8,
        height=0.31944,
        label="+",
        pos="1290,11.5",
        width=0.34722];
    44 -> 46    [color=8,
        pos="1419,60.43 1391,51.709 1348.2,37.714 1312,23 1309,21.788 1305.9,20.371 1302.9,18.976"];
    47  [color=10,
        height=0.31944,
        label="idRHS b",
        pos="1354,11.5",
        width=0.91667];
    44 -> 47    [color=10,
        pos="1431.1,58.779 1414.1,48.588 1388.7,33.348 1371.8,23.173"];
    48  [height=0.31944,
        label="+",
        pos="1418,11.5",
        width=0.34722];
    44 -> 48    [color=1,
        pos="1443.2,58.779 1437.6,48.588 1429.3,33.348 1423.8,23.173"];
    49  [color=3,
        height=0.31944,
        label="idRHS c",
        pos="1481,11.5",
        width=0.90278];
    44 -> 49    [color=3,
        pos="1455,58.779 1460.7,48.588 1469.3,33.348 1475,23.173"];
    50  [color=5,
        height=0.31944,
        label="+",
        pos="1544,11.5",
        width=0.34722];
    44 -> 50    [color=5,
        pos="1466.9,58.779 1485.7,47.492 1514.8,30.01 1531.4,20.077"];
    51  [color=7,
        height=0.31944,
        label="idRHS d",
        pos="1608,11.5",
        width=0.91667];
    44 -> 51    [color=7,
        pos="1478.5,58.912 1507.1,48.674 1550.1,33.25 1578.6,23.031"];
    52  [color=9,
        height=0.31944,
        label="+",
        pos="1672,11.5",
        width=0.34722];
    44 -> 52    [color=9,
        pos="1479.2,64.634 1519,57.739 1591,43.627 1650,23 1653,21.939 1656.2,20.582 1659.2,19.199"];
    53  [color=11,
        height=0.31944,
        label="idRHS e",
        pos="1735,11.5",
        width=0.90278];
    44 -> 53    [color=11,
        pos="1479.3,64.384 1525.7,56.405 1617.1,40.129 1694,23 1696.7,22.393 1699.5,21.735 1702.4,21.054"];
    55  [color=2,
        height=0.31944,
        label="literal 0",
        pos="772,129.5",
        width=0.77778];
    54 -> 55    [color=2,
        pos="767.94,176.78 768.83,166.59 770.17,151.35 771.06,141.17"];
}

Upvotes: 1

Views: 45

Answers (1)

sroush
sroush

Reputation: 6763

(you might also look at the circo & twopi engines)
The trick to getting nodes to line-up vertically is to assign a unique group attribute (https://graphviz.org/docs/attrs/group/) to each of these sets of nodes. Like so:

digraph "ast tree" {
    graph [bb="0,0,1767.5,377",
        bgcolor=grey12,
        concentrate=true,
        splines=true
    ];
    node [color=1,
        colorscheme=rdylbu11,
        fontcolor=white,
        height=0,
        label="\N",
        margins=0.08,
        shape=box,
        width=0
    ];
    edge [arrowhead=none,
        color=white,
        colorscheme=rdylbu11,
        constraint=true,
        penwidth=0.5
    ];
    1   [height=0.31944,
        label=program,
        pos="270,365.5",
        width=0.88889];
    2   [height=0.31944,
        label=function,
        pos="230,306.5",
        width=0.86111];
    1 -> 2  [color=1,
        pos="262.48,353.78 255.32,343.59 244.63,328.35 237.49,318.17"];
    10  [color=5,
        height=0.31944,
        label=function,
        pos="396,306.5",
        width=0.86111];
    1 -> 10 [color=5,
        pos="293.4,353.91 316.04,343.67 350.13,328.25 372.72,318.03"];
    3   [height=0.31944,
        label=scope,
        pos="135,247.5",
        width=0.69444];
    2 -> 3  [color=1,
        pos="212.13,294.78 195.15,284.59 169.75,269.35 152.79,259.17"];
    4   [height=0.31944,
        label=scope,
        pos="39,188.5",
        width=0.69444];
    3 -> 4  [color=1,
        pos="116.94,235.78 99.78,225.59 74.112,210.35 56.976,200.17"];
    8   [color=3,
        height=0.31944,
        label="return statement",
        pos="135,188.5",
        width=1.4583];
    3 -> 8  [color=3,
        pos="135,235.78 135,225.59 135,210.35 135,200.17"];
    5   [height=0.31944,
        label="decl a",
        pos="39,129.5",
        width=0.69444];
    4 -> 5  [color=1,
        pos="39,176.78 39,166.59 39,151.35 39,141.17"];
    6   [height=0.31944,
        label=assignment,
        pos="39,70.5",
        width=1.0833];
    5 -> 6  [color=1,
        pos="39,117.78 39,107.59 39,92.348 39,82.173"];
    7   [height=0.31944,
        label="literal 0",
        pos="39,11.5",
        width=0.77778];
    6 -> 7  [color=1,
        pos="39,58.779 39,48.588 39,33.348 39,23.173"];
    9   [color=3,
        height=0.31944,
        label="literal 0",
        pos="122,129.5",
        width=0.77778];
    8 -> 9  [color=3,
        pos="132.55,176.78 130.23,166.59 126.75,151.35 124.43,141.17"];
    11  [color=5,
        height=0.31944,
        label=scope,
        pos="445,247.5",
        width=0.69444];
    10 -> 11    [color=5,
        pos="405.22,294.78 413.98,284.59 427.08,269.35 435.82,259.17"];
    12  [color=5,
        height=0.31944,
        label="decl a",
        pos="253,188.5",
        width=0.69444];
    11 -> 12    [color=5,
        pos="419.9,239.05 383.1,228.12 314.91,207.88 278.11,196.95"];
    15  [color=7,
        height=0.31944,
        label="decl b",
        pos="331,188.5",
        width=0.70833];
    11 -> 15    [color=7,
        pos="423.82,235.91 403.35,225.67 372.5,210.25 352.06,200.03"];
    18  [color=9,
        height=0.31944,
        label="decl c",
        pos="404,188.5",
        width=0.69444];
    11 -> 18    [color=9,
        pos="437.29,235.78 429.96,225.59 419,210.35 411.68,200.17"];
    24  [color=4,
        height=0.31944,
        label="decl d",
        pos="486,188.5",
        width=0.70833];
    11 -> 24    [color=4,
        pos="452.71,235.78 460.04,225.59 471,210.35 478.32,200.17"];
    32  [color=3,
        height=0.31944,
        label="decl e",
        pos="575,188.5",
        width=0.69444];
    11 -> 32    [color=3,
        pos="469.15,235.91 492.5,225.67 527.68,210.25 550.98,200.03"];
    42  [color=6,
        height=0.31944,
        label="decl f",
        pos="662,188.5",
        width=0.66667];
    11 -> 42    [color=6,
        pos="470.32,239.85 512.47,228.78 596.47,206.71 637.84,195.85"];
    54  [color=2,
        height=0.31944,
        label="return statement",
        pos="767,188.5",
        width=1.4583];
    11 -> 54    [color=2,
        pos="470.27,242.03 522.68,232.75 644.17,211.24 714.36,198.82"];
    13  [color=5,
        height=0.31944,
        label=assignment,
        pos="207,129.5",
        width=1.0833];
    12 -> 13    [color=5,
        pos="244.35,176.78 236.12,166.59 223.82,151.35 215.61,141.17"];
    14  [color=5,
        height=0.31944,
        label="literal 0",
        pos="194,70.5",
        width=0.77778];
    13 -> 14    [color=5,
        pos="204.55,117.78 202.23,107.59 198.75,92.348 196.43,82.173"];
    16  [color=7,
        height=0.31944,
        label=assignment,
        pos="303,129.5",
        width=1.0833];
    15 -> 16    [color=7,
        pos="325.73,176.78 320.73,166.59 313.24,151.35 308.24,141.17"];
    17  [color=7,
        height=0.31944,
        label="idRHS a",
        pos="273,70.5",
        width=0.90278];
    16 -> 17    [color=7,
        pos="297.36,117.78 291.99,107.59 283.97,92.348 278.62,82.173"];
    19  [color=9,
        height=0.31944,
        label=assignment,
        pos="399,129.5",
        width=1.0833];
    18 -> 19    [color=9,
        pos="403.06,176.78 402.17,166.59 400.83,151.35 399.94,141.17"];
    20  [color=9,
        height=0.31944,
        label=additive,
        pos="354,70.5",
        width=0.83333];
    19 -> 20    [color=9,
        pos="390.54,117.78 382.49,107.59 370.46,92.348 362.43,82.173"];
    21  [color=9,
        height=0.31944,
        label="idRHS a",
        pos="214,11.5",
        width=0.90278];
    20 -> 21    [color=9,
        pos="328,58.912 302.85,48.674 264.96,33.25 239.87,23.031"];
    22  [color=11,
        height=0.31944,
        label="+",
        pos="277,11.5",
        width=0.34722];
    20 -> 22    [color=11,
        pos="339.52,58.779 325.23,48.201 303.59,32.183 289.88,22.037"];
    23  [color=2,
        height=0.31944,
        label="idRHS b",
        pos="341,11.5",
        width=0.91667];
    20 -> 23    [color=2,
        pos="351.55,58.779 349.23,48.588 345.75,33.348 343.43,23.173"];
    25  [color=4,
        height=0.31944,
        label=assignment,
        pos="495,129.5",
        width=1.0833];
    24 -> 25    [color=4,
        pos="487.69,176.78 489.3,166.59 491.71,151.35 493.31,141.17"];
    26  [color=4,
        height=0.31944,
        label=additive,
        pos="520,70.5",
        width=0.83333];
    25 -> 26    [color=4,
        pos="499.7,117.78 504.17,107.59 510.86,92.348 515.32,82.173"];
    27  [color=4,
        height=0.31944,
        label="idRHS a",
        pos="425,11.5",
        width=0.90278];
    26 -> 27    [color=4,
        pos="502.13,58.779 485.15,48.588 459.75,33.348 442.79,23.173"];
    28  [color=6,
        height=0.31944,
        label="+",
        pos="488,11.5",
        width=0.34722];
    26 -> 28    [color=6,
        pos="513.98,58.779 508.26,48.588 499.7,33.348 493.99,23.173"];
    29  [color=8,
        height=0.31944,
        label="idRHS b",
        pos="552,11.5",
        width=0.91667];
    26 -> 29    [color=8,
        pos="526.02,58.779 531.74,48.588 540.3,33.348 546.01,23.173"];
    30  [color=10,
        height=0.31944,
        label="+",
        pos="616,11.5",
        width=0.34722];
    26 -> 30    [color=10,
        pos="538.06,58.779 557.07,47.492 586.51,30.01 603.24,20.077"];
    31  [height=0.31944,
        label="idRHS c",
        pos="679,11.5",
        width=0.90278];
    26 -> 31    [color=1,
        pos="549.53,58.912 578.09,48.674 621.12,33.25 649.62,23.031"];
    33  [color=3,
        height=0.31944,
        label=assignment,
        pos="591,129.5",
        width=1.0833];
    32 -> 33    [color=3,
        pos="578.01,176.78 580.87,166.59 585.15,151.35 588,141.17"];
    34  [color=3,
        height=0.31944,
        label=additive,
        pos="921,70.5",
        width=0.83333];
    33 -> 34    [color=3,
        pos="630.26,119.74 633.21,119.13 636.15,118.55 639,118 730.37,100.48 839.18,83.682 890.86,75.944"];
    35  [color=3,
        height=0.31944,
        label="idRHS a",
        pos="762,11.5",
        width=0.90278];
    34 -> 35    [color=3,
        pos="891.47,58.912 862.91,48.674 819.88,33.25 791.38,23.031"];
    36  [color=5,
        height=0.31944,
        label="+",
        pos="825,11.5",
        width=0.34722];
    34 -> 36    [color=5,
        pos="902.94,58.779 883.93,47.492 854.49,30.01 837.76,20.077"];
    37  [color=7,
        height=0.31944,
        label="idRHS b",
        pos="889,11.5",
        width=0.91667];
    34 -> 37    [color=7,
        pos="914.98,58.779 909.26,48.588 900.7,33.348 894.99,23.173"];
    38  [color=9,
        height=0.31944,
        label="+",
        pos="953,11.5",
        width=0.34722];
    34 -> 38    [color=9,
        pos="927.02,58.779 932.74,48.588 941.3,33.348 947.01,23.173"];
    39  [color=11,
        height=0.31944,
        label="idRHS c",
        pos="1016,11.5",
        width=0.90278];
    34 -> 39    [color=11,
        pos="938.87,58.779 955.85,48.588 981.25,33.348 998.21,23.173"];
    40  [color=2,
        height=0.31944,
        label="+",
        pos="1079,11.5",
        width=0.34722];
    34 -> 40    [color=2,
        pos="951.1,60.584 979.15,51.97 1022,38.045 1058,23 1060.7,21.869 1063.6,20.544 1066.2,19.223"];
    41  [color=4,
        height=0.31944,
        label="idRHS d",
        pos="1143,11.5",
        width=0.91667];
    34 -> 41    [color=4,
        pos="951.4,61.694 992.85,51.053 1066.8,32.061 1109.7,21.048"];
    43  [color=6,
        height=0.31944,
        label=assignment,
        pos="687,129.5",
        width=1.0833];
    42 -> 43    [color=6,
        pos="666.7,176.78 671.17,166.59 677.86,151.35 682.32,141.17"];
    44  [color=6,
        height=0.31944,
        label=additive,
        pos="1449,70.5",
        width=0.83333];
    43 -> 44    [color=6,
        pos="726.21,119.42 729.17,118.89 732.13,118.41 735,118 998.22,80.853 1320.3,73.317 1418.9,71.845"];
    45  [color=6,
        height=0.31944,
        label="idRHS a",
        pos="1227,11.5",
        width=0.90278];
    44 -> 45    [color=6,
        pos="1418.6,61.694 1376.9,50.992 1302.3,31.843 1259.6,20.859"];
    46  [color=8,
        height=0.31944,
        label="+",
        pos="1290,11.5",
        width=0.34722];
    44 -> 46    [color=8,
        pos="1419,60.43 1391,51.709 1348.2,37.714 1312,23 1309,21.788 1305.9,20.371 1302.9,18.976"];
    47  [color=10,
        height=0.31944,
        label="idRHS b",
        pos="1354,11.5",
        width=0.91667];
    44 -> 47    [color=10,
        pos="1431.1,58.779 1414.1,48.588 1388.7,33.348 1371.8,23.173"];
    48  [height=0.31944,
        label="+",
        pos="1418,11.5",
        width=0.34722];
    44 -> 48    [color=1,
        pos="1443.2,58.779 1437.6,48.588 1429.3,33.348 1423.8,23.173"];
    49  [color=3,
        height=0.31944,
        label="idRHS c",
        pos="1481,11.5",
        width=0.90278];
    44 -> 49    [color=3,
        pos="1455,58.779 1460.7,48.588 1469.3,33.348 1475,23.173"];
    50  [color=5,
        height=0.31944,
        label="+",
        pos="1544,11.5",
        width=0.34722];
    44 -> 50    [color=5,
        pos="1466.9,58.779 1485.7,47.492 1514.8,30.01 1531.4,20.077"];
    51  [color=7,
        height=0.31944,
        label="idRHS d",
        pos="1608,11.5",
        width=0.91667];
    44 -> 51    [color=7,
        pos="1478.5,58.912 1507.1,48.674 1550.1,33.25 1578.6,23.031"];
    52  [color=9,
        height=0.31944,
        label="+",
        pos="1672,11.5",
        width=0.34722];
    44 -> 52    [color=9,
        pos="1479.2,64.634 1519,57.739 1591,43.627 1650,23 1653,21.939 1656.2,20.582 1659.2,19.199"];
    53  [color=11,
        height=0.31944,
        label="idRHS e",
        pos="1735,11.5",
        width=0.90278];
    44 -> 53    [color=11,
        pos="1479.3,64.384 1525.7,56.405 1617.1,40.129 1694,23 1696.7,22.393 1699.5,21.735 1702.4,21.054"];
    55  [color=2,
        height=0.31944,
        label="literal 0",
        pos="772,129.5",
        width=0.77778];
    54 -> 55    [color=2,
        pos="767.94,176.78 768.83,166.59 770.17,151.35 771.06,141.17"];
}

Giving:
enter image description here

Upvotes: 1

Related Questions