<> <> DIRECTORY Interscript USING [Id, Universal], Bindings USING [BTHandle], Rope USING [ROPE], IO USING [STREAM]; ScriptScan: CEDAR DEFINITIONS = BEGIN <<-- lexical definitions>> Token: TYPE ~ REF TokenRec; TokenRec: TYPE ~ RECORD[ first, last: STREAMPosition, -- to record where a token came from vp: SELECT type: OfToken FROM id => [id: Interscript.Id], univ => [univ: Interscript.Universal], -- includes keywords also int => [int: INT], real => [real: REAL], string => [s: Rope.ROPE], op => [op: Operator], sep => [s: Separator], bracket => [b: Bracket], literal => [lit: Literal] ENDCASE ]; OfToken: TYPE ~ {id, univ, int, real, string, op, sep, bracket, literal}; Operator: TYPE ~ {plus, minus, times, slash}; Separator: TYPE ~ {semicolon, dot, percent, exclamation, verticalBar, localGets, globalGets, upArrow, colon}; Bracket: TYPE ~ {lParen, rParen, lBracket, rBracket, lBrace, rBrace, quote}; Literal: TYPE ~ {nil, true, false}; STREAMPosition: TYPE ~ INT; InitScan: PROCEDURE [stream: IO.STREAM, bindTbl: Bindings.BTHandle, z: ZONE]; GetToken: PROCEDURE RETURNS [t: Token]; END.