| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- DEFINITION MODULE ObjectTable; (* gf 03.08.88 (pl0) *)
- FROM Scanner IMPORT IDENT, STRING, POSITION;
- FROM Generator IMPORT Label;
- (*EXPORT QUALIFIED Object, ObjKind, ObjType,
- Undefined, Integer,
- EnterBlock, LeaveBlock,
- EnterDecl, FindDecl, GetObjType,
- InitObjectTable;
- *)
- TYPE Object = POINTER TO Objectvalue;
- TYPE ObjType = Object;
- TYPE ObjKind = (newObject, undefined,
- simpleType,
- constant, stringConst,
- variable,
- procedure,
- block);
- TYPE Objectvalue =
- RECORD
- id : IDENT;
- nextObj : Object;
- level : CARDINAL;
- CASE kind : ObjKind OF
- newObject:
- | undefined:
- | simpleType:
- | constant:
- cType : Object;
- cVal : CARDINAL
- | stringConst:
- strVal : STRING;
- | variable:
- vType : Object;
- vAdr : CARDINAL
- | procedure:
- procAdr : Label;
- | block:
- lastObj,
- down : Object;
- END
- END;
- VAR Undefined : ObjType;
- Integer : ObjType;
- PROCEDURE EnterDecl (id: IDENT; pos: POSITION) : Object;
- PROCEDURE FindDecl (id: IDENT; pos: POSITION) : Object;
- PROCEDURE GetObjType (obj : Object) : ObjType;
- PROCEDURE EnterBlock(): CARDINAL; (* retuns nesting level *)
- PROCEDURE LeaveBlock(): CARDINAL; (* " *)
- PROCEDURE InitObjectTable(): CARDINAL; (* " *)
- END ObjectTable.
|