ScriptScan.mesa
Last Edited by: Mitchell, February 7, 1983 3:22 pm
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.