home *** CD-ROM | disk | FTP | other *** search
- UNIT Global;
-
- INTERFACE
-
- CONST
- MaxEText = 200;
- MaxFiles = 4;
- MaxDispVec = 20;
- MaxBSt = 10;
- IntSize = 1;
- LongSize = 1;
- RealSize = 1;
- CharSize = 1;
- CharMax = 1;
- BoolSize = 1;
- PtrSize = 1;
- SetSize = 1;
- StackElSize = 1;
- StringLength = 80;
- SetMax = 127;
- SetMin = 0;
- OrdMaxChar = 127;
- OrdMinChar = 0;
- MaxInt = 32767;
- VirginLocStk = 5;
- MaxId = 8;
- MaxStack = 1;
- ParmSize = StackElSize;
- FileBuffer = 4;
- MaxAddr = MaxInt;
- MaxKonstants = 65;
- MaxCases = 1000;
-
-
- TYPE
- Long_Integer = LONGINT;
- OpRange = 0..71;
- Short = STRING[20];
- ErrorString = STRING[80];
-
- Symbol = (Bezeich,IntConst,RealConst,StringConst,NotSymb,
- MultOpr,AddOpr,VergleichOp,lBraces,rBrace,lBrack,rBrack,
- CommaSymb,Semicolon,UpTo,Pointer,ColonSymb,AssignTo,
- LabelSymb,ConstSymb,TypeSymb,VarSymb,FuncSymb,ProgSymb,
- ProcSymb,SetSymb,PackedSymb,ArraySymb,RecordSymb,
- FileSymb,ForwardSymb,BeginSymb,
- IfSymb,CaseSymb,RepeatSymb,WhileSymb,ForSymb,
- WithSymb,GotoSymb,EndSymb,ElseSymb,
- UntilSymb,OfSymb,DoSymb,ToSymb,DownToSymb,ThenSy,
- OtherSymb,GemDosSy,BiosSy,
- XBiosSy,VdiAesSy,LongConst);
-
- Operator = (Mult,RDiv,AndOp,IDiv,IMod,Plus,Minus,OrOpr,
- LessThanOp,LessOp,GrEqualOp,GrThanOp,
- NotEqualOp,EqualOp,InOp,NoOp);
-
- Symbolmenge = SET OF Symbol;
-
- CharTyp = (Buchst,Zahl,Special,Illegal,QuotMark,Colon,Period,
- LessThan,GreaterThan,oBrace,Blank,lBrace);
-
- ConstKlasse = (Reell,SetKonst,Strg,Long);
- KonstPointer = ^Konstante;
-
- Konstante = RECORD
- CASE KonstArt: ConstKlasse OF
- Reell: (RVal : PACKED ARRAY[1..StringLength] OF CHAR);
- SetKonst: (Menge: SET OF SetMin..SetMax);
- Strg: (SLgth: 0..StringLength;
- StringValue: PACKED ARRAY[1..StringLength] OF CHAR);
- Long: (SavVal: Long_Integer);
- END;
-
- CstPtrArray = ARRAY[1..MaxKonstants] OF KonstPointer;
-
- Value = RECORD
- CASE IsInt: BOOLEAN OF
- TRUE: (GanzeZahl : INTEGER);
- FALSE: (ValuePointer : KonstPointer)
- END;
-
- BStRange = 0..MaxBSt;
- AddressRange = 0..MaxAddr;
-
- StructForm = (Scalar,SubRange,Pointers,Power,Arrays,Records,Files,
- TagFld,Variant);
-
- DeclType = (Standard,Declared);
- StP = ^Structure;
- KonstP = ^Bezeichner;
-
- Structure = PACKED RECORD
- Marked: BOOLEAN;
- Size: AddressRange;
- CASE Form: StructForm OF
- Scalar: (CASE ScalKind : DeclType OF
- Declared: (ScalConst : KonstP));
- SubRange: (RangeType : StP; Min, Max : Value);
- Pointers: (ElType : StP);
- Power: (ElemSet : StP);
- Arrays: (ElemType,IndexType : StP);
- Records: (FirstField : KonstP; RecVar : StP);
- Files: (FileType : StP);
- TagFld: (TagFieldP : KonstP; FirstVar : StP);
- Variant: (NxtVar,VarTVar : StP; VarWert : Value)
- END;
-
- BezKlasse = (TypeClass,KonstKlasse,VarClass,FieldClass,ProcClass,FuncClass);
- BezMenge = SET OF BezKlasse;
- BezArt = (Actual,Formal);
-
- ALPHA = PACKED ARRAY[1..8] OF CHAR;
-
- Bezeichner = PACKED RECORD
- Name : ALPHA;
- LeftSon, RightSon : KonstP;
- BezType : StP;
- Next : KonstP;
- CASE Klass: BezKlasse OF
- KonstKlasse: (Values : Value);
- VarClass : (VarKind : BezArt;
- VarsBSt : BStRange;
- VarAddr : AddressRange);
- FieldClass : (FieldAddress : AddressRange);
- ProcClass,
- FuncClass : (CASE IsDeclDas : DeclType OF
- Standard : (Key : 1..17);
- Declared : (ProcBSt : BStRange;
- ProcLabel : INTEGER;
- CASE IsKind : BezArt OF
- Actual : (IsForwDecl,
- Extern : BOOLEAN;
- Zahl : INTEGER)))
- END;
-
- DispRange = 0..MaxDispVec;
- Where = (IsBlock,IsRec,InVariantRec,InRec);
- AttributArt = (IsKonst,IsVar,IsExpr);
- VarZugriff = (Direkt,Indirekt,Indexed);
- Attribut = RECORD
- TyPtr : StP;
- CASE Art : AttributArt OF
- IsKonst : (KonstVal : Value);
- IsVar : (CASE Zugriff : VarZugriff OF
- Direkt : (VarBSt : BStRange;
- OffSet : AddressRange);
- Indirekt : (IOffSet: AddressRange))
- END;
-
- TestP = ^TestPointer;
- TestPointer = PACKED RECORD
- ElT1,ElT2 : StP;
- LastTestP : TestP;
- END;
-
- LabPointer = ^Labl;
- Labl = RECORD
- NextLab : LabPointer;
- Defined : BOOLEAN;
- LabValue,
- LabName : INTEGER
- END;
-
- ExtFileP = ^FileRec;
- FileRec = RECORD
- FileName : ALPHA;
- NextFile : ExtFileP
- END;
-
- Str = STRING[10];
-
-
- VAR
- TestAusgabe : BOOLEAN;
- NoOfFiles : INTEGER;
- Source, Dat : TEXT;
- Symb : Symbol;
- Oper : Operator;
- LastConstVal : Value;
- Lgth : INTEGER;
- Bez : ALPHA;
- LBezLaenge : 1..8;
- Zeichen : CHAR;
- EoL : BOOLEAN;
- IthChar, SymbStart : INTEGER;
- LocStk, ICount : AddressRange;
- LineCount : INTEGER;
- DP,
- AllowsErrors,
- IsPrtCode : BOOLEAN;
- Debug : BOOLEAN;
- ParmPtr,IntPtr,RealPtr,CharPtr,
- BooleanPtr,NilPtr,TextPtr,LongPtr : StP;
- UTypPtr,UCstPtr,UVarPtr,
- UFldPtr,UPrcPtr,UFctPtr,ForwDeclType : KonstP;
- FExtFileP : ExtFileP;
- GlobTestP : TestP;
- Bst : BStRange;
- LastBst,
- DispTop : DispRange;
- DispVec : ARRAY[DispRange] OF
- PACKED RECORD
- FirstDeclID : KonstP;
- FirstLab : LabPointer;
- CASE OccursIn : Where OF
- IsRec : (KonstBst : BStRange;
- KonstOffSet : AddressRange);
- InVariantRec : (VarOffSet : AddressRange)
- END;
-
- ErrorIndex: 0..10;
- ErrorList : ARRAY[1..10] OF
- PACKED RECORD
- Pos : INTEGER;
- No : 1..500
- END;
-
- Attr : Attribut;
-
- KonstStartSy,SimpleStartSymb,TypeStartSymb,
- BlockStartSy,SelectSys,FactorStartSymb,StatStartSymb,TypeDels: Symbolmenge;
-
- CharKind: ARRAY[CHAR] OF CharTyp;
- ResWord : ARRAY[1..39] OF ALPHA;
- RWindex : ARRAY[1..9] OF 1..40;
- ReSymb : ARRAY[1..39] OF Symbol;
- StdSymb : ARRAY[CHAR] OF Symbol;
- ROp : ARRAY[1..39] OF Operator;
- OpS : ARRAY[CHAR] OF Operator;
- Na : ARRAY[1..37] OF ALPHA;
- PCo : ARRAY[0..71] OF PACKED ARRAY[1..4] OF CHAR;
- StdNames : ARRAY[1..34] OF PACKED ARRAY[1..4] OF CHAR;
- StkMov : ARRAY[0..71] OF -4..+4;
- StdStkMov: ARRAY[1..34] OF -7..+7;
-
- IntLabel,MxInt10,MaxZiffer : INTEGER;
-
- Line : PACKED ARRAY[1..120] OF CHAR;
- LinePos : INTEGER;
-
- IsErrorText,WasLoadErrorText : BOOLEAN;
- MaxErrors,NoOfErrors : INTEGER;
- ErrorTable : PACKED ARRAY[1..MaxEText] OF
- RECORD
- ErrorNo : INTEGER;
- ErrorText: ErrorString;
- END;
-
-
- IMPLEMENTATION
-
- BEGIN
- END.