import java_cup.runtime.*; /* Terminals */ terminal SELECT, FROM, WHERE, COMMA, ID, AND, INT, EQ, NE, LT, LE, GT, GE; /* Non terminals */ non terminal selectStatement, columnList, column, tableList, table, binop; non terminal filterExpression, joinExpression, whereExpression, primaryExpression; /* extremely simplified SQL grammar */ selectStatement ::= SELECT columnList FROM tableList WHERE whereExpression ; columnList ::= columnList COMMA column | column ; column ::= ID ; tableList ::= tableList COMMA table | table ; table ::= ID ; whereExpression ::= primaryExpression | whereExpression AND primaryExpression ; primaryExpression ::= filterExpression | joinExpression ; filterExpression ::= INT binop column | column binop INT ; joinExpression ::= column EQ column ; binop ::= EQ | NE | LT | LE | GT | GE ;