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