From: Marjolein Zwerver Date: Tue, 20 May 2014 12:29:32 +0000 (+0200) Subject: semantiek en syntax aangepast X-Git-Url: https://git.martlubbers.net/?a=commitdiff_plain;h=2011dd723e02ad3d831138ed37b631cd68c16428;p=sec1415.git semantiek en syntax aangepast wiskundige operaties op stacks toegevoegd, semantiekregels aangepast, argumenten voor tussentaal weggehaalt --- diff --git a/semantics.tex b/semantics.tex index fb4c747..eb7922e 100644 --- a/semantics.tex +++ b/semantics.tex @@ -17,107 +17,102 @@ Waarbij de laatste transitie duidt op een terminerende transitie en de eerste op een niet terminerende transitie.\\ \subsection{Semantiek beschrijving} -Om het eerste element van een stack weg te kunnen gooien gebruiken we de volgende functie:\\ + +Om het eerste element van een stack weg te kunnen gooien gebruiken we de volgende +functie:\\ $$\mathcal{D} : s \rightarrow s$$\\ Deze neemt een stack en gooit het bovenste element 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$$\\ -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.\\ + +Om de bovenste twee elementen van een stack op te tellen gebruiken we de volgende +functie:\\ +$$\mathcal{ADD} : Stack \rightarrow Stack$$ +$$\mathcal{ADD} [\:] = [\:]$$ +$$\mathcal{ADD} [a] = [a] $$ +$$\mathcal{ADD} [a:b:rest] = [b+a:rest] $$\\ + +Om de bovenste twee elementen van een stack van elkaar af te trekken gebruiken we +de volgende functie:\\ +$$\mathcal{SUB} : Stack \rightarrow Stack$$ +$$\mathcal{SUB} [\:] = [\:]$$ +$$\mathcal{SUB} [a] = [a] $$ +$$\mathcal{SUB} [a:b:rest] = [b-a:rest] $$\\ + +Om de bovenste twee elementen van een stack te vermenigvuldigen gebruiken we de +volgende functie:\\ +$$\mathcal{MUL} : Stack \rightarrow Stack$$ +$$\mathcal{MUL} [\:] = [\:]$$ +$$\mathcal{MUL} [a] = [a] $$ +$$\mathcal{MUL} [a:b:rest] = [b*a:rest] $$\\ + +Om de integer 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] $$\\ + +Om de bovenste twee elementen van een stack op te tellen 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] $$\\ -\footnotesize -$\infer [{[}delete_{sos}{]}] - { \langle delete, s_i, s_o, s\rangle \Rightarrow - \langle s_i,s_o,\mathcal{D}[s]\rangle}{}\\ -\infer [{[}extend_{sos}{]}] - { \langle extend \: z, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o,\mathcal{E}[s, z]\rangle}{}\\ -\infer [{[}pop_{sos} {]}] - { \langle delete, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'\rangle} - { \langle pop, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'\rangle}\\ -\infer [{[}add_{sos} {]}] - { \langle delete, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'\rangle \quad - \langle delete, s_i, s_o, s'\rangle \Rightarrow - \langle s_i, s_o, s''\rangle \quad - \langle extend\: x+y, s_i, s_o, s''\rangle \Rightarrow - \langle s_i, s_o, s'''\rangle} - { \langle add \: x,y, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'''\rangle}\\ -\infer [{[}subtract_{sos} {]}] - { \langle delete, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'\rangle \quad - \langle delete, s_i, s_o, s'\rangle \Rightarrow - \langle s_i, s_o, s''\rangle \quad - \langle extend\: x-y, s_i, s_o, s''\rangle \Rightarrow - \langle s_i, s_o, s'''\rangle} - { \langle subtract \: x,y, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'''\rangle}\\ -\infer [{[}multiply_{sos} {]}] - { \langle delete, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'\rangle \quad - \langle delete, s_i, s_o, s'\rangle \Rightarrow - \langle s_i, s_o, s''\rangle \quad - \langle extend\: x*y, s_i, s_o, s''\rangle \Rightarrow - \langle s_i, s_o, s'''\rangle} - { \langle multiply \: x,y, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'''\rangle}\\ -\infer [{[}divide_{sos} {]}] - { \langle delete, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'\rangle \quad - \langle delete, s_i, s_o, s'\rangle \Rightarrow - \langle s_i, s_o, s''\rangle \quad - \langle extend\: x/y, s_i, s_o, s''\rangle \Rightarrow - \langle s_i, s_o, s'''\rangle} - { \langle divide \: x,y, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'''\rangle}\\ -\infer [{[}mod_{sos} {]}] - { \langle delete, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'\rangle \quad - \langle delete, s_i, s_o, s'\rangle \Rightarrow - \langle s_i, s_o, s''\rangle \quad - \langle extend\: x \: mod \: y, s_i, s_o, s''\rangle \Rightarrow - \langle s_i, s_o, s'''\rangle} - { \langle mod \: x,y, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'''\rangle}\\ -\infer [{[}duplicate_{sos} {]}] - { \langle extend\: x, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'\rangle} - { \langle duplicate \: x, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'\rangle}\\ -\infer [{[}not^0_{sos} {]}] - { \langle delete, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'\rangle \quad - \langle extend\: 1, s_i, s_o, s'\rangle \Rightarrow - \langle s_i, s_o, s''\rangle} - { \langle not \: x, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s''\rangle}$ if $x = 0\\ -\infer [{[}not^*_{sos} {]}] - { \langle delete, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'\rangle \quad - \langle extend\: 0, s_i, s_o, s'\rangle \Rightarrow - \langle s_i, s_o, s''\rangle} - { \langle not \: x, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s''\rangle}$ if $x\neq 0\\ -\infer [{[}greater^<_{sos} {]}] - { \langle delete, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'\rangle \quad - \langle delete, s_i, s_o, s'\rangle \Rightarrow - \langle s_i, s_o, s''\rangle \quad - \langle extend\:,1, s_i, s_o, s''\rangle \Rightarrow - \langle s_i, s_o, s'''\rangle} - { \langle greater \: x,y, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'''\rangle}$ if $x>y\\ -\infer [{[}greater^>_{sos} {]}] - { \langle delete, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'\rangle \quad - \langle delete, s_i, s_o, s'\rangle \Rightarrow - \langle s_i, s_o, s''\rangle \quad - \langle extend\: 0, s_i, s_o, s''\rangle \Rightarrow - \langle s_i, s_o, s'''\rangle} - { \langle greater \: x,y, s_i, s_o, s\rangle \Rightarrow - \langle s_i, s_o, s'''\rangle}$ if $x