/* Lexical scanner for calc */ %% %{ private java_cup.runtime.Symbol tok(int k, Object val) { return new java_cup.runtime.Symbol(k, yychar, yychar+yylength(), val); } %} %function next_token %type java_cup.runtime.Symbol %char %eofval{ {return tok(sym.EOF,null); } %eofval} ALPHA=[A-Za-z] DIGIT=[0-9] DIGITS=[0-9]+ NONNEWLINE_WHITE_SPACE=[\ \t\b\012] WHITE_SPACE=[\n\ \t\b\012] STRING_TEXT=(\\\"|[^\n\"]|\\{WHITE_SPACE}+\\)* COMMENT_TEXT=([^/*\n]|[^*\n]"/"[^*\n]|[^/\n]"*"[^/\n]|"*"[^/\n]|"/"[^*\n])* %% {WHITE_SPACE}+ {} "+" { return tok(sym.PLUS, null); } "*" { return tok(sym.TIMES, null); } "(" { return tok(sym.LPAREN, null); } ")" { return tok(sym.RPAREN, null); } {DIGITS} { return tok(sym.CONST, yytext()); }