| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- DEFINITION MODULE CompilerSymbols ;
- (* Symbol table management: entry type, storage, insertion, lookup and scope
- hiding. Compiler.mod imports these names unqualified. *)
- FROM CompilerShared IMPORT MaxName ;
- CONST
- MaxSym = 3000 ;
- TYPE
- SymEntry =
- RECORD
- name : ARRAY [0..MaxName] OF CHAR ;
- tag : CARDINAL ;
- cls : CARDINAL ;
- size : CARDINAL ;
- elem : CARDINAL ;
- off : CARDINAL ;
- lval : LONGINT ;
- lo, hi : LONGINT ; (* an ORDINAL type's bounds: an enumeration
- (0..n-1) or a subrange. Needed so
- `set of T' can size its base. *)
- fldFirst, fldLast : CARDINAL ; (* a RECORD type's field range in the
- field table (0,0 when not a record) *)
- arrIdx : CARDINAL ; (* an ARRAY type's shape in ArrRec (0 = no) *)
- parmFirst, parmCount : CARDINAL ; (* a PROCEDURE/FUNCTION's parameters:
- symtab indices, in declaration order *)
- isKbd : BOOLEAN ; (* the predefined KBD file: reads are console *)
- isPort : BOOLEAN ; (* the predefined PORT byte array *)
- isVar : BOOLEAN ; (* a VAR parameter: the slot holds an address *)
- level : CARDINAL ;
- local : BOOLEAN ;
- parent : CARDINAL ; (* lexical parent procedure, 0 at top level *)
- staticOff : CARDINAL ; (* nested proc's hidden static-link local *)
- resvar : CARDINAL ;
- goPos : CARDINAL ;
- defnd : BOOLEAN ;
- fwd : BOOLEAN ;
- END ;
- VAR
- symtab : ARRAY [0..MaxSym - 1] OF SymEntry ;
- symTop : CARDINAL ;
- lexnest : CARDINAL ;
- wrd : ARRAY [0..MaxName] OF CHAR ;
- PROCEDURE CopyWord (name : ARRAY OF CHAR) ;
- PROCEDURE SaveWord (VAR dst : ARRAY OF CHAR) ;
- PROCEDURE NewSym (name : ARRAY OF CHAR ; tag : CARDINAL ;
- cls, size, elem, off : CARDINAL ; v : LONGINT ;
- local : BOOLEAN) : CARDINAL ;
- PROCEDURE Search (nm : ARRAY OF CHAR ; VAR idx : CARDINAL) : BOOLEAN ;
- PROCEDURE DupTest (nm : ARRAY OF CHAR) ;
- PROCEDURE HideLocals (from : CARDINAL) ;
- END CompilerSymbols.
|