summaryrefslogtreecommitdiff
path: root/chapter05/docs/05-graph2.gv
diff options
context:
space:
mode:
authordibyendumajumdar <mobile@majumdar.org.uk>2023-10-28 12:13:35 +0100
committerDibyendu Majumdar <dibyendumajumdar@users.noreply.github.com>2023-11-01 18:56:50 +0000
commitd438edc542ae524c69cd0a5259c76313cf3abc76 (patch)
tree580234f9759ea4d22907b00e1310fdd9d4a5de39 /chapter05/docs/05-graph2.gv
parent45f134cfdb467c2f8fe4b9c352902775ecc31547 (diff)
downloadSimple-d438edc542ae524c69cd0a5259c76313cf3abc76.tar.gz
Simple-d438edc542ae524c69cd0a5259c76313cf3abc76.zip
Add writeup of if statement parsing
Diffstat (limited to 'chapter05/docs/05-graph2.gv')
-rw-r--r--chapter05/docs/05-graph2.gv77
1 files changed, 77 insertions, 0 deletions
diff --git a/chapter05/docs/05-graph2.gv b/chapter05/docs/05-graph2.gv
new file mode 100644
index 00000000..d2c819a8
--- /dev/null
+++ b/chapter05/docs/05-graph2.gv
@@ -0,0 +1,77 @@
+digraph chapter05 {
+/*
+int a = 1;
+if (arg == 1)
+ a = arg+2;
+else {
+ a = arg-3;
+ #showGraph;
+}
+return a;
+#showGraph;
+
+*/
+ rankdir=BT;
+ subgraph cluster_Nodes {
+ Start1 [ shape=plaintext label=<
+ <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
+ <TR><TD BGCOLOR="yellow">Start</TD></TR>
+ <TR><TD>
+ <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
+ <TR><TD PORT="p0" BGCOLOR="yellow">$ctrl</TD><TD PORT="p1">arg</TD></TR>
+ </TABLE>
+ </TD></TR>
+ </TABLE>>
+ ];
+ Con_5 [ label="#1" ];
+ EQNode6 [ label="EQNode" ];
+ If7 [ shape=plaintext label=<
+ <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
+ <TR><TD BGCOLOR="yellow">If</TD></TR>
+ <TR><TD>
+ <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
+ <TR><TD PORT="p0" BGCOLOR="yellow">True</TD><TD PORT="p1" BGCOLOR="yellow">False</TD></TR>
+ </TABLE>
+ </TD></TR>
+ </TABLE>>
+ ];
+ Con_11 [ label="#2" ];
+ Add12 [ label="Add" ];
+ Con_13 [ label="#3" ];
+ Sub14 [ label="Sub" ];
+ Region15 [ shape=box style=filled fillcolor=yellow label="Region" ];
+ Phi16 [ label="Phi" ];
+ Return17 [ shape=box style=filled fillcolor=yellow label="Return" ];
+ }
+ node [shape=plaintext];
+ subgraph cluster_Scope20_0 {
+ Scope20_0 [label=<
+ <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
+ <TR><TD BGCOLOR="cyan">0</TD><TD PORT="Scope20_0_$ctrl">$ctrl</TD><TD PORT="Scope20_0_arg">arg</TD></TR>
+ </TABLE>>];
+ subgraph cluster_Scope20_1 {
+ Scope20_1 [label=<
+ <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
+ <TR><TD BGCOLOR="cyan">1</TD><TD PORT="Scope20_1_a">a</TD></TR>
+ </TABLE>>];
+ }
+ }
+ EQNode6 -> Start1:p1;
+ EQNode6 -> Con_5;
+ If7 -> Start1:p0 [color=red];
+ If7 -> EQNode6;
+ Add12 -> Start1:p1;
+ Add12 -> Con_11;
+ Sub14 -> Start1:p1;
+ Sub14 -> Con_13;
+ Region15 -> If7:p0 [color=red];
+ Region15 -> If7:p1 [color=red];
+ Phi16 -> Region15 [color=red];
+ Phi16 -> Add12;
+ Phi16 -> Sub14;
+ Return17 -> Region15 [color=red];
+ Return17 -> Phi16;
+ edge [style=dashed color=cornflowerblue];
+ Scope20_0:"Scope20_0_arg" -> Start1:p1;
+ Scope20_1:"Scope20_1_a" -> Phi16;
+} \ No newline at end of file