File: POSTFI.PS of Tape: Various/Decus/decus-3
(Source file text) 

PROGRAM POSTFIX(INPUT,OUTPUT);

(* CONVERSION TO POSTFIX FORM *)

VAR CH : CHAR;

PROCEDURE FIND;
BEGIN REPEAT READ(CH)
      UNTIL (CH<>" ") AND NOT EOLN
END;

PROCEDURE EXPRESSION;
   VAR OP : CHAR;

   PROCEDURE TERM;

   PROCEDURE FACTOR;
   BEGIN IF CH="(" THEN
         BEGIN FIND; EXPRESSION;  (* CH =  ) *)
         END ELSE WRITE(CH);
         FIND
   END; (*FACTOR*)

   BEGIN FACTOR;
         WHILE CH="*" DO
         BEGIN FIND; FACTOR; WRITE("*")
         END
   END; (*TERM*)

BEGIN TERM;
   WHILE (CH="+")OR(CH="-") DO
      BEGIN  OP := CH; FIND; TERM; WRITE(OP)
      END
END; (*EXPRESSION*)

BEGIN FIND;
   REPEAT WRITE(" ");
      EXPRESSION;
      WRITELN
   UNTIL CH="."
END.