%% %class Lexer %type Token %function next_token %char %line %eofval{ return new Token (sym.EOF, null); %eofval} %yylexthrow{ Exception %yylexthrow} WHITESPACE = [\ \t\r\n]+ INTEGER_LITERAL = [0-9]+ %% ";" {return new Token (sym.SEMICOLON, yychar,yychar+1,yytext(),yyline);} "=" {return new Token (sym.EQUALS, yychar,yychar+1,yytext(),yyline);} {INTEGER_LITERAL} {return new Token (sym.INTEGER_LITERAL,yychar,yychar+yytext().length(),new Integer(yytext()),yyline);} {WHITESPACE} { } . { throw new Exception ("Lexical: unmatched input at line " + (yyline+1)); }