summaryrefslogblamecommitdiff
path: root/rules.tex
blob: b4f8fd9be021facf1e50810abd4545512b2f957c (plain) (tree)
1
2
3
4
5
6
7
8
9
10


                                    
                                                                              

                                                                               
                                                                             





                                                                               
 
                   
                 
                 
                 
                    
                
                
                  
                   
                 
 
% vim: set spelllang=nl:
\section{Regels} %todo working title
\label{sec:rules}

We zullen nu ieder syntaxelement nader specificeren. Ook zullen regels voor de
natuurlijke semantiek van Smurf worden geïntroduceerd. Bij elk van deze regels
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 \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}
\input{ruleshead}
\input{rulestail}
\input{rulesquotify}
\input{rulescat}
\input{rulesget}
\input{rulesput}
\input{rulesinput}
\input{rulesoutput}
\input{rulesexec}