MODULE Postfix; CONST EOL = 12C; VAR ch : CHAR; PROCEDURE expression(); VAR addop: CHAR; PROCEDURE term(); VAR mulop: CHAR; PROCEDURE factor(); BEGIN (* factor *) IF ch = "(" THEN READ(ch); expression(); WHILE ch # ")" DO READ(ch); END; (* WHILE *) ELSIF ch = "[" THEN READ(ch); expression(); WHILE ch # "]" DO READ(ch) END; (* WHILE *) ELSE WHILE (ch < "a") OR (ch > "z") DO READ(ch); END; (* WHILE *) WRITE(ch); END; (* IF *) READ(ch); END factor; BEGIN (* term *) factor(); WHILE (ch = "*") OR (ch = "/") DO mulop := ch; READ(ch); factor(); WRITE(mulop); END; (* WHILE *) END term; BEGIN (* expression *) term(); WHILE (ch = "+") OR (ch = "-") DO addop := ch; READ(ch); term(); WRITE(addop); END; (* WHILE *) END expression; BEGIN (* Postfix *) READ(ch); WHILE ch # EOL DO expression(); WRITELN; READ(ch); END; (* WHILE *) END Postfix.