1(* User declarations. This is a -*- sml -*- file *) 2structure Tokens = Tokens 3type pos = int 4 5type svalue = Tokens.svalue 6type ('a,'b) token = ('a,'b)Tokens.token 7type lexresult = (svalue,pos) token 8 9val pos = ref 1 10fun eof () = Tokens.EOF(!pos,!pos) 11 12%% 13%header (functor DiskFilesLexFun(structure Tokens : DiskFiles_TOKENS)); 14digit=[0-9]; 15integer={digit}+; 16idstring=\" ([^\"\\] | "\\\"" | "\\\\" | "\\n")* \"; 17%% 18\n => (pos := !pos + 1; continue()); 19[\ \t]+ => (continue()); 20"$" => (Tokens.DOLLAR(!pos,!pos)); 21"." => (Tokens.FULLSTOP(!pos,!pos)); 22"\\" => (Tokens.BACKSLASH(!pos,!pos)); 23"(" => (Tokens.LPAREN(!pos,!pos)); 24")" => (Tokens.RPAREN(!pos,!pos)); 25"[" => (Tokens.LBRACKET(!pos,!pos)); 26"]" => (Tokens.RBRACKET(!pos,!pos)); 27"TYV" => (Tokens.TYV(!pos,!pos)); 28"TYOP" => (Tokens.TYOP(!pos,!pos)); 29"TMV" => (Tokens.TMV(!pos,!pos)); 30"TMC" => (Tokens.TMC(!pos,!pos)); 31"IDS" => (Tokens.IDS(!pos,!pos)); 32"TYPES" => (Tokens.TYPES(!pos,!pos)); 33"TERMS" => (Tokens.TERMS(!pos,!pos)); 34"THEOREMS" => (Tokens.THEOREMS(!pos,!pos)); 35{integer} => (Tokens.NUMBER(Option.valOf (Int.fromString yytext), 36 !pos, !pos)); 37{idstring} => (let val substr = String.substring(yytext,1,size yytext - 2) 38 in 39 Tokens.ID(valOf (String.fromString substr), !pos, !pos) 40 end); 41