X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;ds=sidebyside;f=syntax.tex;h=8917a6b370e28491ef5cc9719648debd6da02e2b;hb=d5eb78db13b8b04fdf0a3edf3e636dd9006948af;hp=af2be3c61f13ce53ab5de0a75c2c66b8fd3db1d6;hpb=1e99906ba6bf2dc7453ba366e2e7c8f77ac4b916;p=sec1415.git diff --git a/syntax.tex b/syntax.tex index af2be3c..8917a6b 100644 --- a/syntax.tex +++ b/syntax.tex @@ -1,8 +1,8 @@ \subsection{Originele Syntax} De ware syntax voor piet is makkelijk te beschrijven in een zeer grote tabel -jie gedeeltelijk beschreven is in tabel \ref{tab:sy1}. +die gedeeltelijk beschreven is in tabel \ref{tab:sy1}. \begin{table}[h] - \caption{Gedeeltelijke ware syntax van \textit{Piet}} + \caption{Gedeelte van ware syntax van \textit{Piet}} \label{tab:sy1} \begin{tabular}{l|cccccc} %p{1em}|p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}} \textbackslash & {\color{lred}\#} & {\color{lyellow}\#} & @@ -34,15 +34,19 @@ jie gedeeltelijk beschreven is in tabel \ref{tab:sy1}. \subsection{Tussentaal} Om de notatie leesbaar en overzichtelijk te houden beschrijven we de syntax -niet in de oorspronkelijke kleuren notatie maar gebruiken we een woordelijke +niet in de oorspronkelijke kleurennotatie maar gebruiken we een textuele notatie. Dan ziet de grammatica er als volgt uit:\\ -$S ::= S1 ; S2\ |\ push\ n1\ |\ pop\ z\ |\ add\ z1\ z2\ |\ subtract\ z1\ z2\ -|\ multiply\ z1\ z2\ |\ divide\ z1\ z2\ |\\ mod\ z1\ z2\ |\ not\ z\ |\ greater\ -z1\ z2\ |\ pointer\ z\ |\ switch\ z\ |\ duplicate\ z\ |\ roll\ z1\ z2\ |\\ -in(char)\ c\ |\ in(number)\ z\ |\ out(char)\ z\ |\ out(number)\ z$\\ waarbij -$n\in\mathbb{N}, z\in\mathbb{Z}$ en $c\in\{1, 2, ..., m$ waar $m$ het nummer is -van het hoogste unicode karakter.\\ +$S ::= S_1 ; S_2\ |\ push \ |\ pop\ |\ add\ |\ subtract\ +|\ multiply\ |\ divide\ |\mod\ |\\ not\ |\ greater\ +|\ pointer\ |\ switch\ |\ duplicate\ |\ roll\ |\ +innum\ |\ outnum$\\ -Een probleem dat we verwachten is dat we op -met deze beschrijving zeer grote bewijs-bomen/rijen krijgen vanwege het grote -aantal composities, hier moeten we misschien nog iets anders op verzinnen. +\subsection{Piet'} +Omdat sommige simpele expressies in \textit{While} veel regels in beslag nemen +als deze omgeschreven zouden worden naar een semantisch equivalent programma in +de bovengenoemde tussentaal hebben we ook nog een tweede syntax: Piet'. In +Piet' worden de commando's die beschreven worden in de tussentaal aangegeven +door de eerste drie letters van het commando, met uitzondering van het commando +\textit{push}. Voor het ophalen van een variabele zoals staat beschreven in +Paragraaf~\ref{subsec:unair} gebruiken we ook \textit{get n}. De commando's +worden gescheiden door komma's in plaats van puntkomma's.