DECLARE
i : integer;
m : integer;
BEGIN
DECLARE
j: integer;
n: integer;
BEGIN
DECLARE
b: boolean;
BEGIN
b := not (i+j < 10) and not (m*n < 5);
put(b);
END;
END;
END;
-- Syntax trees are the obvious.
--
-- Postfix translation is:
-- b i j + 10 < not m n * 5 < not and assign
--
-- Three address translation is:
-- T1 := i + j
-- T1 := T1 < 10
-- T1 := not T1
-- T2 := m * n
-- T2 := T2 < 5
-- T2 := not T2
-- T1 := T1 and T2
-- b := T1