natuurlijke taal bij semantiek
authorMarjolein Zwerver <marjolein.zwerver@student.ru.nl>
Tue, 20 May 2014 13:29:25 +0000 (15:29 +0200)
committerMarjolein Zwerver <marjolein.zwerver@student.ru.nl>
Tue, 20 May 2014 13:29:25 +0000 (15:29 +0200)
semantics.tex

index eb7922e..d80eb80 100644 (file)
@@ -16,16 +16,18 @@ $\langle S, s_i, s_o, s\rangle\Rightarrow\langle s_i', s_o', s'\rangle$\\
 Waarbij de laatste transitie duidt op een terminerende transitie en de eerste
 op een niet terminerende transitie.\\ 
 
 Waarbij de laatste transitie duidt op een terminerende transitie en de eerste
 op een niet terminerende transitie.\\ 
 
-\subsection{Semantiek beschrijving}
+\subsection{Semantiekbeschrijving}
 
 
-Om het eerste element van een stack weg te kunnen gooien gebruiken we de volgende 
+Om het bovenste element van een stack weg te kunnen gooien gebruiken we de volgende 
 functie:\\
 functie:\\
-$$\mathcal{D} : s \rightarrow s$$\\
-Deze neemt een stack en gooit het bovenste element weg.\\
+$$\mathcal{D} : Stack \rightarrow Stack$$
+$$\mathcal{D} [\:] = [\:]$$
+$$\mathcal{D} [a:rest] = [rest] $$
+Deze functie haalt het bovenste element van de stack en gooit deze weg.\\
 
 Om een stack uit te kunnen breiden met een element gebruiken we de volgende 
 functie:\\
 
 Om een stack uit te kunnen breiden met een element gebruiken we de volgende 
 functie:\\
-$$\mathcal{E} : s, \mathbb{Z} \rightarrow s$$\\
+$$\mathcal{E} : Stack\rightarrow (\mathbb{Z} \rightarrow Stack)$$\\
 Deze functie neemt een stack en een integer en voegt de integer toe bovenop de 
 stack.\\
 
 Deze functie neemt een stack en een integer en voegt de integer toe bovenop de 
 stack.\\
 
@@ -35,6 +37,8 @@ $$\mathcal{ADD} : Stack \rightarrow Stack$$
 $$\mathcal{ADD} [\:] = [\:]$$
 $$\mathcal{ADD} [a] = [a] $$
 $$\mathcal{ADD} [a:b:rest] = [b+a:rest] $$\\
 $$\mathcal{ADD} [\:] = [\:]$$
 $$\mathcal{ADD} [a] = [a] $$
 $$\mathcal{ADD} [a:b:rest] = [b+a:rest] $$\\
+Deze functie haalt de bovenste twee waarden van de stack, telt ze bij elkaar op, en stopt 
+het resultaat bovenop de stack.\\
 
 Om de bovenste twee elementen van een stack van elkaar af te trekken gebruiken we 
 de volgende functie:\\
 
 Om de bovenste twee elementen van een stack van elkaar af te trekken gebruiken we 
 de volgende functie:\\
@@ -42,6 +46,8 @@ $$\mathcal{SUB} : Stack \rightarrow Stack$$
 $$\mathcal{SUB} [\:] = [\:]$$
 $$\mathcal{SUB} [a] = [a] $$
 $$\mathcal{SUB} [a:b:rest] = [b-a:rest] $$\\
 $$\mathcal{SUB} [\:] = [\:]$$
 $$\mathcal{SUB} [a] = [a] $$
 $$\mathcal{SUB} [a:b:rest] = [b-a:rest] $$\\
+Deze functie haalt de bovenste twee elementen van de stack, trekt de bovenste 
+waarde van de tweede bovenste waarde af, en stopt het resultaat bovenop de stack.
 
 Om de bovenste twee elementen van een stack te vermenigvuldigen gebruiken we de 
 volgende functie:\\
 
 Om de bovenste twee elementen van een stack te vermenigvuldigen gebruiken we de 
 volgende functie:\\
@@ -49,41 +55,54 @@ $$\mathcal{MUL} : Stack \rightarrow Stack$$
 $$\mathcal{MUL} [\:] = [\:]$$
 $$\mathcal{MUL} [a] = [a] $$
 $$\mathcal{MUL} [a:b:rest] = [b*a:rest] $$\\
 $$\mathcal{MUL} [\:] = [\:]$$
 $$\mathcal{MUL} [a] = [a] $$
 $$\mathcal{MUL} [a:b:rest] = [b*a:rest] $$\\
+Deze functie haalt de bovenste twee elementen van de stack, vermenigvuldigt ze, 
+en stopt het resultaat bovenop de stack.\\
 
 
-Om de integer deling van de bovenste twee elementen van de stack bovenop de 
+Om de geheeltallige deling van de bovenste twee elementen van de stack bovenop de 
 stack te krijgen gebruiken we de volgende functie:\\
 $$\mathcal{DIV} : Stack \rightarrow Stack$$
 $$\mathcal{DIV} [\:] = [\:]$$
 $$\mathcal{DIV} [a] = [a] $$
 $$\mathcal{DIV} [a:b:rest] = [b/a:rest] $$\\
 stack te krijgen gebruiken we de volgende functie:\\
 $$\mathcal{DIV} : Stack \rightarrow Stack$$
 $$\mathcal{DIV} [\:] = [\:]$$
 $$\mathcal{DIV} [a] = [a] $$
 $$\mathcal{DIV} [a:b:rest] = [b/a:rest] $$\\
+Deze functie haalt de bovenste twee elementen van de stack, berekent de 
+geheeltallige deling van de tweede bovenste waarde door de bovenste waarde, 
+en stopt het resultaat bovenop de stack.\\
 
 
-Om de bovenste twee elementen van een stack op te tellen gebruiken we de 
+Om    gebruiken we de
 volgende functie:\\
 $$\mathcal{MOD} : Stack \rightarrow Stack$$
 $$\mathcal{MOD} [\:] = [\:]$$
 $$\mathcal{MOD} [a] = [a] $$
 $$\mathcal{MOD} [a:b:rest] = [b \: mod \: a:rest] $$\\
 volgende functie:\\
 $$\mathcal{MOD} : Stack \rightarrow Stack$$
 $$\mathcal{MOD} [\:] = [\:]$$
 $$\mathcal{MOD} [a] = [a] $$
 $$\mathcal{MOD} [a:b:rest] = [b \: mod \: a:rest] $$\\
+Deze functie haalt de bovenste twee elementen van de stack, berekent het resultaat van de tweede bovenste 
+waarde modulo de bovenste waarde, en stopt dit bovenop de stack.\\
 
 Om het bovenste element van een stack te dupliceren gebruiken we de 
 volgende functie:\\
 $$\mathcal{DUP} : Stack \rightarrow Stack$$
 $$\mathcal{DUP} [\:] = [\:]$$
 $$\mathcal{DUP} [a:rest] = [a:a:rest] $$\\
 
 Om het bovenste element van een stack te dupliceren gebruiken we de 
 volgende functie:\\
 $$\mathcal{DUP} : Stack \rightarrow Stack$$
 $$\mathcal{DUP} [\:] = [\:]$$
 $$\mathcal{DUP} [a:rest] = [a:a:rest] $$\\
+Deze functie haalt stopt een kopie van de bovenste waarde bovenop de stack.\\
 
 
-Om de bovenste twee elementen van een stack op te tellen gebruiken we de 
+Om de   gebruiken we de 
 volgende functie:\\
 $$\mathcal{NOT} : Stack \rightarrow Stack$$
 $$\mathcal{NOT} [\:] = [\:]$$
 $$\mathcal{NOT} [a:rest] = [0:rest] \: \text{if} \:  a \neq 0$$
 $$\mathcal{NOT} [a:rest] = [1:rest] \: \text{if} \: a = 0$$\\
 volgende functie:\\
 $$\mathcal{NOT} : Stack \rightarrow Stack$$
 $$\mathcal{NOT} [\:] = [\:]$$
 $$\mathcal{NOT} [a:rest] = [0:rest] \: \text{if} \:  a \neq 0$$
 $$\mathcal{NOT} [a:rest] = [1:rest] \: \text{if} \: a = 0$$\\
+Deze functie neemt het bovenste element van de stack en stopt 0 bovenaan de 
+stack als deze waarde niet gelijk is aan 0 en 1 als deze waarde gelijk is aan 0.\\
 
 
-Om de bovenste twee elementen van een stack op te tellen gebruiken we de 
+Om   gebruiken we de 
 volgende functie:\\
 $$\mathcal{GRE} : Stack \rightarrow Stack$$
 $$\mathcal{GRE} [\:] = [\:]$$
 $$\mathcal{GRE} [a] = [a] $$
 $$\mathcal{GRE} [a:b:rest] = [0:rest] \: \text{if} \: a \geq b$$
 $$\mathcal{GRE} [a:b:rest] = [1:rest] \: \text{if} \: a < b$$\\
 volgende functie:\\
 $$\mathcal{GRE} : Stack \rightarrow Stack$$
 $$\mathcal{GRE} [\:] = [\:]$$
 $$\mathcal{GRE} [a] = [a] $$
 $$\mathcal{GRE} [a:b:rest] = [0:rest] \: \text{if} \: a \geq b$$
 $$\mathcal{GRE} [a:b:rest] = [1:rest] \: \text{if} \: a < b$$\\
+Deze functie haalt de bovenste twee elementen van de stack en stopt 1 bovenop 
+de stack als het tweede bovenste element een hogere waarde heeft als dat van het 
+bovenste element. Anders word 1 bovenop de stack gestopt.\\ 
 
 Met behulp van deze gedefineerde functies kunnen we nu de volgende semantiekregels opstellen:\\
 
 
 Met behulp van deze gedefineerde functies kunnen we nu de volgende semantiekregels opstellen:\\
 
@@ -114,5 +133,23 @@ $
 \langle s_i, s_o, \mathcal{NOT}(s)\rangle\\
 {[greater_{sos}]} \qquad
 \langle greater, s_i, s_o, s\rangle \Rightarrow
 \langle s_i, s_o, \mathcal{NOT}(s)\rangle\\
 {[greater_{sos}]} \qquad
 \langle greater, s_i, s_o, s\rangle \Rightarrow
-\langle s_i, s_o, \mathcal{GRE}(s)\rangle \qquad \\
+\langle s_i, s_o, \mathcal{GRE}(s)\rangle\\
+{[push_{sos}]} \qquad
+\langle push, s_i, s_o, s\rangle \Rightarrow
+\langle s_i, s_o, s\rangle\\
+{[roll_{sos}]} \qquad
+\langle roll, s_i, s_o, s\rangle \Rightarrow
+\langle s_i, s_o, s\rangle\\
+{[inchar_{sos}]} \qquad
+\langle inchar, s_i, s_o, s\rangle \Rightarrow
+\langle s_i, s_o, s\rangle\\
+{[innum_{sos}]} \qquad
+\langle innum, s_i, s_o, s\rangle \Rightarrow
+\langle s_i, s_o, s\rangle\\
+{[outchar_{sos}]} \qquad
+\langle outchar, s_i, s_o, s\rangle \Rightarrow
+\langle s_i, s_o, s\rangle\\
+{[outnum_{sos}]} \qquad
+\langle outnum, s_i, s_o, s\rangle \Rightarrow
+\langle s_i, s_o, s\rangle\\
 $
 $