+(* File lexer.mll *)
+{
+open Parser(* The type token is defined in parser.mli *)
+exception Eof
+}
+rule token = parse
+ [' ' '\t'] { token lexbuf } (* skip blanks *)
+ | ['\n' ]{ EOL }
+ | ['i']['n'] { IN }
+ | ('_'|['a'-'z']|['A'-'Z']) as lxm { ID((String.make 1 lxm)) }
+ | ('_'|['a'-'z']|['A'-'Z'])(['0'-'9']|'_'|['a'-'z']|['A'-'Z'])+ as lxm { ID(lxm) }
+ | ['0'-'9']+ as lxm { INT(lxm) }
+ | '+' { PLUS }
+ | '-' { MINUS }
+ | '*' { TIMES }
+ | '/' { DIV }
+ | '(' { LPAREN }
+ | ')' { RPAREN }
+ | ['-']['>'] { IMPLY }
+ | ['=']['>'] { FUNC }
+ | '=' { ASSIGN }
+ | eof { raise Eof }