home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
modula2
/
library
/
modula1
/
postfix.mod
< prev
next >
Wrap
Text File
|
1987-06-11
|
1KB
|
59 lines
(* Convert expressions from infix to postfix form. Each
expression is written on a separate line. Expressions
have the following syntax:
expression = term {("+"|"=") term}.
term = factor {"*" factor}.
factor = letter | "(" expression ")". *)
MODULE postfix;
FROM InOut IMPORT Read, Write, WriteLn, Done, OpenInput;
VAR ch: CHAR;
PROCEDURE expression;
VAR op: CHAR;
PROCEDURE factor;
BEGIN
IF ch = '(' THEN
Read(ch);
expression;
Read(ch);
ELSE
Write(ch); Read(ch)
END
END factor;
PROCEDURE term;
BEGIN
factor;
WHILE ch = '*' DO
Read(ch);
factor;
Write('*');
END
END term;
BEGIN
term;
WHILE (ch = '+') OR (ch = '-') DO
op := ch;
Read(ch);
term;
Write(op);
END
END expression;
BEGIN
OpenInput('TEXT');
LOOP
Write(' ');
Read(ch);
IF NOT Done THEN EXIT END;
expression;
WriteLn;
END
END postfix.