X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=syntax.tex;h=60f8767f0b303e6d399ff6213ee2a990bfcf97b1;hb=1cf7e07b8cc763e67d6ada9deff8c73a81f38641;hp=8f8c6964eff236b56dab8fbee0ab9867324b76f2;hpb=f051a8460b9575cae31163616b41230bb5651d57;p=sec1415.git diff --git a/syntax.tex b/syntax.tex index 8f8c696..60f8767 100644 --- a/syntax.tex +++ b/syntax.tex @@ -36,13 +36,20 @@ die gedeeltelijk beschreven is in tabel \ref{tab:sy1}. Om de notatie leesbaar en overzichtelijk te houden beschrijven we de syntax niet in de oorspronkelijke kleuren notatie maar gebruiken we een woordelijke 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 \: n\ |\ 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. +Waarbij $n \in \mathbb{N}_1$.\\ +De commando's in(char) en out(char) worden hier niet behandeld. + +\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 3 letters van het commando, met uitzondering van het commando +\textit{push}. Voor het ophalen van een variabele zoals staat beschreven in +subsectie \ref{subsec:unair} gebruiken we ook \textit{get n}. De commando's +worden gescheiden door komma's inplaats van puntkomma's.