Vaje#
Naloga 1#
Napišite sintaktično drevo, ki ustreza programom:
#a := 2 + #b
IF #x = 2 THEN
#x := 3
ELSE
SKIP
WHILE #z > 0 DO
#z := #z - 1;
#w := #z + #w
(WHILE #z > 0 DO #z := #z - 1);
#w := #z + #w
Naloga 2#
Programe najprej napišite v OCamlu, nato pa jih prevedite v programski jezik IMP s predavanj.
Napišite program, ki sešteje vsa naravna števila manjša od
n
.Napišite program, ki preveri ali je podano število praštevilo.
Naloga 3#
Razmislite, kako bi dopolnili sintakso in evaluator jezika IMP za:
logična veznika
&&
in||
,ukaz
SWITCH
, ki zamenja vrednosti dveh lokacij,ukaz
FAIL
, ki prekine izvajanje programa.
Naloga 4#
Izboljšajte razčlenjevalnik, da bo dopolnil nepopolne pogojne stavke. Ukaz IF b THEN c
naj se prevede v enako sintaktično drevo kot IF b THEN c ELSE SKIP
.
Naloga 5#
Dopolnite vse dele IMPa s podporo za zanke FOR
oblike:
FOR #x := 0 TO 100 DO
cmd
Pri tem sta 0
in 100
seveda zgolj zgled poljubnih aritmetičnih izrazov.