% 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 hieronder zullen gebruiken. Wanneer een commando iets met
elementen op de stack doet, worden die elementen altijd verwijderd.
Merk op dat de commando's niet exact hetzelfde zijn als in de voorbeeldprogramma's en de taalspecificatie; wij gebruiken een leesbaardere variant op de taal zodat het overzichtelijker is om eigenschappen ervan te bespreken. Alle commando's betekenen nog steeds hetzelfde.

\begin{description}[style=nextline,font=\normalfont]
	\item[\smurfinline{"..."} of $\StmPush~\texttt{...}$]
		waarbij `\texttt{...}' een string is. Zet de string \texttt{...} 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
		\texttt{\textbackslash} gebruikt om LF-karakters, dubbele aanhalingstekens
		en backslashes te escapen. Echt mag je in de string linefeeds gebruiken.
		Hierbij is het niet van belang om te weten hoe de user input word
		afgesloten.
	\item[\smurfinline{o} of $\StmOutput$]
		Stuurt het bovenste element van de stack naar `de output'.
	\item[\smurfinline{p} of $\StmPut$]
		Hierbij word ervoor gezorgd dat de waarde van de variablenaam 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$]
		Zet het eerste karakter van de string bovenop de stack op de
		stack.
	\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}

