INTERFACE---------------------------------------------------------------------------SimpleScanner ; IMPORT ASCII, Rd, TextSet; IMPORT ScanToken;
EXCEPTION Error(TEXT);---------------------------------------------------------------------------
CONST DefaultSpecialChars = ASCII.Set{ '/', '*', '+', '-', '=', '<', '>', '.', ',', ';', ':', '?', '(', ')', '[', ']', '{', '}', '\\', '#', '!', '@', '$', '%', '^', '&', '"', '~', '\'', '`' };---------------------------------------------------------------------------
TYPE Token <: ScanToken.T; T <: Public; Public = OBJECT skipComments : BOOLEAN; (* default TRUE *) nestingComments : BOOLEAN; (* default TRUE *) oneLineComments : BOOLEAN; (* default TRUE *) commentOpenSym : TEXT; (* default `/*' *) commentCloseSym : TEXT; (* default `*/' *) lineCommentSym : TEXT; (* default `#' *) stringOpenSym : TEXT; (* default `"' *) stringCloseSym : TEXT; (* default `"' *) identSymbols : ASCII.Set; (* default ASCII.AlphaNumerics + {'_'} *) whiteSpace : ASCII.Set; (* default ASCII.Spaces *) specialSymbols : ASCII.Set; (* default DefaultSpecialChars *) compoundToken : TextSet.T; (* default {`:=', `<=', `>=', `->'} *) keywordToken : TextSet.T; (* default {} *) METHODS init(inputStream : Rd.T) : T; nextToken() : Token RAISES {Error}; pushBack(t : Token); eof() : BOOLEAN; END;---------------------------------------------------------------------------
VAR debugScanner : BOOLEAN; END SimpleScanner.