summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--introcoms.tex1
-rw-r--r--smurf.sty6
-rw-r--r--sosexamp.tex54
-rw-r--r--werkstuk.tex1
4 files changed, 62 insertions, 0 deletions
diff --git a/introcoms.tex b/introcoms.tex
index 0aa01b0..31f2de0 100644
--- a/introcoms.tex
+++ b/introcoms.tex
@@ -5,6 +5,7 @@ We zullen nu kort op informele wijze de verschillende commando's in Smurf
beschrijven. We geven telkens de notatie in Smurf syntax en een leesbaarder
alternatief dat we hieronder zullen gebruiken. Wanneer een commando iets met
elementen op de stack doet, worden die elementen altijd verwijderd.
+Merk op dat de commando's niet exact hetzelfde zijn als in de voorbeeldprogramma's en de taalspecificatie; wij gebruiken een leesbaardere variant op de taal zodat het overzichtelijker is om eigenschappen ervan te bespreken. Alle commando's betekenen nog steeds hetzelfde.
\begin{description}[style=nextline,font=\normalfont]
\item[\smurfinline{"..."} of $\StmPush~\texttt{...}$]
diff --git a/smurf.sty b/smurf.sty
index 8191582..c226f32 100644
--- a/smurf.sty
+++ b/smurf.sty
@@ -58,6 +58,9 @@
% Transitions
\def\trans#1#2#3#4#5#6{\left\langle#1,#2,#3\right\rangle\to\left(#4,#5,#6\right)}
+\def\sostrans#1#2#3#4#5#6#7#8{\left\langle#1,#2,#3,#4\right\rangle\Rightarrow\left(#5,#6,#7,#8\right)}
+\def\sostranseind#1#2#3#4#5#6#7{\left\langle#1,#2,#3,#4\right\rangle\Rightarrow\left(#5,#6,#7\right)}
+
% Rules
\def\rule#1#2{[\mbox{#1}_{\mbox{\footnotesize{#2}}}]}
\def\rlambdans{\rule{$\lambda$}{ns}}
@@ -71,6 +74,9 @@
\def\rinputns{\rule{input}{ns}}
\def\routputns{\rule{output}{ns}}
\def\rexecns{\rule{exec}{ns}}
+\def\rtailsos{\rule{tail}{sos}}
+\def\rcompeensos{\rule{comp1}{sos}}
+\def\rcomptweesos{\rule{comp2}{sos}}
% Common names
\def\stk{\mathit{stk}}
diff --git a/sosexamp.tex b/sosexamp.tex
new file mode 100644
index 0000000..d05ae3a
--- /dev/null
+++ b/sosexamp.tex
@@ -0,0 +1,54 @@
+\subsection{Smurf in structurele operationele semantiek}
+We willen ook nog graag laten zien hoe de definities van Smurf eruit zien als je de structurele operationele semantiek gebruikt. In principe maakt het voor de analyse van Smurf niet uit of je natuurlijke semantiek gebruikt of structurele operationele semantiek. Omdat natuurlijke semantiek en structurele operationele semantiek equivalent zijn wanneer de regels goed gedefineerd zijn. Wij hadden een voorkeur om natuurlijke semantiek te gebruiken omdat we hier meer bekend mee zijn. Echter willen we ook nog graag laten zien hoe het eruit zou zien als je structurele operationele semantiek zou gebruiken.
+
+We gebruiken hier in plaats van de lambda regel twee compositie regels om hiervan ook het verschil aan te geven.
+
+De twee composities regels zijn als volgt:
+\medskip
+\medskip
+$$
+\begin{prooftree}
+ \sostrans
+ {\pgm1}{\ip}{\op}{(\stk, \str)}
+ {\pgm1'}{\ip'}{\op'}{(\stk', \str')}
+ \justifies
+ \sostrans
+ {\pgm1:\pgm2}{\ip}{\op}{(\stk,\str)}
+ {\pgm1':\pgm2}{\ip'}{\op'}{(\stk',\str')}
+ \using{\rcompeensos}
+ \qquad
+\end{prooftree}
+$$
+\medskip
+\medskip
+$$
+\begin{prooftree}
+ \sostranseind
+ {\pgm1}{\ip}{\op}{(\stk, \str)}
+ {\ip'}{\op'}{(\stk', \str')}
+ \justifies
+ \sostrans
+ {\pgm1:\pgm2}{\ip}{\op}{(\stk,\str)}
+ {\pgm2}{\ip'}{\op'}{(\stk',\str')}
+ \using{\rcomptweesos}
+ \qquad
+\end{prooftree}
+$$
+
+\medskip
+\medskip
+\medskip
+
+De tailregel zal in de structurele operationele semantiek als volgt zijn:
+
+$$
+\begin{prooftree}
+ \axjustifies
+ \sostranseind
+ {\StmTail}{\ip}{\op}{(\stk,\str)}
+ {\ip}{\op}{(\push{s}{\stk'}, \str)}
+ \using{\rtailsos}
+ \qquad
+ \text{met $ \pop{\stk} = (c~s,\stk') $.}
+\end{prooftree}
+$$ \ No newline at end of file
diff --git a/werkstuk.tex b/werkstuk.tex
index 24a290f..8289f6f 100644
--- a/werkstuk.tex
+++ b/werkstuk.tex
@@ -48,6 +48,7 @@
\input{def}
\input{rules}
\input{analyse}
+\input{sosexamp}
\input{planning}
\input{refs}