home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / FACILIS1.ZIP / POSTFIX.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1980-01-01  |  1.4 KB  |  79 lines

  1. Program Postfix (input, output);
  2. {
  3.   POSTFIX program from
  4.   PASCAL User Manual and Report
  5.   by Jensen & Wirth
  6.   pg. 75
  7.  
  8.   Modified for use with Facilis
  9.   by John R. Naleszkiewicz
  10. }
  11.  
  12. Var
  13.    i : integer;
  14.   st : string[255];
  15.   ch : char;
  16.  
  17. Procedure Find;
  18.   Begin
  19.     if i > Length ( st ) then
  20.       ch := ' '
  21.     else
  22.       Repeat
  23.         ch := st[i];
  24.         i := i+1;
  25.       until ( ch<>' ') or ( i > Length ( st ) )
  26.   End;
  27.  
  28. Procedure Expression;
  29. Var
  30.   op : char;
  31.  
  32.   Procedure Term;
  33.  
  34.     Procedure Factor;
  35.       Begin
  36.         if ch='(' then
  37.           Begin
  38.             Find;
  39.             Expression;   { ch = ) }
  40.           End
  41.         else
  42.           Write ( ch );
  43.         find
  44.       End;  { Factor }
  45.  
  46.     Begin  { Term }
  47.       Factor;
  48.       while ch='*' do
  49.         Begin
  50.           Find;
  51.           Factor;
  52.           Write ( '*' );
  53.         End
  54.     End;  { Term }
  55.  
  56.   Begin  { Expression }
  57.     Term;
  58.     while ( ch='+' ) OR ( ch='-' ) do
  59.       Begin
  60.         op := ch;
  61.         Find;
  62.         Term;
  63.         Write( op );
  64.       End
  65.   End;  { Expression }
  66.  
  67.   BEGIN  { Main }
  68.     Repeat
  69.       writeln ( 'Enter expression (terminate with ".")');
  70.       write ( '>' );
  71.       read(st);
  72.       i := 1;
  73.       Find;
  74.       if ch<>'.' then
  75.         expression;
  76.       writeln;
  77.     Until ( ch='.')
  78.   END.
  79.