import java_cup.runtime.*; // definition of scanner/parser interface /* semantic value of token returned by scanner */ class TokenValue { public String text; TokenValue() { } TokenValue(String text) { this.text = text; } public String toString() { return text; } } %% %cup %eofval{ return new Symbol(sym.EOF); %eofval} %% AND { return new Symbol(sym.AND, new TokenValue()); } -?[0-9]+ { return new Symbol(sym.NUMBER, new Integer(yytext())); } WHERE { return new Symbol(sym.WHERE); } >= { return new Symbol(sym.GE); } = { return new Symbol(sym.EQ); } <= { return new Symbol(sym.LE); } > { return new Symbol(sym.GT); } != { return new Symbol(sym.NE); } < { return new Symbol(sym.LT); } SELECT { return new Symbol(sym.SELECT); } FROM { return new Symbol(sym.FROM); } [a-zA-Z]+ { return new Symbol(sym.ID, new TokenValue(yytext())); } , { return new Symbol(sym.COMMA); } [ \t\n] { } . { return new Symbol(sym.error, new TokenValue(yytext())); }