CompilerSymbols.def 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. DEFINITION MODULE CompilerSymbols ;
  2. (* Symbol table management: entry type, storage, insertion, lookup and scope
  3. hiding. Compiler.mod imports these names unqualified. *)
  4. FROM CompilerShared IMPORT MaxName ;
  5. CONST
  6. MaxSym = 3000 ;
  7. TYPE
  8. SymEntry =
  9. RECORD
  10. name : ARRAY [0..MaxName] OF CHAR ;
  11. tag : CARDINAL ;
  12. cls : CARDINAL ;
  13. size : CARDINAL ;
  14. elem : CARDINAL ;
  15. off : CARDINAL ;
  16. lval : LONGINT ;
  17. lo, hi : LONGINT ; (* an ORDINAL type's bounds: an enumeration
  18. (0..n-1) or a subrange. Needed so
  19. `set of T' can size its base. *)
  20. fldFirst, fldLast : CARDINAL ; (* a RECORD type's field range in the
  21. field table (0,0 when not a record) *)
  22. arrIdx : CARDINAL ; (* an ARRAY type's shape in ArrRec (0 = no) *)
  23. parmFirst, parmCount : CARDINAL ; (* a PROCEDURE/FUNCTION's parameters:
  24. symtab indices, in declaration order *)
  25. isKbd : BOOLEAN ; (* the predefined KBD file: reads are console *)
  26. isPort : BOOLEAN ; (* the predefined PORT byte array *)
  27. isVar : BOOLEAN ; (* a VAR parameter: the slot holds an address *)
  28. level : CARDINAL ;
  29. local : BOOLEAN ;
  30. parent : CARDINAL ; (* lexical parent procedure, 0 at top level *)
  31. staticOff : CARDINAL ; (* nested proc's hidden static-link local *)
  32. resvar : CARDINAL ;
  33. goPos : CARDINAL ;
  34. defnd : BOOLEAN ;
  35. fwd : BOOLEAN ;
  36. END ;
  37. VAR
  38. symtab : ARRAY [0..MaxSym - 1] OF SymEntry ;
  39. symTop : CARDINAL ;
  40. lexnest : CARDINAL ;
  41. wrd : ARRAY [0..MaxName] OF CHAR ;
  42. PROCEDURE CopyWord (name : ARRAY OF CHAR) ;
  43. PROCEDURE SaveWord (VAR dst : ARRAY OF CHAR) ;
  44. PROCEDURE NewSym (name : ARRAY OF CHAR ; tag : CARDINAL ;
  45. cls, size, elem, off : CARDINAL ; v : LONGINT ;
  46. local : BOOLEAN) : CARDINAL ;
  47. PROCEDURE Search (nm : ARRAY OF CHAR ; VAR idx : CARDINAL) : BOOLEAN ;
  48. PROCEDURE DupTest (nm : ARRAY OF CHAR) ;
  49. PROCEDURE HideLocals (from : CARDINAL) ;
  50. END CompilerSymbols.