Commit | Line | Data |
---|---|---|
81e70d48 PH |
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. |