A large commit.
[pdp8.git] / sw / src / pascal / POSTFI.PS
diff --git a/sw/src/pascal/POSTFI.PS b/sw/src/pascal/POSTFI.PS
new file mode 100644 (file)
index 0000000..9e32b92
--- /dev/null
@@ -0,0 +1,41 @@
+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.