summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--defio.tex10
-rw-r--r--defmeta.tex3
-rw-r--r--defsyn.tex7
-rw-r--r--introcoms.tex7
-rw-r--r--rules.tex12
5 files changed, 24 insertions, 15 deletions
diff --git a/defio.tex b/defio.tex
index 20f3b73..1f4eace 100644
--- a/defio.tex
+++ b/defio.tex
@@ -20,8 +20,12 @@ Op een stack zijn twee instructies gedefinieerd:
\pop{[e:\stk]} \isdef (e,\stk) \\
\end{gather*}
-In de documentatie \cite{safalra} wordt niet beschreven wat er gebeurt wanneer een $\popop$ wordt uitgevoerd op een lege stack. In de \texttt{Perl}-interpreter van de taal wordt ervoor gekozen om het programma abrupt te termineren met een error. Wij hebben ervoor gekozen om $\popop$ als een partiële functie te zien waar $\pop\Nil$ ongedefinieerd blijft zodat er geen afleidingsbomen bestaan voor programma's waar dit gebeurt.
-
+In de documentatie \cite{safalra} wordt niet beschreven wat er gebeurt wanneer
+een $\popop$ wordt uitgevoerd op een lege stack. In de
+\emph{Perl}-interpreter van de taal wordt ervoor gekozen om het programma
+abrupt te termineren met een error. Wij hebben ervoor gekozen om $\popop$ als
+een partiële functie te zien waar $\pop\Nil$ ongedefinieerd blijft zodat er
+geen afleidingsbomen bestaan voor programma's waar dit gebeurt.
\medskip
We zullen de input en output beide als $\Stack{\String}$ modelleren. In feite
@@ -29,7 +33,7 @@ zal zelfs blijken dat we op $\Input$ de operatie $\pushop$ niet nodig hebben,
en op $\Output$ de operatie $\popop$ niet zullen gebruiken. Informeel
beschouwen we $\Input$ als een `bron' van $\String$s en $\Output$ als een `put'
van $\String$s. Formeel:
+
\begin{align*}
\Input &\isdef \Stack{\String} \\ \Output &\isdef \Stack{\String}
\end{align*}
-
diff --git a/defmeta.tex b/defmeta.tex
index 51f5ddd..05a1de1 100644
--- a/defmeta.tex
+++ b/defmeta.tex
@@ -9,7 +9,8 @@ We zullen de volgende metavariabelen gebruiken:
\item[$s$] voor strings ($\String$),
\item[$\var$] voor strings die als naam van een variabele worden gebruikt,
\item[$\val$] voor strings die als waarde van een variabele worden gebruikt,
- \item[$e$] voor elementen van stacks ($a$ voor een element van $\Stack{a}$),
+ \item[$e$] voor elementen van stacks ($a$ voor een element van $\Stack{a}$
+ (zie \autoref{sec:def:io}),
\item[$\stk$] voor stacks ($\Stack{a}$ voor willekeurige $a$),
\item[$\ip$] voor inputstacks ($\Input$),
\item[$\op$] voor outputstacks ($\Output$),
diff --git a/defsyn.tex b/defsyn.tex
index 3884580..f376664 100644
--- a/defsyn.tex
+++ b/defsyn.tex
@@ -16,7 +16,8 @@ We definiëren de volgende syntax:
<String> ::= <Char><String> | $\lambda$
\end{grammar}
-Een karakter, $\SynChar$, is een symbool uit de ASCII tabel.
-
-Programma's zijn lijsten van statements. Merk op dat compositie van statements hier expliciet is door middel van de ``:'', waar compositie in de oorspronkelijke versie van de syntax impliciet was.
+Een karakter, $\SynChar$, is een symbool uit de ASCII tabel.
+Programma's zijn lijsten van statements. Merk op dat compositie van statements
+hier expliciet is door middel van de \lit{:}, waar compositie in de
+oorspronkelijke versie van de syntax impliciet was.
diff --git a/introcoms.tex b/introcoms.tex
index 202f525..638a11e 100644
--- a/introcoms.tex
+++ b/introcoms.tex
@@ -28,10 +28,11 @@ bespreken. Alle commando's betekenen nog steeds hetzelfde.
\item[\smurfinline{p} of $\StmPut$]
Hierbij wordt ervoor gezorgd dat de waarde van de variabelenaam bovenop de
stack verwijst naar de string die daaronder staat.
- \item[\smurfinline{g} of $\StmGet$]
- Zoekt de variabele op met als naam de bovenste waarde van de stack en zet de waarde van die variabele bovenop de stack.
+ \item[\smurfinline{g} of $\StmGet$]
+ Zoekt de variabele op met als naam de bovenste waarde van de stack en zet
+ de waarde van die variabele bovenop de stack.
\item[\smurfinline{h} of $\StmHead$]
- Vervang de string bovenop de stack met zijn eerste karakter.
+ Vervangt de string bovenop de stack door zijn eerste karakter.
\item[\smurfinline{t} of $\StmTail$]
Zet alles behalve de head van de string bovenop de stack op de stack.
\item[\smurfinline{q} of $\StmQuotify$]
diff --git a/rules.tex b/rules.tex
index 6600fce..b4f8fd9 100644
--- a/rules.tex
+++ b/rules.tex
@@ -8,11 +8,13 @@ geldt dat als elementen van de stack worden gebruikt in die regel, de stack
niet leeg mag zijn voor het uitvoeren van de regel. %todo waarom deze keuze?
De documentatie \cite{safalra} beschrijft niet wat er gebeurt wanneer er niet
-genoeg argumenten op de stack staan om een bepaalde instructie uit te voeren. In de \texttt{Perl}-interpreter van de taal is ervoor gekozen om een dergelijk programma abrupt te laten termineren met een foutmelding.
-Wij kiezen er echter voor om het in zulk soort gevallen onmogelijk te maken een
-afleidingsboom te maken (in tegenstelling tot bijvoorbeeld een errorstatus aan
-de rechterkant van transities toe te voegen), omdat dit het redeneren over
-Smurfprogramma's makkelijker zal maken.
+genoeg argumenten op de stack staan om een bepaalde instructie uit te voeren.
+In de \emph{Perl}-interpreter van de taal is ervoor gekozen om een dergelijk
+programma abrupt te laten termineren met een foutmelding. Wij kiezen er echter
+voor om het in zulk soort gevallen onmogelijk te maken een afleidingsboom te
+maken (in tegenstelling tot bijvoorbeeld een errorstatus aan de rechterkant van
+transities toe te voegen), omdat dit het redeneren over Smurfprogramma's
+makkelijker zal maken.
\input{ruleslambda}
\input{rulespush}