summaryrefslogtreecommitdiff
path: root/papers/cfrontend_new/dynsem2.etex
diff options
context:
space:
mode:
Diffstat (limited to 'papers/cfrontend_new/dynsem2.etex')
-rwxr-xr-xpapers/cfrontend_new/dynsem2.etex89
1 files changed, 89 insertions, 0 deletions
diff --git a/papers/cfrontend_new/dynsem2.etex b/papers/cfrontend_new/dynsem2.etex
new file mode 100755
index 0000000..e6f8163
--- /dev/null
+++ b/papers/cfrontend_new/dynsem2.etex
@@ -0,0 +1,89 @@
+\begin{figure}
+
+\numberrules
+
+Statements:
+\begin{pannel}
+
+\srule G, E |- "skip", M \evalstmt "Out_normal", \E0, M
+\end
+\label{rule:10}
+
+\\[2mm]
+\srule G, E |- "break", M \evalstmt "Out_break", \E0, M
+\end
+\label{rule:13}
+
+\\[2mm]
+\srule G, E |- "continue", M \evalstmt "Out_continue", \E0, M
+\end
+\label{rule:14}
+
+\irule
+ G, E |- a, M \evalexpr v, \tr, M'
+ --------------------------------------------------
+ G, E |- a , M \evalstmt \out, \tr, M'
+\end \label{rule:11}
+
+\irule
+ G, E |- \unannot{a_1}{\tau}, M \evallvalue \loc, \tr_1, M_1 &
+ G, E |- \unannot{a_2}{\tau'}, M_1 \evalexpr v, \tr_2, M_2 \\
+ "storeval"(\tau,M_2,\loc,v) = \some{M_3}
+ --------------------------------------------------
+ G, E |- {(\unannot{a_1}{\tau} \hbox{" = "} \unannot{a_2}{\tau'})}^{\tau}, M \evalexpr v, \cat {\tr_1} \tr_2, M_3
+\end \label{rule:12}
+
+\\
+\irule
+ G, E |- s_1, M \evalstmt "Out_normal", \tr_1, M_1 &
+ G, E |- s_2, M_1 \evalstmt \out, \tr_2, M_2
+ --------------------------------------------------
+ G, E |- (s_1 ; s_2), M \evalstmt \out, \cat {\tr_1} \tr_2, M_2
+\end \label{rule:15}
+
+\irule
+ G, E |- s_1, M \evalstmt out, \tr, M' &
+ out \not= "Out_normal"
+ --------------------------------------------------
+ G, E |- (s_1; s_2), M \evalstmt \out, \tr, M'
+\end \label{rule:16}
+
+\\
+\irule
+ G, E |- a, M \evalexpr v, \tr, M' & "is_false"(v)
+ --------------------------------------------------
+ G, E |- ("while" (a) ~ s), M \evalstmt "Out_normal", \tr, M'
+\end \label{rule:17}
+
+\irule
+ G, E |- a, M \evalexpr v, \tr_1, M_1 & "is_true" (v) \\
+ G, E |- s, M_1 \evalstmt \out, \tr_2, M_2 \\
+ \out \in \{"Out_break", "Out_return", "Out_return" (v)\}
+ --------------------------------------------------
+ G, E |- ("while" (a)~s), M \evalstmt "Out_normal", \cat {\tr_1} \tr_2, M_2
+\end \label{rule:18}
+
+\irule
+ G, E |- a, M \evalexpr v_a, \tr_1, M_1 & "is_true" (v_a) \\
+ G, E |- s, M_1 \evalstmt ("Out_normal" \mid "Out_continue"), \tr_2, M_2 \\
+ G, E |- ("while" (a)~s), M_2 \evalstmt \out', \tr_3, M_3
+ --------------------------------------------------
+ G, E |- ("while" (a)~s), M \evalstmt \out', \cat {\cat {\tr_1} \tr_2} \tr_3, M_3
+\end \label{rule:19}
+
+\\
+\srule
+ G, E |- ("return" \, \None), M \evalstmt "Out_return" , \tr, M
+\end \label{rule:20}
+
+\\
+\irule
+ G, E |- a, M \evalexpr v, \tr, M'
+ --------------------------------------------------
+ G, E |- ("return" \some a), M \evalstmt "Out_return" (v), \tr, M'
+\end \label{rule:21}
+
+\end{pannel}
+\caption{Selected rules of the dynamic semantics of Clight (statements execution)}
+\label{fig:dynsem2}
+\end{figure}