31 lines
845 B
Plaintext
31 lines
845 B
Plaintext
real Stack(10);
|
|
int SP;
|
|
|
|
proc Push(X);
|
|
real X;
|
|
[Stack(SP):= X; SP:= SP+1];
|
|
|
|
func real Pop;
|
|
[SP:= SP-1; return Stack(SP)];
|
|
|
|
char Str; real Top; int Token, I;
|
|
[Str:= "3 4 2 * 1 5 - 2 3 ^^ ^^ / + ";
|
|
SP:= 0;
|
|
Format(6, 8);
|
|
loop [repeat Token:= Str(0); Str:= Str+1;
|
|
until Token # ^ ; \skip space characters
|
|
case Token of
|
|
^+: [Top:= Pop; Push(Pop+Top)];
|
|
^-: [Top:= Pop; Push(Pop-Top)];
|
|
^*: [Top:= Pop; Push(Pop*Top)];
|
|
^/: [Top:= Pop; Push(Pop/Top)];
|
|
^^: [Top:= Pop; Push(Pow(Pop, Top))];
|
|
$A0: quit \space with MSB set
|
|
other [Push(float(Token-^0))]; \single digit number
|
|
ChOut(0, Token);
|
|
for I:= 0 to SP-1 do \show stack
|
|
RlOut(0, Stack(I));
|
|
CrLf(0);
|
|
];
|
|
]
|