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

  1. UNIT Global;
  2.  
  3. INTERFACE
  4.  
  5. CONST
  6.   MaxEText = 200;
  7.   MaxFiles = 4;
  8.   MaxDispVec = 20;
  9.   MaxBSt = 10;
  10.   IntSize = 1;
  11.   LongSize = 1;
  12.   RealSize = 1;
  13.   CharSize = 1;
  14.   CharMax = 1;
  15.   BoolSize = 1;
  16.   PtrSize = 1;
  17.   SetSize = 1;
  18.   StackElSize = 1;
  19.   StringLength = 80;
  20.   SetMax = 127;
  21.   SetMin = 0;
  22.   OrdMaxChar = 127;
  23.   OrdMinChar = 0;
  24.   MaxInt = 32767;
  25.   VirginLocStk = 5;
  26.   MaxId = 8;
  27.   MaxStack = 1;
  28.   ParmSize = StackElSize;
  29.   FileBuffer = 4;
  30.   MaxAddr = MaxInt;
  31.   MaxKonstants = 65;
  32.   MaxCases = 1000;
  33.  
  34.  
  35. TYPE
  36.   Long_Integer = LONGINT;
  37.   OpRange = 0..71;
  38.   Short = STRING[20];
  39.   ErrorString = STRING[80];
  40.  
  41.   Symbol = (Bezeich,IntConst,RealConst,StringConst,NotSymb,
  42.             MultOpr,AddOpr,VergleichOp,lBraces,rBrace,lBrack,rBrack,
  43.             CommaSymb,Semicolon,UpTo,Pointer,ColonSymb,AssignTo,
  44.             LabelSymb,ConstSymb,TypeSymb,VarSymb,FuncSymb,ProgSymb,
  45.             ProcSymb,SetSymb,PackedSymb,ArraySymb,RecordSymb,
  46.             FileSymb,ForwardSymb,BeginSymb,
  47.             IfSymb,CaseSymb,RepeatSymb,WhileSymb,ForSymb,
  48.             WithSymb,GotoSymb,EndSymb,ElseSymb,
  49.             UntilSymb,OfSymb,DoSymb,ToSymb,DownToSymb,ThenSy,
  50.             OtherSymb,GemDosSy,BiosSy,
  51.             XBiosSy,VdiAesSy,LongConst);
  52.  
  53.   Operator = (Mult,RDiv,AndOp,IDiv,IMod,Plus,Minus,OrOpr,
  54.               LessThanOp,LessOp,GrEqualOp,GrThanOp,
  55.               NotEqualOp,EqualOp,InOp,NoOp);
  56.  
  57.   Symbolmenge = SET OF Symbol;
  58.  
  59.   CharTyp = (Buchst,Zahl,Special,Illegal,QuotMark,Colon,Period,
  60.              LessThan,GreaterThan,oBrace,Blank,lBrace);
  61.  
  62.   ConstKlasse = (Reell,SetKonst,Strg,Long);
  63.   KonstPointer = ^Konstante;
  64.  
  65.   Konstante = RECORD
  66.                 CASE KonstArt: ConstKlasse OF
  67.                      Reell: (RVal : PACKED ARRAY[1..StringLength] OF CHAR);
  68.                   SetKonst: (Menge: SET OF SetMin..SetMax);
  69.                       Strg: (SLgth:  0..StringLength;
  70.                              StringValue: PACKED ARRAY[1..StringLength] OF CHAR);
  71.                       Long: (SavVal: Long_Integer);
  72.               END;
  73.  
  74.   CstPtrArray = ARRAY[1..MaxKonstants] OF KonstPointer;
  75.  
  76.   Value = RECORD
  77.             CASE IsInt: BOOLEAN OF
  78.                TRUE: (GanzeZahl : INTEGER);
  79.               FALSE: (ValuePointer : KonstPointer)
  80.           END;
  81.  
  82.   BStRange = 0..MaxBSt;
  83.   AddressRange = 0..MaxAddr;
  84.  
  85.   StructForm = (Scalar,SubRange,Pointers,Power,Arrays,Records,Files,
  86.                 TagFld,Variant);
  87.  
  88.   DeclType = (Standard,Declared);
  89.   StP = ^Structure;
  90.   KonstP = ^Bezeichner;
  91.  
  92.   Structure = PACKED RECORD
  93.                    Marked: BOOLEAN;
  94.                      Size: AddressRange;
  95.                 CASE Form: StructForm OF
  96.                     Scalar: (CASE ScalKind : DeclType OF
  97.                                Declared: (ScalConst : KonstP));
  98.                   SubRange: (RangeType : StP; Min, Max : Value);
  99.                   Pointers: (ElType : StP);
  100.                      Power: (ElemSet : StP);
  101.                     Arrays: (ElemType,IndexType : StP);
  102.                    Records: (FirstField : KonstP; RecVar : StP);
  103.                      Files: (FileType : StP);
  104.                     TagFld: (TagFieldP : KonstP; FirstVar : StP);
  105.                    Variant: (NxtVar,VarTVar : StP; VarWert : Value)
  106.               END;
  107.  
  108.   BezKlasse = (TypeClass,KonstKlasse,VarClass,FieldClass,ProcClass,FuncClass);
  109.   BezMenge = SET OF BezKlasse;
  110.   BezArt = (Actual,Formal);
  111.  
  112.   ALPHA = PACKED ARRAY[1..8] OF CHAR;
  113.  
  114.   Bezeichner = PACKED RECORD
  115.                  Name              : ALPHA;
  116.                  LeftSon, RightSon : KonstP;
  117.                  BezType           : StP;
  118.                  Next              : KonstP;
  119.                  CASE Klass: BezKlasse OF
  120.                    KonstKlasse: (Values : Value);
  121.                    VarClass   : (VarKind : BezArt;
  122.                                  VarsBSt : BStRange;
  123.                                  VarAddr : AddressRange);
  124.                    FieldClass : (FieldAddress : AddressRange);
  125.                    ProcClass,
  126.                    FuncClass  : (CASE IsDeclDas : DeclType OF
  127.                                    Standard : (Key : 1..17);
  128.                                    Declared : (ProcBSt : BStRange;
  129.                                                ProcLabel : INTEGER;
  130.                                                CASE IsKind : BezArt OF
  131.                                                  Actual : (IsForwDecl,
  132.                                                            Extern  : BOOLEAN;
  133.                                                            Zahl    : INTEGER)))
  134.                END;
  135.  
  136.   DispRange = 0..MaxDispVec;
  137.   Where = (IsBlock,IsRec,InVariantRec,InRec);
  138.   AttributArt = (IsKonst,IsVar,IsExpr);
  139.   VarZugriff = (Direkt,Indirekt,Indexed);
  140.   Attribut = RECORD
  141.                TyPtr : StP;
  142.                CASE Art : AttributArt OF
  143.                  IsKonst : (KonstVal : Value);
  144.                  IsVar   : (CASE Zugriff : VarZugriff OF
  145.                               Direkt   : (VarBSt : BStRange;
  146.                                           OffSet : AddressRange);
  147.                               Indirekt : (IOffSet: AddressRange))
  148.              END;
  149.  
  150.   TestP = ^TestPointer;
  151.   TestPointer = PACKED RECORD
  152.                   ElT1,ElT2 : StP;
  153.                   LastTestP : TestP;
  154.                 END;
  155.  
  156.   LabPointer = ^Labl;
  157.   Labl = RECORD
  158.            NextLab : LabPointer;
  159.            Defined : BOOLEAN;
  160.            LabValue,
  161.            LabName : INTEGER
  162.        END;
  163.  
  164.   ExtFileP = ^FileRec;
  165.   FileRec = RECORD
  166.               FileName : ALPHA;
  167.               NextFile : ExtFileP
  168.             END;
  169.  
  170.   Str = STRING[10];
  171.  
  172.  
  173. VAR
  174.   TestAusgabe : BOOLEAN;
  175.   NoOfFiles : INTEGER;
  176.   Source, Dat : TEXT;
  177.   Symb : Symbol;
  178.   Oper : Operator;
  179.   LastConstVal : Value;
  180.   Lgth : INTEGER;
  181.   Bez : ALPHA;
  182.   LBezLaenge : 1..8;
  183.   Zeichen : CHAR;
  184.   EoL : BOOLEAN;
  185.   IthChar, SymbStart : INTEGER;
  186.   LocStk, ICount : AddressRange;
  187.   LineCount : INTEGER;
  188.   DP,
  189.   AllowsErrors,
  190.   IsPrtCode : BOOLEAN;
  191.   Debug : BOOLEAN;
  192.   ParmPtr,IntPtr,RealPtr,CharPtr,
  193.   BooleanPtr,NilPtr,TextPtr,LongPtr : StP;
  194.   UTypPtr,UCstPtr,UVarPtr,
  195.   UFldPtr,UPrcPtr,UFctPtr,ForwDeclType : KonstP;
  196.   FExtFileP : ExtFileP;
  197.   GlobTestP : TestP;
  198.   Bst : BStRange;
  199.   LastBst,
  200.   DispTop : DispRange;
  201.   DispVec : ARRAY[DispRange] OF
  202.               PACKED RECORD
  203.                 FirstDeclID : KonstP;
  204.                 FirstLab    : LabPointer;
  205.                 CASE OccursIn : Where OF
  206.                   IsRec        : (KonstBst : BStRange;
  207.                                   KonstOffSet : AddressRange);
  208.                   InVariantRec : (VarOffSet : AddressRange)
  209.               END;
  210.  
  211.   ErrorIndex: 0..10;
  212.   ErrorList : ARRAY[1..10] OF
  213.                 PACKED RECORD
  214.                   Pos : INTEGER;
  215.                    No : 1..500
  216.                 END;
  217.  
  218.   Attr : Attribut;
  219.  
  220.   KonstStartSy,SimpleStartSymb,TypeStartSymb,
  221.   BlockStartSy,SelectSys,FactorStartSymb,StatStartSymb,TypeDels: Symbolmenge;
  222.  
  223.   CharKind: ARRAY[CHAR] OF CharTyp;
  224.   ResWord : ARRAY[1..39] OF ALPHA;
  225.   RWindex : ARRAY[1..9] OF 1..40;
  226.   ReSymb  : ARRAY[1..39] OF Symbol;
  227.   StdSymb : ARRAY[CHAR] OF Symbol;
  228.   ROp : ARRAY[1..39] OF Operator;
  229.   OpS : ARRAY[CHAR] OF Operator;
  230.   Na  : ARRAY[1..37] OF ALPHA;
  231.   PCo : ARRAY[0..71] OF PACKED ARRAY[1..4] OF CHAR;
  232.   StdNames : ARRAY[1..34] OF PACKED ARRAY[1..4] OF CHAR;
  233.   StkMov   : ARRAY[0..71] OF -4..+4;
  234.   StdStkMov: ARRAY[1..34] OF -7..+7;
  235.  
  236.   IntLabel,MxInt10,MaxZiffer : INTEGER;
  237.  
  238.   Line : PACKED ARRAY[1..120] OF CHAR;
  239.   LinePos : INTEGER;
  240.  
  241.   IsErrorText,WasLoadErrorText : BOOLEAN;
  242.   MaxErrors,NoOfErrors : INTEGER;
  243.   ErrorTable : PACKED ARRAY[1..MaxEText] OF
  244.                  RECORD
  245.                    ErrorNo  : INTEGER;
  246.                    ErrorText: ErrorString;
  247.                  END;
  248.  
  249.  
  250. IMPLEMENTATION
  251.  
  252. BEGIN
  253. END.
  254.