home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / COPASC.ZIP / HEADER.MOD < prev    next >
Encoding:
Text File  |  1987-09-07  |  3.3 KB  |  97 lines

  1. const
  2.     ALNG =  10;         (* NO. OF SIGNIFICANT CHARS IN IDENTIFIERS *)
  3.     AMAX =  30;         (* SIZE OF array-TABLE   *)
  4.     BMAX =  20;         (* SIZE OF BLOCK-TABLE   *)
  5.     C2MAX = 20;         (* SIZE OF REAL CONSTANT TABLE     *)
  6.     CSMAX = 30;         (* MAX NO. OF CASES      *)
  7.     CMAX = 600;         (* SIZE OF CODE          *)
  8.     ERMAX = 59;         (* MAX ERROR NO.          *)
  9.     EMAX  = 77;         (* MAX EXPONENT of REAL NUMBERS     *)
  10.     EMIN = -78;         (* MIN EXPONENT          *)
  11.     HEADER = 'Co-Pascal       December 1985    MS-DOS  ver 2.0';
  12.     KMAX = 7;         (* max No. of significant digits     *)
  13.     LLNG = 83;         (* input line length     *)
  14.     LINELENG = 132;  (* output line length    *)
  15.     LINELIMIT = 200; (* max No. of run time output lines *)
  16.     NKW = 29;         (* No. of key words      *)
  17.     NMAX = MAXINT;   (* 2**16-1              *)
  18.     LMAX = 7;         (* maximum level          *)
  19.     ORDMINCHAR = 0;  (* ORD of first char     *)
  20.     ORDMAXCHAR = 255;(* ORD of last char      *)
  21.     OMAX =  63;         (* highest order code    *)
  22.     SMAX = 400;         (* size of string-table  *)
  23.     STMAX = 1100;
  24.     STKINCR = 200;
  25.     PMAX = 4;         (* max # of concurrent processes     *)
  26.     TMAX = 100;         (* size of identifier table     *)
  27.     XMAX = MAXINT;   (* 2**16-1                 *)
  28.  
  29. type INDEX  = -XMAX .. +XMAX;
  30.      ALFA   = array[ 1..ALNG ] of char;
  31.      FNAME  = string[10];  (* [8] name + [2] drive  *)
  32.      OBJECT = ( KONSTANT, VARIABLE, TYPE1, PROZEDURE, FUNKTION      );
  33.      TYPES  = ( NOTYP, INTS, REALS, BOOLS, CHARS, ARRAYS, RECORDS );
  34.      CHTP   = ( LETTER, LOWCASE, NUMBER, SPECIAL, ILLEGAL      );
  35.      ITEM   = record
  36.         TYP: TYPES;
  37.         REF: INDEX;
  38.           end;
  39.      ORDER  = record
  40.         F: -OMAX..+OMAX;
  41.         X: -LMAX..+LMAX;
  42.         Y: -NMAX..+NMAX;
  43.           end;
  44.  
  45.      TYPSET = SET of TYPES;
  46.  
  47. var  DATA,
  48.      SOURCE    :       TEXT;
  49.      SFILE,
  50.      DFILE     :      FNAME;  (* source & data file DISK name         *)
  51.      CH           :       CHAR;  (* previous  char read from source program *)
  52.      STANTYPS  :     TYPSET;
  53.      PROGNAME  :       ALFA;
  54.      CmdLine   : string[30];  (* CP/M : absolute $80 *)
  55.      SS           : array[1..25] of char;    (* used for P_CODE_IO *)
  56.      m, n      :    integer;
  57.      option    :       char;
  58.      DEBUG     :    boolean;  (* run-time program info on/off flag  *)
  59.  
  60. (*
  61.    ===============
  62.    compiler tables  - (Global) used by INTERPRT and COMPILE
  63.    ===============
  64. *)
  65.  
  66.     TAB:     array [0 .. TMAX] of record    (* identifier table *)
  67.            NAME  : ALFA;
  68.            LINK  : INDEX;
  69.            OBJ   : OBJECT;
  70.            TYP   : TYPES;
  71.            REF   : INDEX;
  72.            NORMAL: BOOLEAN;
  73.            LEV   : 0 .. LMAX;
  74.            ADR   : INTEGER;
  75.          end;
  76.  
  77.     ATAB:    array [1 .. AMAX] of record     (* array-table *)
  78.            INXTYP, ELTYP: TYPES;
  79.            ELREF, LOW, HIGH, ELSIZE, SIZE: INDEX;
  80.          end;
  81.  
  82.     BTAB:    array [ 1..BMAX ] of record     (* block-table  *)
  83.            LAST,
  84.            LASTPAR,
  85.            PSIZE,
  86.            VSIZE :     INDEX;
  87.          end;
  88.  
  89.     STAB   : array [ 0.. SMAX] of CHAR;     (* string table *)
  90.     CODE   : array [ 0.. CMAX] of ORDER;
  91.     RCONST : array [ 1..C2MAX] of  REAL;
  92.     B       : integer;    (* ---> index to BTAB,     *)
  93.  
  94.     IFLAG,          (* INPUT  found in program head *)
  95.     OFLAG,          (* OUTPUT found in program head *)
  96.     DFLAG  : BOOLEAN;      (* DATA   found in program head *)
  97.