<> <> <> <> <> DIRECTORY <> <> ViewerClasses, Rope, IO; ISToken: CEDAR DEFINITIONS = BEGIN <<>> <> TVType: TYPE = { null, endOfString, endOfStream, endOfScript, integer, atom, string, dollar, characters, plus, minus, times, divide, gets, open, leftCurly, rightCurly, node, push, pop, specialChars, styleOpen, styleDefinition }; <<'TV' is for Token(or)Value>> TVObject: TYPE = RECORD [ next: TVHandle _ NIL, streamName: ATOM _ NIL, body: SELECT type: TVType FROM null => [], endOfString => [], endOfStream => [], endOfScript => [], integer => [value: LONG INTEGER _ 0], atom => [value: ATOM _ NIL], string => [list: TVHandle _ NIL, tail: TVHandle _ NIL], dollar => [value: ATOM _ NIL], characters => [stream: IO.STREAM, startIndex, length: INT], plus => [], minus => [], times => [], divide => [], gets => [], open => [], leftCurly => [], rightCurly => [], push => [], pop => [], node => [isnode: --ISNode.Handle-- REF _ NIL], specialChars => [value: Rope.ROPE _ NIL, font: INTEGER _ 0], styleOpen => [name: ATOM _ NIL], styleDefinition => [name: ATOM _ NIL, value: TVHandle _ NIL], ENDCASE _ NULL ]; TVHandle: TYPE = REF TVObject; NodeTVHandle: TYPE = REF node TVObject; DollarTVHandle: TYPE = REF dollar TVObject; AtomTVHandle: TYPE = REF atom TVObject; StyleOpenTVHandle: TYPE = REF styleOpen TVObject; StyleDefinitionTVHandle: TYPE = REF styleDefinition TVObject; GetsTVHandle: TYPE = REF gets TVObject; IntegerTVHandle: TYPE = REF integer TVObject; MinusTVHandle: TYPE = REF minus TVObject; PlusTVHandle: TYPE = REF plus TVObject; TimesTVHandle: TYPE = REF times TVObject; DivideTVHandle: TYPE = REF divide TVObject; OpenTVHandle: TYPE = REF open TVObject; CharactersTVHandle: TYPE = REF characters TVObject; StringTVHandle: TYPE = REF string TVObject; PushTVHandle: TYPE = REF push TVObject; PopTVHandle: TYPE = REF pop TVObject; NullTVHandle: TYPE = REF null TVObject; EOSmTVHandle: TYPE = REF endOfStream TVObject; EOSgTVHandle: TYPE = REF endOfString TVObject; EOScTVHandle: TYPE = REF endOfScript TVObject; LeftCurlyTVHandle: TYPE = REF leftCurly TVObject; RightCurlyTVHandle: TYPE = REF rightCurly TVObject; <> <> Sequencing: TYPE = { initial, content, styleOpen, styleDefinition, embedded, bindings, end}; InterscriptContext: TYPE = REF InterscriptContextObject; InterscriptContextObject: TYPE = RECORD [ body: SELECT sequencing: Sequencing FROM initial => [parent: --ISNode.Handle-- REF], content => [content: TVHandle], styleOpen => [identifier: StyleOpenTVHandle], styleDefinition => [definition: StyleDefinitionTVHandle], embedded => [content: NodeTVHandle], bindings => [bindings: --ISBinding.StackHandle-- REF], end => [], ENDCASE ]; InitialInterscriptContext: TYPE = REF initial InterscriptContextObject; ContentInterscriptContext: TYPE = REF content InterscriptContextObject; StyleOpenInterscriptContext: TYPE = REF styleOpen InterscriptContextObject; StyleDefinitionInterscriptContext: TYPE = REF styleDefinition InterscriptContextObject; EmbeddedInterscriptContext: TYPE = REF embedded InterscriptContextObject; BindingsInterscriptContext: TYPE = REF bindings InterscriptContextObject; EndInterscriptContext: TYPE = REF end InterscriptContextObject; END.