ObjectTable.def 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. DEFINITION MODULE ObjectTable; (* gf 03.08.88 (pl0) *)
  2. FROM Scanner IMPORT IDENT, STRING, POSITION;
  3. FROM Generator IMPORT Label;
  4. (*EXPORT QUALIFIED Object, ObjKind, ObjType,
  5. Undefined, Integer,
  6. EnterBlock, LeaveBlock,
  7. EnterDecl, FindDecl, GetObjType,
  8. InitObjectTable;
  9. *)
  10. TYPE Object = POINTER TO Objectvalue;
  11. TYPE ObjType = Object;
  12. TYPE ObjKind = (newObject, undefined,
  13. simpleType,
  14. constant, stringConst,
  15. variable,
  16. procedure,
  17. block);
  18. TYPE Objectvalue =
  19. RECORD
  20. id : IDENT;
  21. nextObj : Object;
  22. level : CARDINAL;
  23. CASE kind : ObjKind OF
  24. newObject:
  25. | undefined:
  26. | simpleType:
  27. | constant:
  28. cType : Object;
  29. cVal : CARDINAL
  30. | stringConst:
  31. strVal : STRING;
  32. | variable:
  33. vType : Object;
  34. vAdr : CARDINAL
  35. | procedure:
  36. procAdr : Label;
  37. | block:
  38. lastObj,
  39. down : Object;
  40. END
  41. END;
  42. VAR Undefined : ObjType;
  43. Integer : ObjType;
  44. PROCEDURE EnterDecl (id: IDENT; pos: POSITION) : Object;
  45. PROCEDURE FindDecl (id: IDENT; pos: POSITION) : Object;
  46. PROCEDURE GetObjType (obj : Object) : ObjType;
  47. PROCEDURE EnterBlock(): CARDINAL; (* retuns nesting level *)
  48. PROCEDURE LeaveBlock(): CARDINAL; (* " *)
  49. PROCEDURE InitObjectTable(): CARDINAL; (* " *)
  50. END ObjectTable.