% vim: set spelllang=nl: \documentclass[a4paper]{article} \usepackage[hidelinks]{hyperref} \usepackage[dutch]{babel} \title{Smurf} \author{Evi Sijben, Ward Theunisse en Camil Staps} \date{14 april 2016} \begin{document} \maketitle In ons project willen we de semantiek van Smurf\footnote{\url{http://esolangs.org/wiki/Smurf}} defini\"eren en bestuderen. Smurf, een esoterische taal, is een kleinere versie van Muriel. Het enige native data type is de string. Er is zowel een stack als een variable store. Er zijn standaardoperaties (concatenatie, head, tail, etc.) die op de stack werken. De variable store wordt aangepast door eerst een naam en een waarde op de stack te zetten en dan `put' uit te voeren. De store kan uitgelezen worden door de naam van de variabele op de stack te zetten en `get' uit te voeren. Ten slotte is er een functie `execute' om een string op de stack als Smurf-programma uit te voeren. De volledige stack en variable store wordt dan gewist, waarna het nieuwe programma wordt uitgevoerd. Het op de stack zetten van een nieuw Smurf-programma en dat uitvoeren is de enige mogelijkheid tot recursie of iteratie. In het bijzonder zijn we benieuwd wat voor aanpassingen we moeten doen aan de semantiek om stackgeheugen en het `execute'-commando te modelleren. Er is een aantal dingen onduidelijk in de specificatie, zowel op syntactisch als op semantisch niveau. Bijvoorbeeld is het ongedefinieerd wat er gebeurt wanneer het programma dat middels `execute' wordt uitgevoerd termineert: termineert het ouderprogramma dan ook, of gaat de uitvoering hiervan door op het punt na `execute'? In eerste instantie zullen we hiervoor een geannoteerde specificatie\footnote{\url{http://safalra.com/programming/esoteric-languages/smurf/specification}}, waarin al een aantal onduidelijkheden zijn uitgelicht en suggesties voor verdere specificatie zijn gegeven, gebruiken. Deze vrije definities geven ook de mogelijkheid om ons project later te verbreden, door bijvoorbeeld de invloed van een andere interpretatie op de semantiek te bekijken. \end{document}