/* Generated By:JavaCC: Do not edit this line. StreamSqlParser.java */ package org.yamcs.yarch.streamsql; import java.io.Reader; import java.io.FileInputStream; import java.util.HashSet; import java.util.Set; import java.util.List; import java.util.ArrayList; import java.math.BigDecimal; import java.math.BigInteger; import org.yamcs.yarch.*; import org.yamcs.yarch.TableWriter.InsertMode; import org.yamcs.yarch.TableDefinition.PartitionStorage; public class StreamSqlParser implements StreamSqlParserConstants { private String lastObjectReference = null; private String getNonEscapedString(String s) { return s.substring(1,s.length()-1).replace("''","'"); //remove the quote (') from beginning and from end and then replace double quote with single quote } protected boolean seeTYPE() { return "TYPE".equalsIgnoreCase(getToken(1).image); } final public DataType BasicDataTypeDefinition() throws ParseException { Token className; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_INT: jj_consume_token(K_INT); {if (true) return DataType.INT;} break; case K_BOOLEAN: jj_consume_token(K_BOOLEAN); {if (true) return DataType.BYTE;} break; case K_BYTE: jj_consume_token(K_BYTE); {if (true) return DataType.BYTE;} break; case K_SHRT: jj_consume_token(K_SHRT); {if (true) return DataType.SHORT;} break; case K_DOUBLE: jj_consume_token(K_DOUBLE); {if (true) return DataType.DOUBLE;} break; case K_TIMESTAMP: jj_consume_token(K_TIMESTAMP); {if (true) return DataType.TIMESTAMP;} break; case K_STRING: jj_consume_token(K_STRING); {if (true) return DataType.STRING;} break; case K_ENUM: jj_consume_token(K_ENUM); {if (true) return DataType.ENUM;} break; case K_BINARY: jj_consume_token(K_BINARY); {if (true) return DataType.BINARY;} break; case K_PROTOBUF: jj_consume_token(K_PROTOBUF); jj_consume_token(117); className = jj_consume_token(S_STRING); jj_consume_token(118); {if (true) return DataType.protobuf(getNonEscapedString(className.image));} break; default: jj_la1[0] = jj_gen; jj_consume_token(-1); throw new ParseException(); } throw new Error("Missing return statement in function"); } /* ---------------- DECLARATIONS SECTION ends here ------------------ */ /* ---------------- Code Section starts here ---------------------- */ final public StreamSqlStatement OneStatement() throws ParseException, StreamSqlException { StreamSqlStatement statement; statement = StreamSqlStatement(); jj_consume_token(0); {if (true) return statement;} throw new Error("Missing return statement in function"); } final public StreamSqlStatement StreamSqlStatement() throws ParseException, StreamSqlException { StreamSqlStatement statement; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 0: jj_consume_token(0); {if (true) return null;} break; case K_CLOSE: case K_CREATE: case K_DELETE: case K_DROP: case K_INSERT: case K_INSERT_APPEND: case K_SHOW: case K_UPSERT: case K_UPSERT_APPEND: if (jj_2_1(2)) { statement = CreateTableStatement(); } else if (jj_2_2(2)) { statement = CreateStreamStatement(); } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_DELETE: statement = DeleteStatement(); break; case K_INSERT: statement = InsertStatement(); break; case K_INSERT_APPEND: statement = InsertAppendStatement(); break; case K_UPSERT: statement = UpsertStatement(); break; case K_UPSERT_APPEND: statement = UpsertAppendStatement(); break; case K_CLOSE: statement = CloseStreamStatement(); break; case K_DROP: statement = DropTableStatement(); break; default: jj_la1[1] = jj_gen; if (jj_2_3(2)) { statement = ShowStreamsStatement(); } else if (jj_2_4(2)) { statement = ShowStreamStatement(); } else if (jj_2_5(2)) { statement = ShowTablesStatement(); } else { jj_consume_token(-1); throw new ParseException(); } } } {if (true) return statement;} break; default: jj_la1[2] = jj_gen; jj_consume_token(-1); throw new ParseException(); } throw new Error("Missing return statement in function"); } final public CreateInputStreamStatement CreateInputStreamStatement() throws ParseException { TupleDefinition tupleDefinition; String streamName; jj_consume_token(K_CREATE); jj_consume_token(K_INPUT); jj_consume_token(K_STREAM); streamName = ObjectName(); tupleDefinition = TupleDefinition(); {if (true) return new CreateInputStreamStatement(streamName,tupleDefinition);} throw new Error("Missing return statement in function"); } final public CreateTableStatement CreateTableStatement() throws ParseException, StreamSqlException { TupleDefinition tupleDefinition=new TupleDefinition(); ArrayList<String> primaryKey=new ArrayList<String>(); ArrayList<String> partitions=new ArrayList<String>(); String tableName, columnName, pk, partitionColumn ; boolean ifNotExists=false; DataType columnType; String dataDir=null; CreateTableStatement cts; jj_consume_token(K_CREATE); jj_consume_token(K_TABLE); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_IF: jj_consume_token(K_IF); jj_consume_token(K_NOT); jj_consume_token(K_EXISTS); ifNotExists=true; break; default: jj_la1[3] = jj_gen; ; } tableName = ObjectName(); jj_consume_token(117); label_1: while (true) { columnName = ObjectName(); columnType = BasicDataTypeDefinition(); jj_consume_token(119); tupleDefinition.addColumn(columnName,columnType); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S_IDENTIFIER: case S_DOUBLE_QUOTED_IDENTIFIER: ; break; default: jj_la1[4] = jj_gen; break label_1; } } jj_consume_token(K_PRIMARY); jj_consume_token(K_KEY); jj_consume_token(117); pk = ObjectName(); primaryKey.add(pk); label_2: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 119: ; break; default: jj_la1[5] = jj_gen; break label_2; } jj_consume_token(119); pk = ObjectName(); primaryKey.add(pk); } jj_consume_token(118); jj_consume_token(118); cts=new CreateTableStatement(ifNotExists, tableName, tupleDefinition, primaryKey); label_3: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_DATADIR: case K_ENGINE: case K_HISTOGRAM: case K_PARTITION: case K_PARTITION_STORAGE: case K_TABLE_FORMAT: ; break; default: jj_la1[6] = jj_gen; break label_3; } TableOption(cts); } {if (true) return cts;} throw new Error("Missing return statement in function"); } final public void TableOption(CreateTableStatement cts) throws ParseException { String columnName, datadir, engine; PartitioningSpec pspec; PartitionStorage pstorage; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_HISTOGRAM: jj_consume_token(K_HISTOGRAM); jj_consume_token(117); columnName = ObjectName(); cts.addHistogramColumn(columnName); label_4: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 119: ; break; default: jj_la1[7] = jj_gen; break label_4; } jj_consume_token(119); columnName = ObjectName(); cts.addHistogramColumn(columnName); } jj_consume_token(118); break; case K_ENGINE: jj_consume_token(K_ENGINE); engine = ObjectName(); cts.setEngine(engine); break; case K_PARTITION: jj_consume_token(K_PARTITION); jj_consume_token(K_BY); pspec = PartitioningSpec(); cts.setPartitioning(pspec); break; case K_DATADIR: jj_consume_token(K_DATADIR); datadir = ObjectName(); cts.setDataDir(datadir); break; case K_TABLE_FORMAT: jj_consume_token(K_TABLE_FORMAT); jj_consume_token(120); jj_consume_token(K_COMPRESSED); cts.setCompressed(true); break; case K_PARTITION_STORAGE: jj_consume_token(K_PARTITION_STORAGE); jj_consume_token(120); pstorage = PartitionStorage(); cts.setPartitionStorage(pstorage); break; default: jj_la1[8] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final public PartitionStorage PartitionStorage() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_IN_KEY: jj_consume_token(K_IN_KEY); {if (true) return PartitionStorage.IN_KEY;} break; case K_COLUMN_FAMILY: jj_consume_token(K_COLUMN_FAMILY); {if (true) return PartitionStorage.COLUMN_FAMILY;} break; default: jj_la1[9] = jj_gen; jj_consume_token(-1); throw new ParseException(); } throw new Error("Missing return statement in function"); } final public PartitioningSpec PartitioningSpec() throws ParseException { PartitioningSpec pspec; String cname1, cname2; Token timePartSchema = null; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_TIME: jj_consume_token(K_TIME); jj_consume_token(117); cname1 = ObjectName(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 117: jj_consume_token(117); timePartSchema = jj_consume_token(S_STRING); jj_consume_token(118); break; default: jj_la1[10] = jj_gen; ; } jj_consume_token(118); pspec = PartitioningSpec.timeSpec(cname1); break; case K_VALUE: jj_consume_token(K_VALUE); jj_consume_token(117); cname1 = ObjectName(); jj_consume_token(118); pspec = PartitioningSpec.valueSpec(cname1); break; case K_TIME_AND_VALUE: jj_consume_token(K_TIME_AND_VALUE); jj_consume_token(117); cname1 = ObjectName(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 117: jj_consume_token(117); timePartSchema = jj_consume_token(S_STRING); jj_consume_token(118); break; default: jj_la1[11] = jj_gen; ; } jj_consume_token(119); cname2 = ObjectName(); jj_consume_token(118); pspec = PartitioningSpec.timeAndValueSpec(cname1, cname2); break; default: jj_la1[12] = jj_gen; jj_consume_token(-1); throw new ParseException(); } if(timePartSchema!=null) { try { pspec.setTimePartitioningSchema(getNonEscapedString(timePartSchema.image)); } catch (IllegalArgumentException e) { {if (true) throw new ParseException(e.getMessage());} } } {if (true) return pspec;} throw new Error("Missing return statement in function"); } final public CreateOutputStreamStatement CreateOutputStreamStatement() throws ParseException { String name; StreamExpression expression; jj_consume_token(K_CREATE); jj_consume_token(K_OUTPUT); jj_consume_token(K_STREAM); name = ObjectName(); jj_consume_token(K_AS); expression = SpeedLimitStreamExpression(); {if (true) return new CreateOutputStreamStatement(name,expression);} throw new Error("Missing return statement in function"); } final public CreateStreamStatement CreateStreamStatement() throws ParseException { String name; StreamExpression expression; TupleDefinition tupleDefinition; jj_consume_token(K_CREATE); jj_consume_token(K_STREAM); name = ObjectName(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_AS: jj_consume_token(K_AS); expression = SpeedLimitStreamExpression(); {if (true) return new CreateStreamStatement(name,expression);} break; case 117: tupleDefinition = TupleDefinition(); {if (true) return new CreateStreamStatement(name,tupleDefinition);} break; default: jj_la1[13] = jj_gen; jj_consume_token(-1); throw new ParseException(); } throw new Error("Missing return statement in function"); } final public SpeedLimitStreamExpression SpeedLimitStreamExpression() throws ParseException { StreamExpression expression; SpeedSpec speedSpec=null; boolean follow=true; expression = StreamExpression(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_SPEED: jj_consume_token(K_SPEED); speedSpec=SpeedSpec(); break; default: jj_la1[14] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_NOFOLLOW: jj_consume_token(K_NOFOLLOW); follow=false; break; default: jj_la1[15] = jj_gen; ; } if(expression instanceof SelectExpression) { ((SelectExpression) expression).setFollow(follow); } {if (true) return new SpeedLimitStreamExpression(expression,speedSpec);} throw new Error("Missing return statement in function"); } final public CloseStreamStatement CloseStreamStatement() throws ParseException { String name; jj_consume_token(K_CLOSE); jj_consume_token(K_STREAM); name = ObjectName(); {if (true) return new CloseStreamStatement(name);} throw new Error("Missing return statement in function"); } final public DropTableStatement DropTableStatement() throws ParseException { boolean ifExists=false; String name; jj_consume_token(K_DROP); jj_consume_token(K_TABLE); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_IF: jj_consume_token(K_IF); jj_consume_token(K_EXISTS); ifExists=true; break; default: jj_la1[16] = jj_gen; ; } name = ObjectName(); {if (true) return new DropTableStatement(ifExists, name);} throw new Error("Missing return statement in function"); } final public ShowStreamsStatement ShowStreamsStatement() throws ParseException { jj_consume_token(K_SHOW); jj_consume_token(K_STREAMS); {if (true) return new ShowStreamsStatement();} throw new Error("Missing return statement in function"); } final public ShowTablesStatement ShowTablesStatement() throws ParseException { jj_consume_token(K_SHOW); jj_consume_token(K_TABLES); {if (true) return new ShowTablesStatement();} throw new Error("Missing return statement in function"); } final public ShowStreamStatement ShowStreamStatement() throws ParseException { boolean showPort=false; String name; jj_consume_token(K_SHOW); jj_consume_token(K_STREAM); name = ObjectName(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_PORT: jj_consume_token(K_PORT); showPort=true; break; default: jj_la1[17] = jj_gen; ; } {if (true) return new ShowStreamStatement(name,showPort);} throw new Error("Missing return statement in function"); } final public StreamExpression StreamExpression() throws ParseException { StreamExpression expression; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_SELECT: expression = SelectStatement(); break; case K_MERGE: expression = MergeExpression(); break; default: jj_la1[18] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return expression;} throw new Error("Missing return statement in function"); } final public void IntoClause() throws ParseException { jj_consume_token(K_INTO); ObjectName(); } final public void ColumnValues() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S_IDENTIFIER: case S_DOUBLE_QUOTED_IDENTIFIER: ColumnValue(); label_5: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 119: ; break; default: jj_la1[19] = jj_gen; break label_5; } jj_consume_token(119); ColumnValue(); } break; case 117: jj_consume_token(117); ObjectName(); label_6: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 119: ; break; default: jj_la1[20] = jj_gen; break label_6; } jj_consume_token(119); ObjectName(); } jj_consume_token(118); jj_consume_token(120); jj_consume_token(117); SelectStatement(); jj_consume_token(118); break; default: jj_la1[21] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final public void ColumnValue() throws ParseException { ObjectName(); jj_consume_token(120); Expression(); } final public InsertStatement InsertStatement() throws ParseException { String name; StreamExpression expression; jj_consume_token(K_INSERT); jj_consume_token(K_INTO); name = ObjectName(); expression = StreamExpression(); {if (true) return new InsertStatement(name, expression, InsertMode.INSERT);} throw new Error("Missing return statement in function"); } final public InsertStatement UpsertStatement() throws ParseException { String name; StreamExpression expression; jj_consume_token(K_UPSERT); jj_consume_token(K_INTO); name = ObjectName(); expression = StreamExpression(); {if (true) return new InsertStatement(name, expression, InsertMode.UPSERT);} throw new Error("Missing return statement in function"); } final public InsertStatement InsertAppendStatement() throws ParseException { String name; StreamExpression expression; jj_consume_token(K_INSERT_APPEND); jj_consume_token(K_INTO); name = ObjectName(); expression = StreamExpression(); {if (true) return new InsertStatement(name, expression, InsertMode.INSERT_APPEND);} throw new Error("Missing return statement in function"); } final public InsertStatement UpsertAppendStatement() throws ParseException { String name; StreamExpression expression; jj_consume_token(K_UPSERT_APPEND); jj_consume_token(K_INTO); name = ObjectName(); expression = StreamExpression(); {if (true) return new InsertStatement(name, expression, InsertMode.UPSERT_APPEND);} throw new Error("Missing return statement in function"); } final public MergeExpression MergeExpression() throws ParseException { MergeExpression mergeExpr=new MergeExpression(); TupleSourceExpression tsrc; String name; boolean ascending=true; jj_consume_token(K_MERGE); tsrc = TupleSourceExpression(); mergeExpr.addTupleSourceExpression(tsrc); label_7: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 119: ; break; default: jj_la1[22] = jj_gen; break label_7; } jj_consume_token(119); tsrc = TupleSourceExpression(); mergeExpr.addTupleSourceExpression(tsrc); } jj_consume_token(K_USING); name = ObjectName(); mergeExpr.setMergeColumn(name); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_ORDER: ascending = OrderClause(); mergeExpr.setAscending(ascending); break; default: jj_la1[23] = jj_gen; ; } {if (true) return mergeExpr;} throw new Error("Missing return statement in function"); } final public DeleteStatement DeleteStatement() throws ParseException { String tableName; Expression expression=null; jj_consume_token(K_DELETE); jj_consume_token(K_FROM); tableName = ObjectName(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_WHERE: jj_consume_token(K_WHERE); expression = Expression(); break; default: jj_la1[24] = jj_gen; ; } jj_consume_token(121); {if (true) return new DeleteStatement(tableName,expression);} throw new Error("Missing return statement in function"); } final public SpeedSpec SpeedSpec() throws ParseException { String columnName; BigDecimal bd; float x=1; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_AFAP: jj_consume_token(K_AFAP); {if (true) return new SpeedSpec(SpeedSpec.Type.AFAP);} break; case K_FIXED_DELAY: jj_consume_token(K_FIXED_DELAY); jj_consume_token(S_INTEGER); {if (true) return new SpeedSpec(SpeedSpec.Type.FIXED_DELAY, Integer.parseInt(token.image));} break; case K_ORIGINAL: jj_consume_token(K_ORIGINAL); columnName = ObjectName(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 119: jj_consume_token(119); bd = NumericConstant(); x=bd.floatValue(); break; default: jj_la1[25] = jj_gen; ; } {if (true) return new SpeedSpec(SpeedSpec.Type.ORIGINAL, columnName, x);} break; case K_STEP_BY_STEP: jj_consume_token(K_STEP_BY_STEP); jj_consume_token(S_INTEGER); {if (true) return new SpeedSpec(SpeedSpec.Type.STEP_BY_STEP, Integer.parseInt(token.image));} break; default: jj_la1[26] = jj_gen; jj_consume_token(-1); throw new ParseException(); } throw new Error("Missing return statement in function"); } // Expression and it's childs final public Expression Expression() throws ParseException { Expression expr; Expression retExpr; expr = AndExpression(); retExpr=expr; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_OR: jj_consume_token(K_OR); expr = AndExpression(); retExpr=new OrExpression(retExpr,expr); break; default: jj_la1[27] = jj_gen; ; } {if (true) return retExpr;} throw new Error("Missing return statement in function"); } final public Expression AndExpression() throws ParseException { Expression expr; ArrayList<Expression> list=new ArrayList<Expression>(); expr = UnaryLogicalExpression(); list.add(expr); label_8: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_AND: ; break; default: jj_la1[28] = jj_gen; break label_8; } jj_consume_token(K_AND); expr = UnaryLogicalExpression(); list.add(expr); } if(list.size()==1) {if (true) return list.get(0);} else {if (true) return new AndExpression(list);} throw new Error("Missing return statement in function"); } final public Expression UnaryLogicalExpression() throws ParseException { boolean notset=false; Expression expr; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_NOT: jj_consume_token(K_NOT); notset=true; break; default: jj_la1[29] = jj_gen; ; } expr = RelationalExpression(); if(notset) {if (true) return new NotExpression(expr);} else {if (true) return expr;} throw new Error("Missing return statement in function"); } final public Expression RelationalExpression() throws ParseException { Expression retExpr, expr; RelOp relOp; List<Expression> list; LikeClause likeClause; expr = SimpleExpression(); retExpr=expr; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_BETWEEN: case K_IN: case K_IS: case K_LIKE: case K_NOT: case 120: case 128: case 129: case 130: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 120: case 128: case 129: case 130: relOp = RelOp(); expr = SimpleExpression(); retExpr=new RelationalExpression(retExpr,expr,relOp); break; default: jj_la1[30] = jj_gen; if (jj_2_6(2)) { list = InClause(); retExpr=new InExpression(expr, list); } else if (jj_2_7(2)) { BetweenClause(); } else if (jj_2_8(2)) { likeClause = LikeClause(); retExpr = new LikeExpression(expr, likeClause); } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_IS: IsNullClause(); break; default: jj_la1[31] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } } break; default: jj_la1[32] = jj_gen; ; } {if (true) return retExpr;} throw new Error("Missing return statement in function"); } final public List<Expression> ExpressionList() throws ParseException { List<Expression> list=new ArrayList<Expression>(); Expression expr; expr = Expression(); list.add(expr); label_9: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 119: ; break; default: jj_la1[33] = jj_gen; break label_9; } jj_consume_token(119); expr = Expression(); list.add(expr); } {if (true) return list;} throw new Error("Missing return statement in function"); } final public List<Expression> InClause() throws ParseException { List<Expression> list; jj_consume_token(K_IN); jj_consume_token(117); list = ExpressionList(); jj_consume_token(118); {if (true) return list;} throw new Error("Missing return statement in function"); } final public void BetweenClause() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_NOT: jj_consume_token(K_NOT); break; default: jj_la1[34] = jj_gen; ; } jj_consume_token(K_BETWEEN); SimpleExpression(); jj_consume_token(K_AND); SimpleExpression(); } final public LikeClause LikeClause() throws ParseException { LikeClause likeClause = new LikeClause(); String pattern; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_NOT: jj_consume_token(K_NOT); likeClause.setNegation(true); break; default: jj_la1[35] = jj_gen; ; } jj_consume_token(K_LIKE); jj_consume_token(S_STRING); likeClause.setPattern(getNonEscapedString(token.image)); {if (true) return likeClause;} throw new Error("Missing return statement in function"); } final public void IsNullClause() throws ParseException { jj_consume_token(K_IS); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_NOT: jj_consume_token(K_NOT); break; default: jj_la1[36] = jj_gen; ; } jj_consume_token(K_NULL); } final public Expression SimpleExpression() throws ParseException { Expression expr; AddOp addOp; List<Expression>exprs=new ArrayList<Expression>(); List<AddOp> ops=new ArrayList<AddOp>(); expr = MultiplicativeExpression(); exprs.add(expr); label_10: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 123: case 124: case 125: ; break; default: jj_la1[37] = jj_gen; break label_10; } addOp = AddOp(); expr = MultiplicativeExpression(); exprs.add(expr); ops.add(addOp); } if(ops.isEmpty()) { {if (true) return exprs.get(0);} } else { {if (true) return new AdditiveExpression(exprs,ops);} } throw new Error("Missing return statement in function"); } final public Expression MultiplicativeExpression() throws ParseException { Expression expr; MultOp multOp; List<Expression>exprs=new ArrayList<Expression>(); List<MultOp> ops=new ArrayList<MultOp>(); expr = ExponentExpression(); exprs.add(expr); label_11: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_MOD: case 126: case 127: ; break; default: jj_la1[38] = jj_gen; break label_11; } multOp = MultOp(); expr = MultiplicativeExpression(); exprs.add(expr); ops.add(multOp); } if(ops.isEmpty()) { {if (true) return exprs.get(0);} } else { {if (true) return new MultiplicativeExpression(exprs,ops);} } throw new Error("Missing return statement in function"); } final public Expression ExponentExpression() throws ParseException { Expression retExpr,expr; expr = UnaryExpression(); retExpr=expr; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 122: jj_consume_token(122); expr = UnaryExpression(); retExpr=new ExponentExpression(retExpr,expr); break; default: jj_la1[39] = jj_gen; ; } {if (true) return retExpr;} throw new Error("Missing return statement in function"); } final public Expression UnaryExpression() throws ParseException { Expression expr; boolean negative=false; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 123: case 124: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 123: jj_consume_token(123); break; case 124: jj_consume_token(124); negative=true; break; default: jj_la1[40] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: jj_la1[41] = jj_gen; ; } expr = PrimaryExpression(); if(negative) { if(expr instanceof ValueExpression) { {if (true) return ((ValueExpression)expr).getNegative();} } else { {if (true) return new NegativeExpression(expr);} } } else { {if (true) return expr;} } throw new Error("Missing return statement in function"); } final public Expression PrimaryExpression() throws ParseException { String name; Expression expr; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S_INTEGER: jj_consume_token(S_INTEGER); BigInteger bi=new BigInteger(token.image); if (bi.bitLength()<32) {if (true) return new ValueExpression((Integer)bi.intValue());} if (bi.bitLength()<64) {if (true) return new ValueExpression((Long)bi.longValue());} {if (true) throw new ParseException("number too big for an int or a long: "+bi);} break; case S_FLOAT: jj_consume_token(S_FLOAT); {if (true) return new ValueExpression(Double.valueOf(token.image));} break; case S_STRING: jj_consume_token(S_STRING); {if (true) return new ValueExpression(getNonEscapedString(token.image));} break; default: jj_la1[42] = jj_gen; if (jj_2_9(2147483647)) { expr = FunctionCall(); {if (true) return expr;} } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S_IDENTIFIER: case S_DOUBLE_QUOTED_IDENTIFIER: name = ObjectName(); {if (true) return new ColumnExpression(name);} break; default: jj_la1[43] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } } throw new Error("Missing return statement in function"); } /* ---------------- General Productions --------------------- */ final public String ObjectName() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S_IDENTIFIER: jj_consume_token(S_IDENTIFIER); {if (true) return token.image;} break; case S_DOUBLE_QUOTED_IDENTIFIER: jj_consume_token(S_DOUBLE_QUOTED_IDENTIFIER); String s1 = token.image; {if (true) return s1.substring(1, s1.length() - 1);} break; default: jj_la1[44] = jj_gen; jj_consume_token(-1); throw new ParseException(); } throw new Error("Missing return statement in function"); } final public AddOp AddOp() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 123: jj_consume_token(123); {if (true) return AddOp.PLUS;} break; case 124: jj_consume_token(124); {if (true) return AddOp.MINUS;} break; case 125: jj_consume_token(125); {if (true) return AddOp.STRING_PLUS;} break; default: jj_la1[45] = jj_gen; jj_consume_token(-1); throw new ParseException(); } throw new Error("Missing return statement in function"); } final public MultOp MultOp() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 126: jj_consume_token(126); {if (true) return MultOp.MULT;} break; case 127: jj_consume_token(127); {if (true) return MultOp.DIV;} break; case K_MOD: jj_consume_token(K_MOD); {if (true) return MultOp.MOD;} break; default: jj_la1[46] = jj_gen; jj_consume_token(-1); throw new ParseException(); } throw new Error("Missing return statement in function"); } final public RelOp RelOp() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 120: jj_consume_token(120); {if (true) return RelOp.EQUAL;} break; case 128: jj_consume_token(128); jj_consume_token(120); {if (true) return RelOp.NOT_EQUAL;} break; default: jj_la1[47] = jj_gen; if (jj_2_10(2)) { jj_consume_token(129); jj_consume_token(120); {if (true) return RelOp.GREATER_OR_EQUAL;} } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 129: jj_consume_token(129); {if (true) return RelOp.GREATER;} break; default: jj_la1[48] = jj_gen; if (jj_2_11(2)) { jj_consume_token(130); jj_consume_token(129); {if (true) return RelOp.NOT_EQUAL;} } else if (jj_2_12(2)) { jj_consume_token(130); jj_consume_token(120); {if (true) return RelOp.LESS_OR_EQUAL;} } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 130: jj_consume_token(130); {if (true) return RelOp.LESS;} break; default: jj_la1[49] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } } } } throw new Error("Missing return statement in function"); } final public void Arguments() throws ParseException { Argument(); label_12: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 119: ; break; default: jj_la1[50] = jj_gen; break label_12; } jj_consume_token(119); Argument(); } } final public void Argument() throws ParseException { if (jj_2_13(2)) { jj_consume_token(S_IDENTIFIER); jj_consume_token(131); } else { ; } Expression(); } /* --------------- General Productions ends here --------------- */ /* ----------- SQL productions start here ----------------- */ final public SelectExpression SelectStatement() throws ParseException { SelectExpression expression; boolean ascending; expression = Select(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_ORDER: ascending = OrderClause(); expression.setAscending(ascending); break; default: jj_la1[51] = jj_gen; ; } {if (true) return expression;} throw new Error("Missing return statement in function"); } final public SelectExpression Select() throws ParseException { List<SelectItem> selectList; TupleSourceExpression tsrc; Expression whereClause=null; SelectExpression selectExpr=new SelectExpression(); WindowSpecification windowSpec; jj_consume_token(K_SELECT); selectList = SelectList(); selectExpr.setSelectList(selectList); jj_consume_token(K_FROM); tsrc = TupleSourceExpression(); selectExpr.setFirstSource(tsrc); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 132: jj_consume_token(132); windowSpec = WindowSpecification(); selectExpr.setWindow(windowSpec); jj_consume_token(133); break; default: jj_la1[52] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_WHERE: jj_consume_token(K_WHERE); whereClause = Expression(); selectExpr.setWhereClause(whereClause); break; default: jj_la1[53] = jj_gen; ; } {if (true) return selectExpr;} throw new Error("Missing return statement in function"); } /* Checks for whatever follows SELECT */ final public List<SelectItem> SelectList() throws ParseException { List<SelectItem> selectList = new ArrayList<SelectItem>(); SelectItem selectItem; selectItem = SelectItem(); selectList.add(selectItem); label_13: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 119: ; break; default: jj_la1[54] = jj_gen; break label_13; } jj_consume_token(119); selectItem = SelectItem(); selectList.add(selectItem); } {if (true) return selectList;} throw new Error("Missing return statement in function"); } final public SelectItem SelectItem() throws ParseException { String name; Expression expr; SelectItem selectItem; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 126: jj_consume_token(126); {if (true) return SelectItem.STAR;} break; case S_INTEGER: case S_FLOAT: case S_STRING: case S_IDENTIFIER: case S_DOUBLE_QUOTED_IDENTIFIER: case 123: case 124: expr = SimpleExpression(); selectItem=new SelectItem(expr); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_AS: case S_IDENTIFIER: case S_DOUBLE_QUOTED_IDENTIFIER: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_AS: jj_consume_token(K_AS); break; default: jj_la1[55] = jj_gen; ; } name = ObjectName(); selectItem.setAlias(name); break; default: jj_la1[56] = jj_gen; ; } {if (true) return selectItem;} break; default: jj_la1[57] = jj_gen; jj_consume_token(-1); throw new ParseException(); } throw new Error("Missing return statement in function"); } final public WindowSpecification WindowSpecification() throws ParseException { String name,field; WindowSpecification wspec; BigDecimal size, advance; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S_IDENTIFIER: case S_DOUBLE_QUOTED_IDENTIFIER: name = ObjectName(); wspec=new WindowSpecification(name); break; case K_SIZE: jj_consume_token(K_SIZE); size = NumericConstant(); jj_consume_token(K_ADVANCE); advance = NumericConstant(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_TIME: jj_consume_token(K_TIME); wspec=new WindowSpecification(size,advance,WindowSpecification.Type.TIME); break; case K_TUPLES: jj_consume_token(K_TUPLES); wspec=new WindowSpecification(size,advance,WindowSpecification.Type.TUPLES); break; case K_ON: jj_consume_token(K_ON); field = ObjectName(); wspec=new WindowSpecification(size,advance,WindowSpecification.Type.FIELD,field); break; default: jj_la1[58] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return wspec;} break; default: jj_la1[59] = jj_gen; jj_consume_token(-1); throw new ParseException(); } throw new Error("Missing return statement in function"); } final public TupleSourceExpression TupleSourceExpression() throws ParseException { TupleSourceExpression tsrc; StreamExpression expr; String name, histoColumn; BigDecimal mergeTime; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S_IDENTIFIER: case S_DOUBLE_QUOTED_IDENTIFIER: name = ObjectName(); tsrc=new TupleSourceExpression(name); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_HISTOGRAM: jj_consume_token(K_HISTOGRAM); jj_consume_token(117); histoColumn = ObjectName(); tsrc.setHistogramColumn(histoColumn); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 119: jj_consume_token(119); mergeTime = NumericConstant(); tsrc.setHistogramMergeTime(mergeTime); break; default: jj_la1[60] = jj_gen; ; } jj_consume_token(118); break; default: jj_la1[61] = jj_gen; ; } break; default: jj_la1[62] = jj_gen; if (jj_2_14(3)) { jj_consume_token(117); expr = StreamExpression(); jj_consume_token(118); tsrc=new TupleSourceExpression(expr); } else { jj_consume_token(-1); throw new ParseException(); } } {if (true) return tsrc;} throw new Error("Missing return statement in function"); } final public TupleDefinition TupleDefinition() throws ParseException { String columnName; TupleDefinition tupleDefinition=new TupleDefinition(); DataType columnType; jj_consume_token(117); columnName = ObjectName(); columnType = BasicDataTypeDefinition(); tupleDefinition.addColumn(columnName,columnType); label_14: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 119: ; break; default: jj_la1[63] = jj_gen; break label_14; } jj_consume_token(119); columnName = ObjectName(); columnType = BasicDataTypeDefinition(); tupleDefinition.addColumn(columnName,columnType); } jj_consume_token(118); {if (true) return tupleDefinition;} throw new Error("Missing return statement in function"); } final public boolean OrderClause() throws ParseException { boolean ascending=true; jj_consume_token(K_ORDER); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_ASC: case K_DESC: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_ASC: jj_consume_token(K_ASC); break; case K_DESC: jj_consume_token(K_DESC); ascending=false; break; default: jj_la1[64] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: jj_la1[65] = jj_gen; ; } {if (true) return ascending;} throw new Error("Missing return statement in function"); } final public Expression FunctionCall() throws ParseException { String name; List<Expression> args=null; boolean star=false; name = ObjectName(); jj_consume_token(117); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_NOT: case S_INTEGER: case S_FLOAT: case S_STRING: case S_IDENTIFIER: case S_DOUBLE_QUOTED_IDENTIFIER: case 123: case 124: case 126: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_NOT: case S_INTEGER: case S_FLOAT: case S_STRING: case S_IDENTIFIER: case S_DOUBLE_QUOTED_IDENTIFIER: case 123: case 124: args = FunctionArgumentList(); break; case 126: jj_consume_token(126); star=true; break; default: jj_la1[66] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: jj_la1[67] = jj_gen; ; } jj_consume_token(118); {if (true) return FunctionExpressionFactory.get(name, args, star);} throw new Error("Missing return statement in function"); } final public List<Expression> FunctionArgumentList() throws ParseException { List<Expression> args=new ArrayList<Expression>(); Expression expr; expr = Expression(); args.add(expr); label_15: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 119: ; break; default: jj_la1[68] = jj_gen; break label_15; } jj_consume_token(119); Expression(); args.add(expr); } {if (true) return args;} throw new Error("Missing return statement in function"); } final public BigDecimal NumericConstant() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S_INTEGER: jj_consume_token(S_INTEGER); break; case S_FLOAT: jj_consume_token(S_FLOAT); break; default: jj_la1[69] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return new BigDecimal(token.image);} throw new Error("Missing return statement in function"); } final public void ID(String id) throws ParseException { jj_consume_token(S_IDENTIFIER); if (!token.image.matches("(?i)" + id)) { {if (true) throw new ParseException("Encountered " + token.image + " at line " + token.beginLine + ", column " + token.beginColumn + "." + "\u005cnWas expecting: " + id);} } } private boolean jj_2_1(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_1(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(0, xla); } } private boolean jj_2_2(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_2(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(1, xla); } } private boolean jj_2_3(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_3(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(2, xla); } } private boolean jj_2_4(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_4(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(3, xla); } } private boolean jj_2_5(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_5(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(4, xla); } } private boolean jj_2_6(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_6(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(5, xla); } } private boolean jj_2_7(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_7(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(6, xla); } } private boolean jj_2_8(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_8(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(7, xla); } } private boolean jj_2_9(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_9(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(8, xla); } } private boolean jj_2_10(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_10(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(9, xla); } } private boolean jj_2_11(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_11(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(10, xla); } } private boolean jj_2_12(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_12(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(11, xla); } } private boolean jj_2_13(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_13(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(12, xla); } } private boolean jj_2_14(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_14(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(13, xla); } } private boolean jj_3R_37() { Token xsp; xsp = jj_scanpos; if (jj_3R_40()) { jj_scanpos = xsp; if (jj_3_14()) return true; } return false; } private boolean jj_3R_16() { if (jj_scan_token(K_CREATE)) return true; if (jj_scan_token(K_TABLE)) return true; return false; } private boolean jj_3_12() { if (jj_scan_token(130)) return true; if (jj_scan_token(120)) return true; return false; } private boolean jj_3_11() { if (jj_scan_token(130)) return true; if (jj_scan_token(129)) return true; return false; } private boolean jj_3_10() { if (jj_scan_token(129)) return true; if (jj_scan_token(120)) return true; return false; } private boolean jj_3R_26() { if (jj_3R_32()) return true; return false; } private boolean jj_3R_17() { if (jj_scan_token(K_CREATE)) return true; if (jj_scan_token(K_STREAM)) return true; return false; } private boolean jj_3R_29() { if (jj_scan_token(S_DOUBLE_QUOTED_IDENTIFIER)) return true; return false; } private boolean jj_3R_51() { if (jj_3R_26()) return true; return false; } private boolean jj_3R_24() { Token xsp; xsp = jj_scanpos; if (jj_3R_28()) { jj_scanpos = xsp; if (jj_3R_29()) return true; } return false; } private boolean jj_3R_28() { if (jj_scan_token(S_IDENTIFIER)) return true; return false; } private boolean jj_3_9() { if (jj_3R_24()) return true; if (jj_scan_token(117)) return true; return false; } private boolean jj_3R_50() { if (jj_scan_token(126)) return true; return false; } private boolean jj_3R_43() { Token xsp; xsp = jj_scanpos; if (jj_3R_50()) { jj_scanpos = xsp; if (jj_3R_51()) return true; } return false; } private boolean jj_3_5() { if (jj_3R_20()) return true; return false; } private boolean jj_3_4() { if (jj_3R_19()) return true; return false; } private boolean jj_3_3() { if (jj_3R_18()) return true; return false; } private boolean jj_3R_27() { if (jj_scan_token(K_NOT)) return true; return false; } private boolean jj_3R_23() { Token xsp; xsp = jj_scanpos; if (jj_3R_27()) jj_scanpos = xsp; if (jj_scan_token(K_LIKE)) return true; if (jj_scan_token(S_STRING)) return true; return false; } private boolean jj_3R_49() { if (jj_3R_24()) return true; return false; } private boolean jj_3R_31() { if (jj_3R_34()) return true; return false; } private boolean jj_3R_48() { if (jj_3R_52()) return true; return false; } private boolean jj_3R_30() { if (jj_3R_33()) return true; return false; } private boolean jj_3R_47() { if (jj_scan_token(S_STRING)) return true; return false; } private boolean jj_3R_25() { Token xsp; xsp = jj_scanpos; if (jj_3R_30()) { jj_scanpos = xsp; if (jj_3R_31()) return true; } return false; } private boolean jj_3R_46() { if (jj_scan_token(S_FLOAT)) return true; return false; } private boolean jj_3R_22() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(55)) jj_scanpos = xsp; if (jj_scan_token(K_BETWEEN)) return true; if (jj_3R_26()) return true; return false; } private boolean jj_3R_39() { if (jj_3R_43()) return true; return false; } private boolean jj_3R_45() { if (jj_scan_token(S_INTEGER)) return true; return false; } private boolean jj_3R_42() { Token xsp; xsp = jj_scanpos; if (jj_3R_45()) { jj_scanpos = xsp; if (jj_3R_46()) { jj_scanpos = xsp; if (jj_3R_47()) { jj_scanpos = xsp; if (jj_3R_48()) { jj_scanpos = xsp; if (jj_3R_49()) return true; } } } } return false; } private boolean jj_3R_19() { if (jj_scan_token(K_SHOW)) return true; if (jj_scan_token(K_STREAM)) return true; return false; } private boolean jj_3_2() { if (jj_3R_17()) return true; return false; } private boolean jj_3R_21() { if (jj_scan_token(K_IN)) return true; if (jj_scan_token(117)) return true; return false; } private boolean jj_3_1() { if (jj_3R_16()) return true; return false; } private boolean jj_3R_52() { if (jj_3R_24()) return true; return false; } private boolean jj_3R_20() { if (jj_scan_token(K_SHOW)) return true; if (jj_scan_token(K_TABLES)) return true; return false; } private boolean jj_3R_36() { if (jj_scan_token(K_SELECT)) return true; if (jj_3R_39()) return true; return false; } private boolean jj_3R_44() { if (jj_scan_token(124)) return true; return false; } private boolean jj_3R_34() { if (jj_scan_token(K_MERGE)) return true; if (jj_3R_37()) return true; return false; } private boolean jj_3R_41() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(123)) { jj_scanpos = xsp; if (jj_3R_44()) return true; } return false; } private boolean jj_3R_18() { if (jj_scan_token(K_SHOW)) return true; if (jj_scan_token(K_STREAMS)) return true; return false; } private boolean jj_3R_38() { Token xsp; xsp = jj_scanpos; if (jj_3R_41()) jj_scanpos = xsp; if (jj_3R_42()) return true; return false; } private boolean jj_3_8() { if (jj_3R_23()) return true; return false; } private boolean jj_3_7() { if (jj_3R_22()) return true; return false; } private boolean jj_3R_33() { if (jj_3R_36()) return true; return false; } private boolean jj_3_6() { if (jj_3R_21()) return true; return false; } private boolean jj_3R_35() { if (jj_3R_38()) return true; return false; } private boolean jj_3_13() { if (jj_scan_token(S_IDENTIFIER)) return true; if (jj_scan_token(131)) return true; return false; } private boolean jj_3_14() { if (jj_scan_token(117)) return true; if (jj_3R_25()) return true; return false; } private boolean jj_3R_32() { if (jj_3R_35()) return true; return false; } private boolean jj_3R_40() { if (jj_3R_24()) return true; return false; } /** Generated Token Manager. */ public StreamSqlParserTokenManager token_source; SimpleCharStream jj_input_stream; /** Current token. */ public Token token; /** Next token. */ public Token jj_nt; private int jj_ntk; private Token jj_scanpos, jj_lastpos; private int jj_la; private int jj_gen; final private int[] jj_la1 = new int[70]; static private int[] jj_la1_0; static private int[] jj_la1_1; static private int[] jj_la1_2; static private int[] jj_la1_3; static private int[] jj_la1_4; static { jj_la1_init_0(); jj_la1_init_1(); jj_la1_init_2(); jj_la1_init_3(); jj_la1_init_4(); } private static void jj_la1_init_0() { jj_la1_0 = new int[] {0x4002c000,0x88080000,0x88480001,0x0,0x0,0x0,0x1000000,0x0,0x1000000,0x100000,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x200,0x0,0x0,0x0,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10001000,0x10001000,0x0,0x0,0x0,0x0,}; } private static void jj_la1_init_1() { jj_la1_1 = new int[] {0x10002,0xc000,0xc000,0x200,0x0,0x0,0x101,0x0,0x101,0x800,0x0,0x0,0x0,0x0,0x0,0x1000000,0x200,0x0,0x200000,0x0,0x0,0x0,0x0,0x40000000,0x0,0x0,0x80000010,0x20000000,0x0,0x800000,0x0,0x40000,0x940400,0x0,0x800000,0x800000,0x800000,0x0,0x400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x0,0x0,0x0,0x0,0x40000000,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x800000,0x800000,0x0,0x0,}; } private static void jj_la1_init_2() { jj_la1_2 = new int[] {0x41040040,0x0,0x20000,0x0,0x0,0x0,0x400000c,0x0,0x400000c,0x0,0x0,0x0,0x30000000,0x0,0x100000,0x0,0x0,0x10,0x4000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x90000000,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } private static void jj_la1_init_3() { jj_la1_3 = new int[] {0x0,0xc,0xc,0x0,0x120000,0x800000,0x0,0x800000,0x0,0x0,0x200000,0x200000,0x40,0x200000,0x0,0x0,0x0,0x0,0x0,0x800000,0x800000,0x320000,0x800000,0x0,0x100,0x800000,0x0,0x0,0x0,0x0,0x1000000,0x0,0x1000000,0x800000,0x0,0x0,0x0,0x38000000,0xc0000000,0x4000000,0x18000000,0x18000000,0x4600,0x120000,0x120000,0x38000000,0xc0000000,0x1000000,0x0,0x0,0x800000,0x0,0x0,0x100,0x800000,0x0,0x120000,0x58124600,0x0,0x120000,0x800000,0x0,0x120000,0x800000,0x0,0x0,0x58124600,0x58124600,0x800000,0x600,}; } private static void jj_la1_init_4() { jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } final private JJCalls[] jj_2_rtns = new JJCalls[14]; private boolean jj_rescan = false; private int jj_gc = 0; /** Constructor with InputStream. */ public StreamSqlParser(java.io.InputStream stream) { this(stream, null); } /** Constructor with InputStream and supplied encoding */ public StreamSqlParser(java.io.InputStream stream, String encoding) { try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source = new StreamSqlParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 70; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } /** Reinitialise. */ public void ReInit(java.io.InputStream stream) { ReInit(stream, null); } /** Reinitialise. */ public void ReInit(java.io.InputStream stream, String encoding) { try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 70; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } /** Constructor. */ public StreamSqlParser(java.io.Reader stream) { jj_input_stream = new SimpleCharStream(stream, 1, 1); token_source = new StreamSqlParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 70; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } /** Reinitialise. */ public void ReInit(java.io.Reader stream) { jj_input_stream.ReInit(stream, 1, 1); token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 70; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } /** Constructor with generated Token Manager. */ public StreamSqlParser(StreamSqlParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 70; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } /** Reinitialise. */ public void ReInit(StreamSqlParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 70; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } private Token jj_consume_token(int kind) throws ParseException { Token oldToken; if ((oldToken = token).next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; if (token.kind == kind) { jj_gen++; if (++jj_gc > 100) { jj_gc = 0; for (int i = 0; i < jj_2_rtns.length; i++) { JJCalls c = jj_2_rtns[i]; while (c != null) { if (c.gen < jj_gen) c.first = null; c = c.next; } } } return token; } token = oldToken; jj_kind = kind; throw generateParseException(); } static private final class LookaheadSuccess extends java.lang.Error { } final private LookaheadSuccess jj_ls = new LookaheadSuccess(); private boolean jj_scan_token(int kind) { if (jj_scanpos == jj_lastpos) { jj_la--; if (jj_scanpos.next == null) { jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken(); } else { jj_lastpos = jj_scanpos = jj_scanpos.next; } } else { jj_scanpos = jj_scanpos.next; } if (jj_rescan) { int i = 0; Token tok = token; while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; } if (tok != null) jj_add_error_token(kind, i); } if (jj_scanpos.kind != kind) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls; return false; } /** Get the next Token. */ final public Token getNextToken() { if (token.next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; jj_gen++; return token; } /** Get the specific Token. */ final public Token getToken(int index) { Token t = token; for (int i = 0; i < index; i++) { if (t.next != null) t = t.next; else t = t.next = token_source.getNextToken(); } return t; } private int jj_ntk() { if ((jj_nt=token.next) == null) return (jj_ntk = (token.next=token_source.getNextToken()).kind); else return (jj_ntk = jj_nt.kind); } private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>(); private int[] jj_expentry; private int jj_kind = -1; private int[] jj_lasttokens = new int[100]; private int jj_endpos; private void jj_add_error_token(int kind, int pos) { if (pos >= 100) return; if (pos == jj_endpos + 1) { jj_lasttokens[jj_endpos++] = kind; } else if (jj_endpos != 0) { jj_expentry = new int[jj_endpos]; for (int i = 0; i < jj_endpos; i++) { jj_expentry[i] = jj_lasttokens[i]; } boolean exists = false; for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) { exists = true; int[] oldentry = (int[])(it.next()); if (oldentry.length == jj_expentry.length) { for (int i = 0; i < jj_expentry.length; i++) { if (oldentry[i] != jj_expentry[i]) { exists = false; break; } } if (exists) break; } } if (!exists) jj_expentries.add(jj_expentry); if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind; } } /** Generate ParseException. */ public ParseException generateParseException() { jj_expentries.clear(); boolean[] la1tokens = new boolean[134]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } for (int i = 0; i < 70; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<<j)) != 0) { la1tokens[j] = true; } if ((jj_la1_1[i] & (1<<j)) != 0) { la1tokens[32+j] = true; } if ((jj_la1_2[i] & (1<<j)) != 0) { la1tokens[64+j] = true; } if ((jj_la1_3[i] & (1<<j)) != 0) { la1tokens[96+j] = true; } if ((jj_la1_4[i] & (1<<j)) != 0) { la1tokens[128+j] = true; } } } } for (int i = 0; i < 134; i++) { if (la1tokens[i]) { jj_expentry = new int[1]; jj_expentry[0] = i; jj_expentries.add(jj_expentry); } } jj_endpos = 0; jj_rescan_token(); jj_add_error_token(0, 0); int[][] exptokseq = new int[jj_expentries.size()][]; for (int i = 0; i < jj_expentries.size(); i++) { exptokseq[i] = jj_expentries.get(i); } return new ParseException(token, exptokseq, tokenImage); } /** Enable tracing. */ final public void enable_tracing() { } /** Disable tracing. */ final public void disable_tracing() { } private void jj_rescan_token() { jj_rescan = true; for (int i = 0; i < 14; i++) { try { JJCalls p = jj_2_rtns[i]; do { if (p.gen > jj_gen) { jj_la = p.arg; jj_lastpos = jj_scanpos = p.first; switch (i) { case 0: jj_3_1(); break; case 1: jj_3_2(); break; case 2: jj_3_3(); break; case 3: jj_3_4(); break; case 4: jj_3_5(); break; case 5: jj_3_6(); break; case 6: jj_3_7(); break; case 7: jj_3_8(); break; case 8: jj_3_9(); break; case 9: jj_3_10(); break; case 10: jj_3_11(); break; case 11: jj_3_12(); break; case 12: jj_3_13(); break; case 13: jj_3_14(); break; } } p = p.next; } while (p != null); } catch(LookaheadSuccess ls) { } } jj_rescan = false; } private void jj_save(int index, int xla) { JJCalls p = jj_2_rtns[index]; while (p.gen > jj_gen) { if (p.next == null) { p = p.next = new JJCalls(); break; } p = p.next; } p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla; } static final class JJCalls { int gen; Token first; int arg; JJCalls next; } }