DIRECTORY Symbols USING [Type], Table USING [Base, Finger, Selector, Limit]; Literals: DEFINITIONS = { Base: TYPE = Table.Base; Finger: TYPE = Table.Finger; Limit: NAT = Table.Limit/2; LitIndex: TYPE = RECORD [ SELECT litTag: * FROM word => [lti: LTIndex], string => [sti: STIndex] ENDCASE]; WordSequence: TYPE = ARRAY [0..0) OF WORD; LTRecord: TYPE = RECORD [ link: LTIndex, datum: SELECT kind: * FROM short => [value: WORD], long => [ codeIndex: [0..CARDINAL.LAST/2], length: CARDINAL, value: WordSequence] ENDCASE]; LTIndex: TYPE = Base RELATIVE POINTER[0..Limit) TO LTRecord; LTNull: LTIndex = LTIndex.LAST; LTId: TYPE = RECORD [baseP: Finger, index: LitIndex.word]; LitDescriptor: TYPE = RECORD[ offset: Base RELATIVE POINTER[0..CARDINAL.LAST) TO WordSequence, length: CARDINAL]; STRecord: TYPE = RECORD [ SELECT kind: * FROM master => [ link: MSTIndex, local: BOOL, info: CARDINAL, codeIndex: CARDINAL, string: StringBody], copy => [ mark: BOOL, link: MSTIndex], heap => [ link: MSTIndex, type: Symbols.Type, info: CARDINAL] ENDCASE]; STIndex: TYPE = Base RELATIVE POINTER[0..Limit) TO STRecord; STNull: STIndex = STIndex.LAST; MSTIndex: TYPE = Base RELATIVE POINTER[0..Limit) TO STRecord.master; ltType: Table.Selector = 7; stType: Table.Selector = 8; }. Literals.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Satterthwaite, February 17, 1983 3:02 pm Russ Atkinson (RRA) January 31, 1985 1:02:07 pm PST data structures literal constants string literals the actual string text follows here table allocation codes Κ’˜codešœ ™ Kšœ Οmœ1™