public class SQLInterpreter { public static SelectStatement selectStatement; public static void main(String[] args) { String query = parseArgs(args); buildDatabase(); QueryPlan qPlan = planFor(query); Table result = null; try { result = qPlan.execute(); } catch (Exception e) { System.err.println("Problem with query: " + query); e.printStackTrace(); System.exit(1); } System.out.println(result); } private static QueryPlan planFor(String query) { StringReader sbf = new StringReader(query); Yylex lexer = new Yylex(sbf); parser myParser = new parser(lexer); try { myParser.parse(); } catch (Exception ex) { System.err.println("syntax error: " + query); ex.printStackTrace(); } QueryPlanVisitor visitor = new QueryPlanVisitor(); selectStatement.accept(visitor); return visitor.qPlan; } }