type token = | TIntKw | TBoolKw | TVoidKw | TStructKw | TIf | TElse | TFor | TEach | TForEach | TIn | TReturn | TTrue | TFalse | TFn | TLet | TMut | TIdent of string | TIntLit of int | TLParen | TRParen | TLBrace | TRBrace | TLBracket | TRBracket | TSemicolon | TComma | TDot | TAssign | TPlus | TMinus | TStar | TSlash | TPercent | TAndAnd | TOrOr | TBang | TEqEq | TNe | TLt | TLe | TGt | TGe | TEOF | TArrow | TColon | THash exception Lex_error of string val lex : string -> token list