| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- (* Renamed for readability. Semantics unchanged. Original identifiers: see docs/compiler/ + src/compiler/RENAME-MAP.md. *)
- DEFINITION MODULE SCANNER;
- FROM SYSTEM IMPORT ADDRESS, WORD;
- FROM Compiler IMPORT RecordPtr; (* to be sure Compiler is first dependency *)
- FROM Files IMPORT FILE;
- FROM SymTab IMPORT T1, StringPtr;
- (* NOTE: parameter names are single letters AND MUST MATCH the MOD exactly
- (Turbo v1.00 rejects DEF/MOD signature mismatches, proven on hardware).
- Texts/ComLine/Loader/Doubles/Errors intentionally NOT imported here:
- nothing in this interface uses them (verified), the IMPLEMENTATION module
- imports them itself, and every imported name counts against the compiler's
- fixed import/export name table (proven by overflow experiments). *)
- TYPE Ext = ARRAY [0..2] OF CHAR;
- T = POINTER TO ARRAY [0..6] OF WORD;
- Buf = ARRAY [0..128] OF CHAR;
- (*
- Identifier = ARRAY [0..14] OF CHAR;
- StringPtr = POINTER TO Identifier;
- *)
- List = POINTER TO ListDesc;
- ListDesc = RECORD first: T1; ident: StringPtr END;
- TypeOfChar = [0..255];
- VAR
- scanOpt: BITSET;
- curCh: CHAR;
- codeFile: FILE;
- curSym: CARDINAL;
- isLit: BOOLEAN;
- cardVal: CARDINAL;
- curNode: RecordPtr;
- identKd: CARDINAL;
- follSet: BITSET;
- tokBuf: Buf;
- litType: RecordPtr;
- scopeCur: T1;
- realVal: REAL;
- srcFile: FILE;
- lrealVal: LONGREAL;
- codeBuf: ADDRESS;
- codeSize: CARDINAL;
- listing: BOOLEAN;
- charClas: POINTER TO ARRAY [0..255] OF TypeOfChar;
- tokPos: CARDINAL;
- tokCol: CARDINAL;
- keyHash: PROCEDURE(ADDRESS, BOOLEAN):CARDINAL;
- PROCEDURE GetSym;
- PROCEDURE NextCh;
- PROCEDURE PushWith;
- PROCEDURE AcceptSy(s: CARDINAL): BOOLEAN;
- PROCEDURE GetStack(VAR m: ADDRESS);
- PROCEDURE CheckStk(m: ADDRESS);
- PROCEDURE Allocate(VAR a:ADDRESS; n:CARDINAL);
- PROCEDURE ExpectSy(s: CARDINAL);
- PROCEDURE TestSet(s: BITSET);
- PROCEDURE TestR40(s: BITSET);
- PROCEDURE TestR13(s: BITSET);
- PROCEDURE NeedID;
- PROCEDURE ExpectKd(k: CARDINAL);
- PROCEDURE NewSized(k:CARDINAL):ADDRESS;
- PROCEDURE NewNode(k:CARDINAL):ADDRESS;
- PROCEDURE CopyStr(VAR d:ADDRESS; VAR s: ARRAY OF CHAR);
- PROCEDURE OpenScop(a:ADDRESS; b: ADDRESS);
- PROCEDURE MakeIden(k:CARDINAL):ADDRESS;
- PROCEDURE DeclIden(k:CARDINAL):ADDRESS;
- PROCEDURE InsertSy(n: T1);
- PROCEDURE ExpectSt(VAR p: ARRAY OF CHAR);
- PROCEDURE FindIden(l: List; i: ADDRESS; c: BOOLEAN):RecordPtr;
- PROCEDURE StrCmp(a,b: ADDRESS; c: BOOLEAN): BOOLEAN; (* v1.00: StringPtr params rejected (pointer-type mismatch); ADDRESS+overlay is codegen-identical *)
- PROCEDURE StrLen(VAR s: ARRAY OF CHAR): CARDINAL;
- PROCEDURE ChangeEx(VAR f: ARRAY OF CHAR; e: Ext; x: BOOLEAN);
- PROCEDURE ScanErr(c: CARDINAL);
- PROCEDURE EnterMod(m: ARRAY OF CHAR; k: CARDINAL): CARDINAL;
- PROCEDURE InitScan;
- PROCEDURE OpenSrc;
- PROCEDURE Compile;
- END SCANNER.
|