import java_cup.runtime.*; import java.io.*; %% %notunix %implements java_cup.runtime.Scanner %type Symbol %function next_token %class Calc2Scanner %eofval{ return null; %eofval} IDENTIFIER = [a-zA-Z][a-zA-Z0-9]* NUMBER = [0-9]+ %% "+" { return new Symbol(Calc2Symbol.PLUS, yytext()); } "*" { return new Symbol(Calc2Symbol.MULTI, yytext()); } "=" { return new Symbol(Calc2Symbol.EQUAL, yytext()); } ";" { return new Symbol(Calc2Symbol.SEMI, yytext()); } "(" { return new Symbol(Calc2Symbol.LPAREN, yytext()); } ")" { return new Symbol(Calc2Symbol.RPAREN, yytext()); } {IDENTIFIER} {return new Symbol(Calc2Symbol.ID, yytext()); } {NUMBER} { return new Symbol(Calc2Symbol.NUMBER, new Integer(yytext()));} \r|\n {System.out.println("newline" + yytext()); } . {System.out.println("illegal input" + yytext()); }