<<>> <> <> <> <> <> <> <> <> <> DIRECTORY Ascii USING [NUL], Rope USING [ROPE]; <> <> <> Token: CEDAR DEFINITIONS = BEGIN <> <> Handle: TYPE = REF Object; Object: TYPE = RECORD [ getChar: GetCharProcType, break: CHARACTER ¬ Ascii.NUL]; GetCharProcType: TYPE = PROCEDURE [h: Handle] RETURNS [c: CHARACTER]; <> <> <> FilterState: TYPE = REF StandardFilterState; StandardFilterState: TYPE = ARRAY [0..2) OF UNSPECIFIED; FilterProcType: TYPE = PROCEDURE [c: CHARACTER, data: FilterState] RETURNS [inClass: BOOLEAN]; QuoteProcType: TYPE = PROCEDURE [c: CHARACTER] RETURNS [closing: CHARACTER]; SkipMode: TYPE = {none, whiteSpace, nonToken}; nonQuote: CHARACTER = Ascii.NUL; <> <> <> <> Boolean: PROCEDURE [h: Handle, signalOnError: BOOLEAN ¬ TRUE] RETURNS [true: BOOLEAN]; Number: PROCEDURE [h: Handle, radix: CARDINAL, signalOnError: BOOLEAN ¬ TRUE] RETURNS [u: UNSPECIFIED]; Decimal: PROCEDURE [h: Handle, signalOnError: BOOLEAN ¬ TRUE] RETURNS [i: INTEGER]; Octal: PROCEDURE [h: Handle, signalOnError: BOOLEAN ¬ TRUE] RETURNS [c: CARDINAL]; LongNumber: PROCEDURE [ h: Handle, radix: CARDINAL, signalOnError: BOOLEAN ¬ TRUE] RETURNS [u: LONG UNSPECIFIED]; LongDecimal: PROCEDURE [h: Handle, signalOnError: BOOLEAN ¬ TRUE] RETURNS [i: LONG INTEGER]; LongOctal: PROCEDURE [h: Handle, signalOnError: BOOLEAN ¬ TRUE] RETURNS [c: LONG CARDINAL]; <> <> <<>> <> <> <> <> <> <> <> <> <> <> <> <> Item: PROCEDURE [ h: Handle, temporary: BOOLEAN ¬ TRUE] RETURNS [value: Rope.ROPE]; <> Skip: PROCEDURE [ h: Handle, data: FilterState, filter: FilterProcType, skipInClass: BOOLEAN ¬ TRUE]; Filtered: PROCEDURE [ h: Handle, data: FilterState, filter: FilterProcType, skip: SkipMode ¬ whiteSpace, temporary: BOOLEAN ¬ TRUE] RETURNS [value: Rope.ROPE]; MaybeQuoted: PROCEDURE [ h: Handle, data: FilterState, filter: FilterProcType ¬ NonWhiteSpace, isQuote: QuoteProcType ¬ Quote, skip: SkipMode ¬ whiteSpace, temporary: BOOLEAN ¬ TRUE] RETURNS [value: Rope.ROPE]; <> Alphabetic: FilterProcType; AlphaNumeric: FilterProcType; Delimited: FilterProcType; <> <> FileName: FilterProcType; -- '[, '], '<, '>, '*, '!, ';, '#, '-, '., '$, '+, AlphaNumeric Line: FilterProcType; NetFilter: FilterProcType; NonWhiteSpace: FilterProcType; Numeric: FilterProcType; Switches: FilterProcType; -- '~, '-, AlphaNumeric WhiteSpace: FilterProcType; -- SP, TAB, CR Brackets: QuoteProcType; -- () [] {} <> Quote: QuoteProcType; -- '" <> FreeStringHandle: PROCEDURE [h: Token.Handle] RETURNS [nil: Token.Handle]; StringToHandle: PROCEDURE [s: Rope.ROPE, offset: CARDINAL ¬ 0] RETURNS [h: Token.Handle]; FreeTokenString: PROCEDURE [s: Rope.ROPE] RETURNS [nil: Rope.ROPE ¬ NIL]; <> NilData: SIGNAL; SyntaxError: SIGNAL [s: Rope.ROPE]; UnterminatedQuote: SIGNAL; END...