home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol097 / init.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1984-04-29  |  5.3 KB  |  166 lines

  1. External Cross::Init(3);{$L-}{$E-}{$T-}{$C-}
  2.   PROCEDURE INIT_P3;
  3.   BEGIN
  4.     RESNUM[1] := 1;
  5.     RESNUM[2] := 1;
  6.     RESNUM[3] := 7;
  7.     RESNUM[4] :=15;
  8.     RESNUM[5] :=26;
  9.     RESNUM[6] :=32;
  10.     RESNUM[7] :=38;
  11.     RESNUM[8] :=42;
  12.     RESNUM[9] :=44;
  13.     RESNUM[10]:=47;
  14.     RESNUM[11]:=Num_Reserved_Words;
  15.     {%E}
  16. { NOTE THAT SYMBOLS THAT ARE NOT USED BY THIS PASCAL ARE MADE IMPOSSIBLE TO
  17.      MATCH BY THE ADDITION OF .....'S}
  18.     RESLIST[ 1] :='IF        '; RESSY [ 1] := IFSY;
  19.     RESLIST[ 2] :='TO        '; RESSY [ 2] := OTHERSY;
  20.     RESLIST[ 3] :='OF        '; RESSY [ 3] := OFSY;
  21.     RESLIST[ 4] :='IN        '; RESSY [ 4] := OTHERSY;
  22.     RESLIST[ 5] :='DO        '; RESSY [ 5] := DOSY;
  23.     RESLIST[ 6] :='OR        '; RESSY [ 6] := OTHERSY;
  24.     RESLIST[ 7] :='END       '; RESSY [ 7] := ENDSY;
  25.     RESLIST[ 8] :='FOR       '; RESSY [ 8] := OTHERSY;
  26.     RESLIST[ 9] :='SET       '; RESSY [ 9] := OTHERSY;
  27.     RESLIST[10] :='AND       '; RESSY [10] := OTHERSY;
  28.     RESLIST[11] :='NOT       '; RESSY [11] := OTHERSY;
  29.     RESLIST[12] :='VAR       '; RESSY [12] := VARSY;
  30.     RESLIST[13] :='NIL       '; RESSY [13] := OTHERSY;
  31.     RESLIST[14] :='DIV       '; RESSY [14] := OTHERSY;
  32.     RESLIST[15] :='LOOP......'; RESSY [15] := LOOPSY;
  33.     RESLIST[16] :='CHAR      '; RESSY [16] := OTHERSY;
  34.     RESLIST[17] :='GOTO      '; RESSY [17] := OTHERSY;
  35.     RESLIST[18] :='THEN      '; RESSY [18] := THENSY;
  36.     RESLIST[19] :='ELSE      '; RESSY [19] := ELSESY;
  37.     RESLIST[20] :='WITH      '; RESSY [20] := OTHERSY;
  38.     RESLIST[21] :='CASE      '; RESSY [21] := CASESY;
  39.     RESLIST[22] :='REAL      '; RESSY [22] := OTHERSY;
  40.     RESLIST[23] :='FILE      '; RESSY [23] := OTHERSY;
  41.     RESLIST[24] :='TYPE      '; RESSY [24] := TYPESY;
  42.     RESLIST[25] :='EXIT......'; RESSY [25] := EXITSY;
  43.     RESLIST[26] :='BEGIN     '; RESSY [26] := BEGINSY;
  44.     RESLIST[27] :='ARRAY     '; RESSY [27] := OTHERSY;
  45.     RESLIST[28] :='WHILE     '; RESSY [28] := OTHERSY;
  46.     RESLIST[29] :='CONST     '; RESSY [29] := CONSTSY;
  47.     RESLIST[30] :='LABEL     '; RESSY [30] := LABELSY;
  48.     RESLIST[31] :='UNTIL     '; RESSY [31] := UNTILSY;
  49.     RESLIST[32] :='RECORD    '; RESSY [32] := RECORDSY;
  50.     RESLIST[33] :='REPEAT    '; RESSY [33] := REPEATSY;
  51.     RESLIST[34] :='DOWNTO    '; RESSY [34] := OTHERSY;
  52.     RESLIST[35] :='PACKED    '; RESSY [35] := OTHERSY;
  53.     RESLIST[36] :='OTHERS....'; RESSY [36] := OTHERSSY;
  54.     RESLIST[37] :='EXTERN....'; RESSY [37] := EXTERNSY;
  55.     RESLIST[38] :='INTEGER   '; RESSY [38] := OTHERSY;
  56.     RESLIST[39] :='BOOLEAN   '; RESSY [39] := OTHERSY;
  57.     RESLIST[40] :='FORWARD   '; RESSY [40] := FORWARDSY;
  58.     RESLIST[41] :='FORTRAN...'; RESSY [41] := FORTRANSY;
  59.     RESLIST[42] :='FUNCTION  '; RESSY [42] := FUNCT_SY;
  60.     RESLIST[43] :='EXTERNAL  '; RESSY [43] := EXTERNSY;
  61.     RESLIST[44] :='PROCEDURE '; RESSY [44] := PROC_SY;
  62.     RESLIST[45] :='INITPROCE.'; RESSY [45] := INITPROCSY;
  63.     ResList[46] :='OTHERWISE.'; RESSY [46] := Other_Wise;
  64.     ResList[47] :='SUBPROGRA.'; RESSY [47] := Sub_Program;
  65.   END;
  66.   {%E}
  67.   PROCEDURE INIT_PROC;
  68.   BEGIN
  69.     PROCDEC:=0;
  70.     No_Main:=False;
  71.     Bump:=False;
  72.     Nasty:=False;
  73.     RightMargin:=75;
  74.     I := 0;
  75.     BUFFLEN := 0;
  76.     BUFFMARK := 0;
  77.     BUFFERPTR := 2;
  78.     BUFFINDEX := 0;
  79.     REALLINCNT:= 0;
  80.     LINECNT :=0;
  81.     BLOCKNR := 0;
  82.     LEVEL := 0;
  83.     PAGECNT := 1;
  84.     PAGECNT2 := 0;
  85.     INCREMENT := 1;
  86.     EOB  := FALSE;
  87.     ERRFLAG := FALSE;
  88.     OLDSPACES := FALSE;
  89.     CH := ' ';
  90.     BMARKTEXT := ' ';
  91.     EMARKTEXT := ' ';
  92.     SY := '          ';
  93.     MESSAGE := 'Error in blockstructure';
  94.     DIGITS := ['0'..'9'];
  95.     LETTERS := ['A'..'Z','a'..'z','$','_'];
  96.   ALPHANUM:=['0'..'9','A'..'Z','a'..'z','$','_'](*LETTERS OR DIGITS*);
  97.     DECSYM := [LABELSY..VARSY];
  98.     PROSYM := [FUNCT_SY..INITPROCSY];
  99.     ENDSYM := [FUNCT_SY..EOBSY];      (*PROSYM OR ENDSYMBOLS*)
  100.     BEGSYM := [BEGINSY..IFSY];
  101.     RELEVANTSYM := [LABELSY..INITPROCSY (*DECSYM OR PROSYM*)
  102.                     ,BEGINSY,FORWARDSY,FORTRANSY,EXTERNSY,EOBSY];
  103.   END;
  104.   {%E}
  105.   PROCEDURE INIT;
  106.   BEGIN (*INIT*)
  107.     FOR CH := First_Char TO Last_Char DO FIRSTNAME [CH] := NIL;
  108.     FOR CH := ' ' TO '_' DO DELSY [CH] := OTHERSY;
  109.     DELSY ['('] := LPARENT;
  110.     DELSY [')'] := RPARENT;
  111.     DELSY ['['] := LPARENT;
  112.     DELSY [']'] := RPARENT;
  113.     DELSY [';'] := SEMICOLON;
  114.     DELSY ['.'] := POINT;
  115.     DELSY [':'] := COLON;
  116.     FOR I := 1 TO 147 DO BUFFER [I] := ' ';
  117.     I := 0;
  118.     NEW (FIRSTNAME['M']);
  119.     LISTPTR := FIRSTNAME ['M'];
  120.     WITH FIRSTNAME ['M']^ DO
  121.     BEGIN
  122.       NAME := 'MAIN.     ';
  123.       LLINK := NIL;
  124.       RLINK := NIL;
  125.       NEW (FIRST);
  126.       LAST := FIRST;
  127.       PROCVAR := 1;
  128.       WITH LAST^ DO
  129.       BEGIN
  130.         LINENR := LINECNT;
  131.         CONTLINK := NIL;
  132.       END;
  133.       NEW (CALLED);
  134.       WITH CALLED^ DO
  135.       BEGIN
  136.         PROCNAME := FIRSTNAME ['M'];
  137.         NEXTPROC := NIL;
  138.         NEW (FIRST);
  139.         FIRST^.LINENR := 0;
  140.         FIRST^.CONTLINK := NIL;
  141.         LAST := FIRST;
  142.       END;
  143.       {%E}
  144.       NEW (CALLEDBY);
  145.       WITH CALLEDBY^ DO
  146.       BEGIN
  147.         PROCNAME := FIRSTNAME ['M'];
  148.         NEXTPROC := NIL;
  149.         NEW (FIRST);
  150.         FIRST^.LINENR := 0;
  151.         FIRST^.CONTLINK := NIL;
  152.         LAST := FIRST;
  153.       END;
  154.     END;
  155.     NEW (PROC_CF);
  156.     WITH PROC_CF^ DO
  157.     BEGIN
  158.       PROCNAME := FIRSTNAME ['M'];
  159.       NEXTPROC := NIL;
  160.       LINENR   := 0;
  161.       PROCLEVEL:= 0;
  162.     END;
  163.     PROC_CL := PROC_CF;
  164.   END (*INIT*) ;
  165. .
  166.