#include <perms.h>

//          Edinburgh IMP77 Compiler - Version 8.4
//
//     1  %begin

int main(int argc, char **argv) { /*%begin*/
  _imp_initialise(argc, argv);

  //     2    %routine read sym

  void READSYM(void) {
    //     3    %end

    return;
  } /* end of READSYM */

  //     4    %integer bp

  int BP;

  //     5    %integer sym, symtype

  int SYM;
  int SYMTYPE;

  //     6    %byteintegerarray buff(0:255)

  unsigned char BUFF[256];
  struct _imp_dv BUFF_dv = {BUFF, sizeof(unsigned char) /*, dims, <bounds> */};

  //     7
  //     8        %CYCLE

L_0001:;

//     9          bp=bp+1 %AND buff(bp)=sym

  BP = BP + 1;
  BUFF[BP] = SYM;

  //    10          read sym

  READSYM();

  //    11          %EXIT %IF symtype >= 0;                !pull in letters and digits

  if (SYMTYPE < 0) goto L_0002;
  goto L_0003;
L_0002:;

//    12        %REPEAT

  goto L_0001;
L_0003:;

//    13
//    14  !      for (;;) {
//    15  !        { BP = BP + 1; BUFF[BP] = SYM; }
//    16  !        READSYM();
//    17  !        if (SYMTYPE >= 0) break;
//    18  !      }
//    19
//    20  %endofprogram

  _imp_stop(0);
  return 0;
end_0:;
}