home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 02 / init.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1988-02-08  |  17.9 KB  |  499 lines

  1. UNIT Init;
  2.  
  3. INTERFACE
  4.  
  5. USES Global, ScanCode;
  6.  
  7. PROCEDURE InitStNames;
  8. PROCEDURE InitStandardTypes;
  9. PROCEDURE InitStdNames;
  10. PROCEDURE InitUndeclared;
  11. PROCEDURE InitScalars;
  12. PROCEDURE InitSets;
  13. PROCEDURE InitTables;
  14.  
  15.  
  16. IMPLEMENTATION
  17.  
  18. PROCEDURE InitStNames;
  19.  
  20. BEGIN
  21.   Na[ 1] := 'FALSE   ';  Na[ 2] := 'TRUE    ';  Na[ 3] := 'INPUT   ';
  22.   Na[ 4] := 'OUTPUT  ';  Na[ 5] := 'GET     ';  Na[ 6] := 'PUT     ';
  23.   Na[ 7] := 'RESET   ';  Na[ 8] := 'REWRITE ';  Na[ 9] := 'READ    ';
  24.   Na[10] := 'WRITE   ';  Na[11] := 'PACK    ';  Na[12] := 'UNPACK  ';
  25.   Na[13] := 'NEW     ';  Na[14] := 'RELEASE ';  Na[15] := 'READLN  ';
  26.   Na[16] := 'WRITELN ';
  27.   Na[17] := 'ABS     ';  Na[18] := 'SQR     ';  Na[19] := 'TRUNC   ';
  28.   Na[20] := 'ODD     ';  Na[21] := 'ORD     ';  Na[22] := 'CHR     ';
  29.   Na[23] := 'PRED    ';  Na[24] := 'SUCC    ';  Na[25] := 'EOF     ';
  30.   Na[26] := 'EOLN    ';
  31.   Na[27] := 'SIN     ';  Na[28] := 'COS     ';  Na[29] := 'EXP     ';
  32.   Na[30] := 'SQRT    ';  Na[31] := 'LN      ';  Na[32] := 'ARCTAN  ';
  33.   Na[33] := 'CLOSE   ';  Na[34] := 'ROUND   ';  Na[35] := 'MARK    ';
  34.   Na[36] := 'DISPOSE ';  Na[37] := 'MAXINT  ';
  35. END;
  36.  
  37.  
  38. PROCEDURE InitStandardTypes;
  39.  
  40. VAR Sp: StP;
  41.  
  42. BEGIN
  43.   New(IntPtr);
  44.   WITH IntPtr^ DO BEGIN
  45.     Size := IntSize;   Form := Scalar;  ScalKind := Standard
  46.   END;
  47.   New(LongPtr);
  48.   WITH LongPtr^ DO BEGIN
  49.     Size := LongSize;  Form := Scalar;  ScalKind := Standard
  50.   END;
  51.   New(RealPtr);
  52.   WITH RealPtr^ DO BEGIN
  53.     Size := RealSize;  Form := Scalar;  ScalKind := Standard
  54.   END;
  55.   New(CharPtr);
  56.   WITH CharPtr^ DO BEGIN
  57.     Size := CharSize;  Form := Scalar;  ScalKind := Standard
  58.   END;
  59.   New(BooleanPtr);
  60.   WITH BooleanPtr^ DO BEGIN
  61.     Size := BoolSize;  Form := Scalar;  ScalKind := Declared
  62.   END;
  63.   New(NilPtr);
  64.   WITH NilPtr^ DO BEGIN
  65.     ElType := NIL;     Size := PtrSize; Form := Pointers
  66.   END;
  67.   New(ParmPtr);
  68.   WITH ParmPtr^ DO BEGIN
  69.     Size := ParmSize;  Form := Scalar;  ScalKind := Standard
  70.   END;
  71.   New(TextPtr);
  72.   WITH TextPtr^ DO BEGIN
  73.     FileType := CharPtr;  Size := CharSize+1; (* FILEHANDLE *)
  74.     Form := Files
  75.   END
  76. END;
  77.  
  78.  
  79. PROCEDURE InitStdNames;
  80.  
  81. VAR cp, cp1: KonstP;
  82.     i: INTEGER;
  83.  
  84. BEGIN
  85.   New(cp);
  86.   WITH cp^ DO BEGIN
  87.     Name := 'INTEGER ';  BezType := IntPtr;  Klass := TypeClass
  88.   END;
  89.   InsertID(cp);
  90.   New(cp);
  91.   WITH cp^ DO BEGIN
  92.     Name := 'REAL    ';  BezType := RealPtr;  Klass := TypeClass
  93.   END;
  94.   InsertID(cp);
  95.   New(cp);
  96.   WITH cp^ DO BEGIN
  97.     Name := 'CHAR    ';  BezType := CharPtr;  Klass := TypeClass
  98.   END;
  99.   InsertID(cp);
  100.   New(cp);
  101.   WITH cp^ DO BEGIN
  102.     Name := 'BOOLEAN ';  BezType := BooleanPtr;  Klass := TypeClass
  103.   END;
  104.   InsertID(cp);
  105.   New(cp);
  106.   WITH cp^ DO BEGIN
  107.     Name := 'LONGINT ';  BezType := LongPtr;  Klass := TypeClass
  108.   END;
  109.   InsertID(cp);
  110.   New(cp);
  111.   WITH cp^ DO BEGIN
  112.     Name := 'TEXT    ';  BezType := TextPtr;  Klass := TypeClass
  113.   END;
  114.   InsertID(cp);
  115.   cp1 := NIL;
  116.   FOR i := 1 TO 2 DO BEGIN
  117.     New(cp);
  118.     WITH cp^ DO BEGIN
  119.       Name := Na[i];  BezType := BooleanPtr;  Next := cp1;
  120.       Values.GanzeZahl := i-1;  Klass := KonstKlasse
  121.     END;
  122.     InsertID(cp);  cp1 := cp;
  123.   END;
  124.   BooleanPtr^.ScalConst := cp;
  125.   New(cp);
  126.   WITH cp^ DO BEGIN
  127.     Name := 'NIL     ' ;  BezType := NilPtr;  Next := NIL;
  128.     Values.GanzeZahl := 0;  Klass := KonstKlasse
  129.   END;
  130.   InsertID(cp);
  131.   FOR i := 3 TO 4 DO BEGIN
  132.     New(cp);
  133.     WITH cp^ DO BEGIN
  134.       Name := Na[i];  BezType := TextPtr;  Klass := VarClass;
  135.       VarKind := Actual;  Next := NIL;  VarsBSt := 1;
  136.       VarAddr := VirginLocStk + (i-3) * (CharMax+1);
  137.     END;
  138.     InsertID(cp)
  139.   END;
  140.   New(cp);  (* CLOSE *)
  141.   WITH cp^ DO BEGIN
  142.     Name := Na[33];  BezType := NIL;  Next := NIL;
  143.     Key := 17;  Klass := ProcClass;  IsDeclDas := Standard;
  144.   END;
  145.   InsertID(cp);
  146.   FOR i := 5 TO 16 DO BEGIN
  147.     New(cp);
  148.     WITH cp^ DO BEGIN
  149.       Name := Na[i];  BezType := NIL;  Next := NIL;
  150.       Key := i-4;  Klass := ProcClass;  IsDeclDas := Standard
  151.     END;
  152.     InsertID(cp)
  153.   END;
  154.   New(cp);
  155.   WITH cp^ DO BEGIN
  156.     Name := Na[35];  BezType := NIL;  Next := NIL;
  157.     Key := 13;  Klass := ProcClass;  IsDeclDas := Standard
  158.   END;
  159.   InsertID(cp);
  160.   New(cp);  (* DISPOSE *)
  161.   WITH cp^ DO BEGIN
  162.     Name := Na[36];  BezType := NIL;  Next := NIL;
  163.     Key := 16;  Klass := ProcClass;  IsDeclDas := Standard
  164.   END;
  165.   InsertID(cp);
  166.   FOR i := 17 TO 26 DO BEGIN
  167.     New(cp);
  168.     WITH cp^ DO BEGIN
  169.       Name := Na[i];  BezType := NIL;  Next := NIL;
  170.       Key := i-16;  Klass := FuncClass;  IsDeclDas := Standard
  171.     END;
  172.     InsertID(cp)
  173.   END;
  174.   New(cp);  (* ROUND *)
  175.   WITH cp^ DO BEGIN
  176.     Name := Na[34];  BezType := NIL;  Next := NIL;
  177.     Key := 11;  Klass := FuncClass;  IsDeclDas := Standard;
  178.   END;
  179.   InsertID(cp);
  180.   New(cp);
  181.   WITH cp^ DO BEGIN
  182.     Name := '        ';  BezType := RealPtr;  Klass := VarClass;
  183.     VarKind := Actual;  Next := NIL;  VarsBSt := 1;  VarAddr := 0
  184.   END;
  185.   FOR i := 27 TO 32 DO BEGIN
  186.     New(cp1);
  187.     WITH cp1^ DO BEGIN
  188.       Name := Na[i];  BezType := RealPtr;  Next := cp;
  189.       IsForwDecl := FALSE;  Extern := TRUE;  ProcBSt := 0;  ProcLabel := i-12;
  190.       Klass := FuncClass;  IsDeclDas := Declared;  IsKind := Actual
  191.     END;
  192.     InsertID(cp1)
  193.   END;
  194.   New(cp);
  195.   WITH cp^ DO BEGIN
  196.     Name := Na[37]; BezType := IntPtr;  Next := NIL;
  197.     Values.GanzeZahl := MaxInt;  Klass := KonstKlasse
  198.   END;
  199.   InsertID(cp);
  200. END;
  201.  
  202.  
  203. PROCEDURE InitUndeclared;
  204.  
  205. BEGIN
  206.   New(UTypPtr);
  207.   WITH UTypPtr^ DO BEGIN
  208.     Name := '        ';  BezType := NIL;  Klass := TypeClass
  209.   END;
  210.   New(UCstPtr);
  211.   WITH UCstPtr^ DO BEGIN
  212.     Name := '        ';  BezType := NIL;  Next := NIL;
  213.     Values.GanzeZahl := 0;  Klass := KonstKlasse
  214.   END;
  215.   New(UVarPtr);
  216.   WITH UVarPtr^ DO BEGIN
  217.     Name := '        ';  BezType := NIL;  VarKind := Actual;
  218.     Next := NIL;  VarsBSt := 0;  VarAddr := 0;  Klass := VarClass
  219.   END;
  220.   New(UFldPtr);
  221.   WITH UFldPtr^ DO BEGIN
  222.     Name := '        ';  BezType := NIL;  Next := NIL;
  223.     FieldAddress := 0;  Klass := FieldClass
  224.   END;
  225.   New(UPrcPtr);
  226.   WITH UPrcPtr^ DO BEGIN
  227.     Name := '        ';  BezType := NIL;  IsForwDecl := FALSE;
  228.     Next := NIL;  Extern := FALSE;  ProcBSt := 0;  Glab(ProcLabel);
  229.     Klass := ProcClass;  IsDeclDas := Declared;  IsKind := Actual
  230.   END;
  231.   New(UFctPtr);
  232.   WITH UFctPtr^ DO BEGIN
  233.     Name := '        ';  BezType := NIL;  Next := NIL;
  234.     IsForwDecl := FALSE;  Extern := FALSE;  ProcBSt := 0;  Glab(ProcLabel);
  235.     Klass := FuncClass;  IsDeclDas := Declared;  IsKind := Actual
  236.   END
  237. END;
  238.  
  239.  
  240. PROCEDURE InitScalars;
  241.  
  242. BEGIN
  243.   ForwDeclType := NIL;  IsPrtCode := TRUE;  Debug := FALSE;
  244.   IsErrorText := TRUE;  WasLoadErrorText := FALSE;  NoOfErrors := 0;
  245.   DP := TRUE;  AllowsErrors := TRUE;  ErrorIndex := 0;
  246.   IntLabel := 0;  LBezLaenge := 8;  FExtFileP := NIL;
  247.   LocStk := VirginLocStk + FileBuffer * CharMax;
  248.   ICount := 3;  EoL := TRUE;  LineCount := 0;  LinePos := 1;
  249.   Zeichen := ' ';  IthChar := 0;  GlobTestP := NIL;
  250.   MxInt10 := MaxInt DIV 10;  MaxZiffer := StringLength-1
  251. END;
  252.  
  253.  
  254. PROCEDURE InitSets;
  255.  
  256. BEGIN
  257.   KonstStartSy    := [AddOpr,LongConst,IntConst,RealConst,StringConst,Bezeich];
  258.   SimpleStartSymb := [lBraces] + KonstStartSy;
  259.   TypeStartSymb   := [Pointer,PackedSymb,ArraySymb,RecordSymb,
  260.                       SetSymb,FileSymb] + SimpleStartSymb;
  261.   TypeDels        := [ArraySymb,RecordSymb,SetSymb,FileSymb];
  262.   BlockStartSy    := [LabelSymb,ConstSymb,TypeSymb,VarSymb,ProcSymb,
  263.                       FuncSymb,BeginSymb];
  264.   SelectSys       := [Pointer,UpTo,lBrack];
  265.   FactorStartSymb := [LongConst,IntConst,RealConst,StringConst,
  266.                       Bezeich,lBraces,lBrack,NotSymb];
  267.   StatStartSymb   := [BeginSymb,GotoSymb,IfSymb,WhileSymb,
  268.                       RepeatSymb,ForSymb,WithSymb,CaseSymb]
  269. END;
  270.  
  271.  
  272. PROCEDURE InitTables;
  273.  
  274.   PROCEDURE InitResWords;
  275.  
  276.   BEGIN
  277.     ResWord[ 1] := 'IF      ';  ResWord[ 2] := 'DO      ';
  278.     ResWord[ 3] := 'OF      ';  ResWord[ 4] := 'TO      ';
  279.     ResWord[ 5] := 'IN      ';  ResWord[ 6] := 'OR      ';
  280.     ResWord[ 7] := 'END     ';  ResWord[ 8] := 'FOR     ';
  281.     ResWord[ 9] := 'VAR     ';  ResWord[10] := 'DIV     ';
  282.     ResWord[11] := 'MOD     ';  ResWord[12] := 'SET     ';
  283.     ResWord[13] := 'AND     ';  ResWord[14] := 'NOT     ';
  284.     ResWord[15] := 'THEN    ';  ResWord[16] := 'ELSE    ';
  285.     ResWord[17] := 'WITH    ';  ResWord[18] := 'GOTO    ';
  286.     ResWord[19] := 'CASE    ';  ResWord[20] := 'TYPE    ';
  287.     ResWord[21] := 'FILE    ';  ResWord[22] := 'BIOS    ';
  288.     ResWord[23] := 'BEGIN   ';  ResWord[24] := 'UNTIL   ';
  289.     ResWord[25] := 'WHILE   ';  ResWord[26] := 'ARRAY   ';
  290.     ResWord[27] := 'CONST   ';  ResWord[28] := 'LABEL   ';
  291.     ResWord[29] := 'XBIOS   ';  ResWord[30] := 'REPEAT  ';
  292.     ResWord[31] := 'RECORD  ';  ResWord[32] := 'DOWNTO  ';
  293.     ResWord[33] := 'PACKED  ';  ResWord[34] := 'GEMDOS  ';
  294.     ResWord[35] := 'VDIAES  ';  ResWord[36] := 'FORWARD ';
  295.     ResWord[37] := 'PROGRAM ';  ResWord[38] := 'FUNCTION';
  296.     ResWord[39] := 'PROCEDUR';
  297.     RWindex[1] := 1;            RWindex[2] := 1;
  298.     RWindex[3] := 7;            RWindex[4] := 15;
  299.     RWindex[5] := 23;           RWindex[6] := 30;
  300.     RWindex[7] := 36;           RWindex[8] := 38;
  301.     RWindex[9] := 40
  302.   END;
  303.  
  304.  
  305.   PROCEDURE Symbols;
  306.  
  307.   BEGIN
  308.     ReSymb[ 1] := IfSymb;       ReSymb[ 2] := DoSymb;
  309.     ReSymb[ 3] := OfSymb;       ReSymb[ 4] := ToSymb;
  310.     ReSymb[ 5] := VergleichOp;  ReSymb[ 6] := AddOpr;
  311.     ReSymb[ 7] := EndSymb;      ReSymb[ 8] := ForSymb;
  312.     ReSymb[ 9] := VarSymb;      ReSymb[10] := MultOpr;
  313.     ReSymb[11] := MultOpr;      ReSymb[12] := SetSymb;
  314.     ReSymb[13] := MultOpr;      ReSymb[14] := NotSymb;
  315.     ReSymb[15] := ThenSy;       ReSymb[16] := ElseSymb;
  316.     ReSymb[17] := WithSymb;     ReSymb[18] := GotoSymb;
  317.     ReSymb[19] := CaseSymb;     ReSymb[20] := TypeSymb;
  318.     ReSymb[21] := FileSymb;     ReSymb[22] := BiosSy;
  319.     ReSymb[23] := BeginSymb;    ReSymb[24] := UntilSymb;
  320.     ReSymb[25] := WhileSymb;    ReSymb[26] := ArraySymb;
  321.     ReSymb[27] := ConstSymb;    ReSymb[28] := LabelSymb;
  322.     ReSymb[29] := XBiosSy;      ReSymb[30] := RepeatSymb;
  323.     ReSymb[31] := RecordSymb;   ReSymb[32] := DownToSymb;
  324.     ReSymb[33] := PackedSymb;   ReSymb[34] := GemDosSy;
  325.     ReSymb[35] := VdiAesSy;     ReSymb[36] := ForwardSymb;
  326.     ReSymb[37] := ProgSymb;     ReSymb[38] := FuncSymb;
  327.     ReSymb[39] := ProcSymb;
  328.     StdSymb['+'] := AddOpr;       StdSymb['-'] := AddOpr;
  329.     StdSymb['*'] := MultOpr;      StdSymb['/'] := MultOpr;
  330.     StdSymb['('] := lBraces;      StdSymb[')'] := rBrace;
  331.     StdSymb['$'] := OtherSymb;    StdSymb['='] := VergleichOp;
  332.     StdSymb[' '] := OtherSymb;    StdSymb[','] := CommaSymb;
  333.     StdSymb['.'] := UpTo;         StdSymb[''''] := OtherSymb;
  334.     StdSymb['['] := lBrack;       StdSymb[']'] := rBrack;
  335.     StdSymb[':'] := ColonSymb;    StdSymb['^'] := Pointer;
  336.     StdSymb['<'] := VergleichOp;  StdSymb['>'] := VergleichOp;
  337.     StdSymb[';'] := Semicolon;
  338.   END;
  339.  
  340.  
  341.   PROCEDURE InitOperators;
  342.  
  343.   VAR i: INTEGER;  Zeichen: CHAR;
  344.  
  345.   BEGIN
  346.     FOR i := 1 TO 39 DO ROp[i] := NoOp;
  347.     ROp[5] := InOp;   ROp[10] := IDiv;  ROp[11] := IMod;
  348.     ROp[6] := OrOpr;  ROp[13] := AndOp;
  349.     FOR i := OrdMinChar TO OrdMaxChar DO OpS[Chr(i)] := NoOp;
  350.     OpS['+'] := Plus;       OpS['-'] := Minus;
  351.     OpS['*'] := Mult;       OpS['/'] := RDiv;
  352.     OpS['='] := EqualOp;    OpS['<'] := LessThanOp;
  353.     OpS['>'] := GrThanOp;
  354.   END;
  355.  
  356.  
  357.   PROCEDURE InitStdProcs;
  358.  
  359.   BEGIN
  360.     StdNames[ 1] := ' get';  StdNames[ 2] := ' put';
  361.     StdNames[ 3] := ' rdi';  StdNames[ 4] := ' rdr';
  362.     StdNames[ 5] := ' rdc';  StdNames[ 6] := ' wri';
  363.     StdNames[ 7] := ' wro';  StdNames[ 8] := ' wrr';
  364.     StdNames[ 9] := ' wrc';  StdNames[10] := ' wrs';
  365.     StdNames[11] := ' pak';  StdNames[12] := ' new';
  366.     StdNames[13] := ' rst';  StdNames[14] := ' eln';
  367.     StdNames[15] := ' sin';  StdNames[16] := ' cos';
  368.     StdNames[17] := ' exp';  StdNames[18] := ' sqt';
  369.     StdNames[19] := ' log';  StdNames[20] := ' atn';
  370.     StdNames[21] := ' rln';  StdNames[22] := ' wln';
  371.     StdNames[23] := ' sav';  StdNames[24] := ' gmd';
  372.     StdNames[25] := ' bio';  StdNames[26] := ' xbi';
  373.     StdNames[27] := ' vdi';  StdNames[28] := ' dsp';
  374.     StdNames[29] := ' rdl';  StdNames[30] := ' wrl';
  375.     StdNames[31] := ' rwr';  StdNames[32] := ' res';
  376.     StdNames[33] := ' cls';  StdNames[34] := ' rnd';
  377.   END;
  378.  
  379.  
  380.   PROCEDURE InitPCodeInstruction;
  381.  
  382.   BEGIN
  383.     PCo[ 0] := ' abi';  PCo[ 1] := ' abr';  PCo[ 2] := ' adi';
  384.     PCo[ 3] := ' adr';  PCo[ 4] := ' and';  PCo[ 5] := ' dif';
  385.     PCo[ 6] := ' dvi';  PCo[ 7] := ' dvr';  PCo[ 8] := ' eof';
  386.     PCo[ 9] := ' flo';  PCo[10] := ' flt';  PCo[11] := ' inn';
  387.     PCo[12] := ' int';  PCo[13] := ' ior';  PCo[14] := ' mod';
  388.     PCo[15] := ' mpi';  PCo[16] := ' mpr';  PCo[17] := ' ngi';
  389.     PCo[18] := ' ngr';  PCo[19] := ' not';  PCo[20] := ' odd';
  390.     PCo[21] := ' sbi';  PCo[22] := ' sbr';  PCo[23] := ' sgs';
  391.     PCo[24] := ' sqi';  PCo[25] := ' sqr';  PCo[26] := ' sto';
  392.     PCo[27] := ' trc';  PCo[28] := ' uni';  PCo[29] := ' stp';
  393.     PCo[30] := ' csp';  PCo[31] := ' dec';  PCo[32] := ' ent';
  394.     PCo[33] := ' fjp';  PCo[34] := ' inc';  PCo[35] := ' ind';
  395.     PCo[36] := ' ixa';  PCo[37] := ' lao';  PCo[38] := ' lca';
  396.     PCo[39] := ' ldo';  PCo[40] := ' mov';  PCo[41] := ' mst';
  397.     PCo[42] := ' ret';  PCo[43] := ' sro';  PCo[44] := ' xjp';
  398.     PCo[45] := ' chk';  PCo[46] := ' cup';  PCo[47] := ' equ';
  399.     PCo[48] := ' geq';  PCo[49] := ' grt';  PCo[50] := ' lda';
  400.     PCo[51] := ' ldc';  PCo[52] := ' leq';  PCo[53] := ' les';
  401.     PCo[54] := ' lod';  PCo[55] := ' neq';  PCo[56] := ' str';
  402.     PCo[57] := ' ujp';  PCo[58] := ' ord';  PCo[59] := ' chr';
  403.     PCo[60] := ' ujc';  PCo[61] := ' sgm';  PCo[62] := ' adl';
  404.     PCo[63] := ' sbl';  PCo[64] := ' dvl';  PCo[65] := ' mdl';
  405.     PCo[66] := ' ilo';  PCo[67] := ' ilt';  PCo[68] := ' mpl';
  406.     PCo[69] := ' ngl';  PCo[70] := ' lfo';  PCo[71] := ' lft';
  407.   END;
  408.  
  409.  
  410.   PROCEDURE AssignCharKind;
  411.  
  412.   VAR i: INTEGER;
  413.  
  414.   BEGIN
  415.     FOR i := OrdMinChar TO OrdMaxChar DO CharKind[Chr(i)] := Illegal;
  416.     CharKind['A'] := Buchst;  CharKind['B'] := Buchst;
  417.     CharKind['C'] := Buchst;  CharKind['D'] := Buchst;
  418.     CharKind['E'] := Buchst;  CharKind['F'] := Buchst;
  419.     CharKind['G'] := Buchst;  CharKind['H'] := Buchst;
  420.     CharKind['I'] := Buchst;  CharKind['J'] := Buchst;
  421.     CharKind['K'] := Buchst;  CharKind['L'] := Buchst;
  422.     CharKind['M'] := Buchst;  CharKind['N'] := Buchst;
  423.     CharKind['O'] := Buchst;  CharKind['P'] := Buchst;
  424.     CharKind['Q'] := Buchst;  CharKind['R'] := Buchst;
  425.     CharKind['S'] := Buchst;  CharKind['T'] := Buchst;
  426.     CharKind['U'] := Buchst;  CharKind['V'] := Buchst;
  427.     CharKind['W'] := Buchst;  CharKind['X'] := Buchst;
  428.     CharKind['Y'] := Buchst;  CharKind['Z'] := Buchst;
  429.     CharKind['0'] := Zahl;    CharKind['1'] := Zahl;
  430.     CharKind['2'] := Zahl;    CharKind['3'] := Zahl;
  431.     CharKind['4'] := Zahl;    CharKind['5'] := Zahl;
  432.     CharKind['6'] := Zahl;    CharKind['7'] := Zahl;
  433.     CharKind['8'] := Zahl;    CharKind['9'] := Zahl;
  434.     CharKind['+'] := Special; CharKind['-'] := Special;
  435.     CharKind['*'] := Special; CharKind['/'] := Special;
  436.     CharKind['('] := oBrace;  CharKind[')'] := Special;
  437.     CharKind['$'] := Special; CharKind['='] := Special;
  438.     CharKind[' '] := Blank;   CharKind[','] := Special;
  439.     CharKind['.'] := Period;  CharKind['''']:= QuotMark;
  440.     CharKind['['] := Special; CharKind[']'] := Special;
  441.     CharKind[':'] := Colon;   CharKind['^'] := Special;
  442.     CharKind[';'] := Special; CharKind['<'] := LessThan;
  443.     CharKind['>'] := GreaterThan;
  444.     CharKind['{'] := lBrace;
  445.   END;
  446.  
  447.  
  448.   PROCEDURE InitStkMov;
  449.  
  450.   BEGIN
  451.     StkMov[0]  :=  0;  StkMov[1]  :=  0;  StkMov[2]  := -1;
  452.     StkMov[3]  := -1;  StkMov[4]  := -1;  StkMov[5]  := -1;
  453.     StkMov[6]  := -1;  StkMov[7]  := -1;  StkMov[8]  :=  0;
  454.     StkMov[9]  :=  0;  StkMov[10] :=  0;  StkMov[11] := -1;
  455.     StkMov[12] := -1;  StkMov[13] := -1;  StkMov[14] := -1;
  456.     StkMov[15] := -1;  StkMov[16] := -1;  StkMov[17] :=  0;
  457.     StkMov[18] :=  0;  StkMov[19] :=  0;  StkMov[20] :=  0;
  458.     StkMov[21] := -1;  StkMov[22] := -1;  StkMov[23] :=  0;
  459.     StkMov[24] :=  0;  StkMov[25] :=  0;  StkMov[26] := -2;
  460.     StkMov[27] :=  0;  StkMov[28] := -1;  StkMov[29] :=  0;
  461.     StkMov[30] :=  0;  StkMov[31] :=  0;  StkMov[32] :=  0;
  462.     StkMov[33] := -1;  StkMov[34] :=  0;  StkMov[35] :=  0;
  463.     StkMov[36] := -1;  StkMov[37] :=  1;  StkMov[38] :=  1;
  464.     StkMov[39] :=  1;  StkMov[40] := -2;  StkMov[41] :=  0;
  465.     StkMov[42] :=  0;  StkMov[43] := -1;  StkMov[44] := -1;
  466.     StkMov[45] :=  0;  StkMov[46] :=  0;  StkMov[47] := -1;
  467.     StkMov[48] := -1;  StkMov[49] := -1;  StkMov[50] :=  1;
  468.     StkMov[51] :=  1;  StkMov[52] := -1;  StkMov[53] := -1;
  469.     StkMov[54] :=  1;  StkMov[55] := -1;  StkMov[56] := -1;
  470.     StkMov[57] :=  0;  StkMov[58] :=  0;  StkMov[59] :=  0;
  471.     StkMov[60] :=  0;  StkMov[61] :=  0;  StkMov[62] := -1;
  472.     StkMov[63] := -1;  StkMov[64] := -1;  StkMov[65] := -1;
  473.     StkMov[66] :=  0;  StkMov[67] :=  0;  StkMov[68] := -1;
  474.     StkMov[69] :=  0;  StkMov[70] :=  0;  StkMov[71] :=  0;
  475.     StdStkMov[ 1] := -1;  StdStkMov[ 2] := -1;  StdStkMov[ 3] := -2;
  476.     StdStkMov[ 4] := -2;  StdStkMov[ 5] := -2;  StdStkMov[ 6] := -3;
  477.     StdStkMov[ 7] := -3;  StdStkMov[ 8] := -3;  StdStkMov[ 9] := -3;
  478.     StdStkMov[10] := -4;  StdStkMov[11] :=  0;  StdStkMov[12] := -2;
  479.     StdStkMov[13] := -1;  StdStkMov[14] :=  0;  StdStkMov[15] :=  0;
  480.     StdStkMov[16] :=  0;  StdStkMov[17] :=  0;  StdStkMov[18] :=  0;
  481.     StdStkMov[19] :=  0;  StdStkMov[20] :=  0;  StdStkMov[21] := -1;
  482.     StdStkMov[22] := -1;  StdStkMov[23] := -1;  StdStkMov[24] :=  0;
  483.     StdStkMov[25] :=  0;  StdStkMov[26] :=  0;  StdStkMov[27] :=  0;
  484.     StdStkMov[28] := -1;  StdStkMov[29] := -2;  StdStkMov[30] := -3;
  485.     StdStkMov[31] := -3;  StdStkMov[32] := -2;  StdStkMov[33] := -1;
  486.     StdStkMov[34] :=  0;
  487.   END;
  488.  
  489.  
  490. BEGIN
  491.   InitResWords;  Symbols;  InitOperators;
  492.   InitPCodeInstruction;  InitStdProcs;
  493.   AssignCharKind;  InitStkMov
  494. END;
  495.  
  496.  
  497. BEGIN
  498. END.
  499.