blob: 090e2afbc8654d2af19e7f15e2ef9c2788305e41 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
% vim: set spelllang=nl:
\subsection{Commando's}
\label{sec:intro:commands}
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 in de rest van dit werkstuk zullen gebruiken. De commando's
zijn dus niet exact hetzelfde als in de voorbeeldprogramma's en de specificatie
van de taal~\cite{safalra}. Met onze leesbaardere variant is het makkelijker om
over de taal te redeneren.
Voor ieder commando geldt dat wanneer het elementen op de stack gebruikt, die
elementen worden verwijderd.
\begin{description}[style=nextline,font=\normalfont]
\item[\smurfinline{"..."} of $\StmPush~\texttt{...}$, waar \lit{...} een
string is]
Zet de string \lit{...} op de stack.
\item[\smurfinline{+} of $\StmCat$]
Concateneert de bovenste twee strings (laagste eerst) op de stack en zet
het resultaat op de stack.
\item[\smurfinline{i} of $\StmInput$]
Plaatst een string van `user input' op de stack. Hierbij wordt
\lit{\textbackslash} gebruikt om LF-karakters, dubbele aanhalingstekens en
backslashes te escapen. Afhankelijk van de inputmethode kan het ook
mogelijk zijn dat LF-karakters in de string voorkomen. In deze specificatie
abstraheren we van inputmethodes.
\item[\smurfinline{o} of $\StmOutput$]
Stuurt het bovenste element van de stack naar `de output'.
\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{h} of $\StmHead$]
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$]
Manipuleert de string bovenop de stack zodat die als $\StmPush$-commando in
een Smurfprogramma kan worden gebruikt: escapet LF-karakters, dubbele
aanhalingstekens en back\-slashes met een backslash, en plaatst dubbele
aanhalingstekens om de hele string. Het resultaat wordt op de stack gezet.
\item[\smurfinline{x} of $\StmExec$]
Voert de string bovenop de stack uit als Smurfprogramma. Het programma
begint met een schone toestand, d.w.z. met een lege stack en variable
store. Dit commando maakt condities, recursie en iteratie mogelijk.
\end{description}
|