PROCEDURE ^ Expression() : BOOLEAN;
PROCEDURE Factor() : BOOLEAN;
(* Factor = "(" Expression ")" | ("+" | "-") Factor |
Constant .
*)
BEGIN
IF sy = "(" THEN
GetSy;
IF ~Expression() OR (sy # ")") THEN
RETURN FALSE
END;
GetSy;
RETURN TRUE
ELSIF (sy = "+") OR (sy = "-") THEN
GetSy;
RETURN Factor()
ELSE
RETURN Constant()
END;
END Factor;
PROCEDURE Term() : BOOLEAN;
(* Term = Factor { ("*" | "/") Factor } . *)
BEGIN
IF ~Factor() THEN RETURN FALSE END;
WHILE (sy = "*") OR (sy = "/") DO
GetSy; (* skip operator *)
IF ~Factor() THEN RETURN FALSE END;
END;
RETURN TRUE
END Term;
|