package edu.gac.max.mcs388.s2002.c0; import java_cup.runtime.Symbol; %% %{ Symbol makeToken(int id, Object val){ // yychar and yychar+yylength() are the positions of left and right ends return new Symbol(id, yychar, yychar + yylength(), val); } Symbol makeToken(int id){ // as above but with no attribute value return new Symbol(id, yychar, yychar + yylength()); } %} %char %type Symbol %eofval{ return makeToken(sym.EOF); %eofval} %% "/" {return makeToken(sym.DIVIDE);} [0-9]+ {return makeToken(sym.NUMBER, new Integer(Integer.parseInt(yytext())));} "-" {return makeToken(sym.MINUS);} "*" {return makeToken(sym.TIMES);} "(" {return makeToken(sym.LPAREN);} ")" {return makeToken(sym.RPAREN);} "%" {return makeToken(sym.MOD);} "+" {return makeToken(sym.PLUS);} " "|\n|\t {} . {return makeToken(sym.ILLEGAL_CHAR, yytext());}