X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=sw%2Fsrc%2Fpascal%2FPOSTFI.PS;fp=sw%2Fsrc%2Fpascal%2FPOSTFI.PS;h=9e32b926f703ec7acb6c3cd7b36fe5efd67580fd;hb=81e70d488b71bf995c459ca3a02c025993460ffa;hp=0000000000000000000000000000000000000000;hpb=07ec0278333ed187ac242dedcff13c56cf1b0b91;p=pdp8.git diff --git a/sw/src/pascal/POSTFI.PS b/sw/src/pascal/POSTFI.PS new file mode 100644 index 0000000..9e32b92 --- /dev/null +++ b/sw/src/pascal/POSTFI.PS @@ -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.