A large commit.
[pdp8.git] / sw / src / pascal / POSTFI.PS
1 PROGRAM POSTFIX(INPUT,OUTPUT);
2
3 (* CONVERSION TO POSTFIX FORM *)
4
5 VAR CH : CHAR;
6
7 PROCEDURE FIND;
8 BEGIN REPEAT READ(CH)
9 UNTIL (CH<>" ") AND NOT EOLN
10 END;
11
12 PROCEDURE EXPRESSION;
13 VAR OP : CHAR;
14
15 PROCEDURE TERM;
16
17 PROCEDURE FACTOR;
18 BEGIN IF CH="(" THEN
19 BEGIN FIND; EXPRESSION; (* CH = ) *)
20 END ELSE WRITE(CH);
21 FIND
22 END; (*FACTOR*)
23
24 BEGIN FACTOR;
25 WHILE CH="*" DO
26 BEGIN FIND; FACTOR; WRITE("*")
27 END
28 END; (*TERM*)
29
30 BEGIN TERM;
31 WHILE (CH="+")OR(CH="-") DO
32 BEGIN OP := CH; FIND; TERM; WRITE(OP)
33 END
34 END; (*EXPRESSION*)
35
36 BEGIN FIND;
37 REPEAT WRITE(" ");
38 EXPRESSION;
39 WRITELN
40 UNTIL CH="."
41 END.