--- /dev/null
+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.