📄 psql.java
字号:
} label_4: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case AND: ; break; default: jj_la1[16] = jj_gen; break label_4; } jj_consume_token(AND); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 30: lpredSet = doLogicalSubClause(); if (lpredSet instanceof DisjunctiveSet) { predSet.add(lpredSet); } else predSet.addAll(lpredSet); break; case COUNT: case SUM: case MIN: case MAX: case AVG: case STAR: case WORD: p2 = doPredicate(); if (predSet instanceof ConjunctiveSet) { predSet.add(p2); } else { ConjunctiveSet cs = new ConjunctiveSet(); if (predSet instanceof DisjunctiveSet) cs.add(predSet); else cs.addAll(predSet); cs.add(p2); predSet = cs; } break; default: jj_la1[17] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } {if (true) return predSet;} throw new Error("Missing return statement in function"); } final public Set doLogicalDisjunction() throws ParseException { Set lhs=null, rhs=null; lhs = doLogicalConjunction(); label_5: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case OR: ; break; default: jj_la1[18] = jj_gen; break label_5; } jj_consume_token(OR); rhs = doLogicalConjunction(); } if (rhs == null) { {if (true) return lhs;} } else { if (lhs instanceof DisjunctiveSet || lhs instanceof ConjunctiveSet) { // HACK: Ensure that rhs holds a Set type, unless both lhs and rhs are predicates. Set tmp = rhs; rhs = lhs; lhs = tmp; } if (rhs instanceof DisjunctiveSet) { if (lhs instanceof ConjunctiveSet) { ConjunctiveSet pushedConjunction = new ConjunctiveSet(); for (Iterator iter = lhs.iterator(); iter.hasNext(); ) { Object element = iter.next(); if (element instanceof Predicate) { DisjunctiveSet ds = new DisjunctiveSet(); ds.addAll(rhs); ds.add(element); pushedConjunction.add(ds); } else if (element instanceof DisjunctiveSet) { ((DisjunctiveSet)element).addAll(rhs); pushedConjunction.add(element); } } {if (true) return pushedConjunction;} } else if (lhs instanceof DisjunctiveSet) { lhs.addAll(rhs); {if (true) return lhs;} } else { rhs.addAll(lhs); {if (true) return rhs;} } } else if (rhs instanceof ConjunctiveSet) { ConjunctiveSet pushedConjunction = new ConjunctiveSet(); if (!(lhs instanceof ConjunctiveSet)) { for (Iterator iter = rhs.iterator(); iter.hasNext(); ) { Object element = iter.next(); if (element instanceof Predicate) { DisjunctiveSet ds = new DisjunctiveSet(); ds.add(element); ds.addAll(lhs); pushedConjunction.add(ds); } else if (element instanceof DisjunctiveSet) { ((DisjunctiveSet)element).addAll(lhs); pushedConjunction.add(element); } else { {if (true) throw new ParseException("doLogicalDisjunction: Bad left hand side element.");} } } } else { for (Iterator riter = rhs.iterator(); riter.hasNext(); ) { Object relement = riter.next(); assert(!(relement instanceof ConjunctiveSet)); for (Iterator liter = lhs.iterator(); liter.hasNext(); ) { Object lelement = liter.next(); DisjunctiveSet ds = new DisjunctiveSet(); assert(!(lelement instanceof ConjunctiveSet)); if (relement instanceof DisjunctiveSet) ds.addAll((Set)relement); else ds.add(relement); if (lelement instanceof DisjunctiveSet) ds.addAll((Set)lelement); else ds.add(lelement); pushedConjunction.add(ds); } } } {if (true) return pushedConjunction;} } else { // Case: Both lhs and rhs are singleton predicates, create disjunction. DisjunctiveSet disjunction = new DisjunctiveSet(); disjunction.addAll(lhs); disjunction.addAll(rhs); {if (true) return disjunction;} } } throw new Error("Missing return statement in function"); } final public Predicate doPredicate() throws ParseException { Token text, op; Object LHS; Object RHS; byte opInt; String cast = null; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case STAR: case WORD: LHS = doField(); break; case COUNT: case SUM: case MIN: case MAX: case AVG: LHS = doAgg(); break; default: jj_la1[19] = jj_gen; jj_consume_token(-1); throw new ParseException(); } op = jj_consume_token(COMPAREOP); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case STAR: case WORD: RHS = doField(); break; case COUNT: case SUM: case MIN: case MAX: case AVG: RHS = doAgg(); break; case NUMBER: text = jj_consume_token(NUMBER); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case CAST: jj_consume_token(CAST); cast = doJavaClass(); break; default: jj_la1[20] = jj_gen; ; } if (cast == null) { //use a default cast of Integer or Double if (text.image.indexOf(".") == -1) { cast = "java.lang.Integer"; } else { cast = "java.lang.Double"; } } try { Class parameterTypes[] = new Class[] { String.class }; Constructor valueConstructor = Class.forName(cast).getConstructor(parameterTypes); Object parameterValues[] = new Object[] { text.image }; RHS = valueConstructor.newInstance(parameterValues); } catch (Exception e) { {if (true) throw new ParseException("Unable to cast " + text.image + " to " + cast);} } break; case QUOTEDWORD: text = jj_consume_token(QUOTEDWORD); RHS=text.image.substring(1, text.image.length() - 1); break; default: jj_la1[21] = jj_gen; jj_consume_token(-1); throw new ParseException(); } if (op.image.equals("=")) { opInt = Predicate.EQUAL; } else if (op.image.equals("!=") || op.image.equals("<>")) { opInt = Predicate.NOTEQUAL; } else if (op.image.equals(">=")) { opInt = Predicate.GREATERTHANEQUAL; } else if (op.image.equals(">")) { opInt = Predicate.GREATERTHAN; } else if (op.image.equals("<=")) { opInt = Predicate.LESSTHANEQUAL; } else if (op.image.equals("<")) { opInt = Predicate.LESSTHAN; } else { {if (true) throw new ParseException("Illegal predicate operation: " + op.image);} } {if (true) return new Predicate(LHS, opInt, RHS);} throw new Error("Missing return statement in function"); } final public String doJavaClass() throws ParseException { String result; Token text; text = jj_consume_token(WORD); result = text.image; label_6: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 28: ; break; default: jj_la1[22] = jj_gen; break label_6; } jj_consume_token(28); text = jj_consume_token(WORD); result += "." + text.image; } {if (true) return result;} throw new Error("Missing return statement in function"); } public PSQLTokenManager token_source; SimpleCharStream jj_input_stream; public Token token, jj_nt; private int jj_ntk; private int jj_gen; final private int[] jj_la1 = new int[23]; static private int[] jj_la1_0; static { jj_la1_0(); } private static void jj_la1_0() { jj_la1_0 = new int[] {0x8,0x40,0x10,0x8000000,0x8000000,0x8000000,0x10000000,0x1200000,0x300000,0x300000,0x3e000,0x1000,0x80,0x33f000,0x40280000,0x4033e000,0x100,0x4033e000,0x200,0x33e000,0x40000,0xf3e000,0x10000000,}; } public PSQL(java.io.InputStream stream) { jj_input_stream = new SimpleCharStream(stream, 1, 1); token_source = new PSQLTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 23; i++) jj_la1[i] = -1; } public void ReInit(java.io.InputStream 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 < 23; i++) jj_la1[i] = -1; } public PSQL(java.io.Reader stream) { jj_input_stream = new SimpleCharStream(stream, 1, 1); token_source = new PSQLTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 23; i++) jj_la1[i] = -1; } 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 < 23; i++) jj_la1[i] = -1; } public PSQL(PSQLTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 23; i++) jj_la1[i] = -1; } public void ReInit(PSQLTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 23; i++) jj_la1[i] = -1; } final 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++; return token; } token = oldToken; jj_kind = kind; throw generateParseException(); } 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; } 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; } final 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.Vector jj_expentries = new java.util.Vector(); private int[] jj_expentry; private int jj_kind = -1; public ParseException generateParseException() { jj_expentries.removeAllElements(); boolean[] la1tokens = new boolean[32]; for (int i = 0; i < 32; i++) { la1tokens[i] = false; } if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } for (int i = 0; i < 23; 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; } } } } for (int i = 0; i < 32; i++) { if (la1tokens[i]) { jj_expentry = new int[1]; jj_expentry[0] = i; jj_expentries.addElement(jj_expentry); } } int[][] exptokseq = new int[jj_expentries.size()][]; for (int i = 0; i < jj_expentries.size(); i++) { exptokseq[i] = (int[])jj_expentries.elementAt(i); } return new ParseException(token, exptokseq, tokenImage); } final public void enable_tracing() { } final public void disable_tracing() { }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -