import java.io.IOException; %% %public %class Scanner %implements Expression.yyInput %type boolean %function advance %eofval{ return false; %eofval} %{ /** current input symbol. */ protected int token; /** determines current input. @return token value or character. */ public int token () { return token; } /** value associated with current input symbol. */ protected Object value; public Object value () { return value; } %} comment = ("#".*) space = [\ \t\b\015]+ digit = [0-9] integer = {digit}+ exp = ([eE]("+"|"-")?{digit}+) real = ({digit}+"."{digit}*{exp}?|"."{digit}+{exp}?|{digit}+{exp}) %% {space} { } {comment} { } {integer} { token = Expression.Constant; value = new Integer(yytext()); return true; } {integer}[lL] { token = Expression.Constant; value = new Long(yytext().substring(0, yytext().length()-1)); return true; } {real} { token = Expression.Constant; value = new Double(yytext()); return true; } .|\n { token = yytext().charAt(0); return true; }