summaryrefslogtreecommitdiff
path: root/deftrans.tex
blob: 67b5323459c7ef2e9b62e96946b10e877f31a329 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
% vim: set spelllang=nl:
\subsection{Transities}
\label{sec:def:trans}
We hebben gekozen om de semantiek van Smurf in natuurlijke semantiek te definiëren. In principe hadden we er ook voor kunnen kiezen om te gaan voor structurele operationele semantiek, echter denk wij dat we door het gebruik van natuurlijke semantiek meer kunnen in onze analyse. 
Bij het definiëren van de natuurlijke semantiek van Smurf zullen we de
verzameling van transities als een relatie $\to$ tussen
$\Pgm\times\Input\times\State$ en $\Input\times\Output\times\State$ beschouwen.
Dit schrijven we als
$$\trans{\pgm}{\ip}{\st}{\ip'}{\op}{\st'}$$
en lezen we als
\begin{quote}
	``het programma $\pgm$ zal in toestand $\st$ gegeven input $\ip$ leiden tot
	toestand $\st'$, waarbij als de toestand niet verandert geldt $\st'$ = $\st$, met output $\op$ waarbij de input $\ip'$ met  $\ip'$ = $\ip$ als $\ip$ niet geconsumeerd is.''
\end{quote}

We hebben het hele programma $\Pgm$ nodig voor de pijl, omdat één commando
($\StmExec$) eventuele verdere statements `weggooit'. %todo ander woord
Verder gebruiken we $\Input$ voor $\StmInput$ en hebben we natuurlijk de
$\State$ nodig voor ieder statement: ieder statement verandert de stack, en
sommige statements veranderen bovendien de variable store.