<program> → program <id> (<identifier_list>)
;
<declarations>
<compound_statement>
.
<identifier_list> → <id> ( , <id> ) *
<declarations> → var (<identifier_list> : <type> ; ) +
<type> → integer | boolean
<statement> → <variable> <assignop> <expression>
| <compound_statement>
| if <expression> then <statement> <else_clause>
| while <expression> do <statement>
<else_clause> → ( else <statement> )?
<expression> → <simple_expression>
| <simple_expression> <relop> <simple_expression>
<simple_expression> → <term> ( <addop>
<term> ) *
| <sign> <term>
<factor> → <id> | (<expression>) | <num> | not <factor> | true | false
<sign> → + | -
<relop> → = | <> | < | <= | > | >=
<mulop> → * | / | mod | div | and
<addop> → + | - | or
Run your program on the following inputs:
(a)
program decisions (input, output);
var i, j : integer;
variable : boolean;
begin
if i > j then
i := i + j
else if variable then
if i <= j then
i := 0
else
j := 0
end.
(b)
program HasLoops (input, output);
var i, j : integer;
NotDone : boolean ;
begin
while (i < j) and NotDone do begin
k := k + 1;
while i = j do
i := i + 2
end
end.
(c) One of your own choosing.
Back to CS 230 Home Page