/* Generated By:JavaCC: Do not edit this line. SimpleDBParser.java */ package org.springframework.data.simpledb.parser; import java.io.StringReader; public class SimpleDBParser implements SimpleDBParserConstants { public SimpleDBParser(String input) { this(new StringReader(input)); } /***************************************** * The SimpleDB grammar starts here * ***************************************** */ /** * select output_list * from domain_name * [where expression] * [sort_instructions] * [limit limit] * */ final public void selectQuery() throws ParseException { select(); from(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case WHERE: where(); break; default: jj_la1[0] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ORDER_BY: sort(); break; default: jj_la1[1] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LIMIT: limit(); break; default: jj_la1[2] = jj_gen; ; } jj_consume_token(0); } final private void select() throws ParseException { jj_consume_token(SELECT); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ALL_ITEMS: jj_consume_token(ALL_ITEMS); break; case ITEM_NAME: jj_consume_token(ITEM_NAME); break; case COUNT: jj_consume_token(COUNT); break; case IDENTIFIER: case BACKTICK: listOfAttributes(); break; default: jj_la1[3] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final private void listOfAttributes() throws ParseException { attributeName(); label_1: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMA: ; break; default: jj_la1[4] = jj_gen; break label_1; } jj_consume_token(COMMA); attributeName(); } } final private void from() throws ParseException { jj_consume_token(FROM); domainName(); } final private void domainName() throws ParseException { attributeName(); } final private void attributeName() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BACKTICK: jj_consume_token(BACKTICK); jj_consume_token(IDENTIFIER); label_2: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case DOT: ; break; default: jj_la1[5] = jj_gen; break label_2; } jj_consume_token(DOT); jj_consume_token(IDENTIFIER); } jj_consume_token(BACKTICK); break; case IDENTIFIER: jj_consume_token(IDENTIFIER); break; default: jj_la1[6] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final private void whereAttribute() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ITEM_NAME: jj_consume_token(ITEM_NAME); break; case IDENTIFIER: case BACKTICK: attributeName(); break; case EVERY: jj_consume_token(EVERY); break; default: jj_la1[7] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final private void whereOperator() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case AND: jj_consume_token(AND); break; case OR: jj_consume_token(OR); break; case INTERSECTION: jj_consume_token(INTERSECTION); break; default: jj_la1[8] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final private void where() throws ParseException { jj_consume_token(WHERE); whereExpression(); } final private void whereExpression() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NOT: jj_consume_token(NOT); whereExpression(); break; case LPAREN: jj_consume_token(LPAREN); whereExpression(); jj_consume_token(RPAREN); break; case ITEM_NAME: case EVERY: case IDENTIFIER: case BACKTICK: simpleComparison(); break; default: jj_la1[9] = jj_gen; jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case AND: case OR: case INTERSECTION: whereOperator(); whereExpression(); break; default: jj_la1[10] = jj_gen; ; } } final private void simpleComparison() throws ParseException { whereAttribute(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EQUALS: case NOT_EQUALS: case GTEQ: case GT: case LTEQ: case LT: simpleComparisonExpression(); break; case LIKE: case NOT_LIKE: likeComparisonExpression(); break; case BETWEEN: betweenComparisonExpression(); break; case IN: inComparisonExpression(); break; case IS_NOT_NULL: case IS_NULL: unaryComparisonExpression(); break; default: jj_la1[11] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final private void simpleComparisonExpression() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EQUALS: jj_consume_token(EQUALS); break; case NOT_EQUALS: jj_consume_token(NOT_EQUALS); break; case GT: jj_consume_token(GT); break; case GTEQ: jj_consume_token(GTEQ); break; case LT: jj_consume_token(LT); break; case LTEQ: jj_consume_token(LTEQ); break; default: jj_la1[12] = jj_gen; jj_consume_token(-1); throw new ParseException(); } jj_consume_token(QUOTED_STRING_LITERAL); } final private void likeComparisonExpression() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LIKE: jj_consume_token(LIKE); break; case NOT_LIKE: jj_consume_token(NOT_LIKE); break; default: jj_la1[13] = jj_gen; jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case QUOTED_STRING_LITERAL_NO_PERCENT_1: jj_consume_token(QUOTED_STRING_LITERAL_NO_PERCENT_1); break; case QUOTED_STRING_LITERAL_NO_PERCENT_2: jj_consume_token(QUOTED_STRING_LITERAL_NO_PERCENT_2); break; default: jj_la1[14] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final private void betweenComparisonExpression() throws ParseException { jj_consume_token(BETWEEN); jj_consume_token(QUOTED_STRING_LITERAL); jj_consume_token(AND); jj_consume_token(QUOTED_STRING_LITERAL); } final private void inComparisonExpression() throws ParseException { jj_consume_token(IN); jj_consume_token(LPAREN); jj_consume_token(QUOTED_STRING_LITERAL); label_3: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMA: ; break; default: jj_la1[15] = jj_gen; break label_3; } jj_consume_token(COMMA); jj_consume_token(QUOTED_STRING_LITERAL); } jj_consume_token(RPAREN); } final private void unaryComparisonExpression() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IS_NULL: jj_consume_token(IS_NULL); break; case IS_NOT_NULL: jj_consume_token(IS_NOT_NULL); break; default: jj_la1[16] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final private void sort() throws ParseException { jj_consume_token(ORDER_BY); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ITEM_NAME: jj_consume_token(ITEM_NAME); break; case IDENTIFIER: case BACKTICK: attributeName(); break; default: jj_la1[17] = jj_gen; jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ASC: case DESC: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ASC: jj_consume_token(ASC); break; case DESC: jj_consume_token(DESC); break; default: jj_la1[18] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: jj_la1[19] = jj_gen; ; } } final private void limit() throws ParseException { jj_consume_token(LIMIT); jj_consume_token(NUMBER); } /** Generated Token Manager. */ public SimpleDBParserTokenManager token_source; SimpleCharStream jj_input_stream; /** Current token. */ public Token token; /** Next token. */ public Token jj_nt; private int jj_ntk; private int jj_gen; final private int[] jj_la1 = new int[20]; static private int[] jj_la1_0; static private int[] jj_la1_1; static { jj_la1_init_0(); jj_la1_init_1(); } private static void jj_la1_init_0() { jj_la1_0 = new int[] {0x100,0x200,0x400,0xe000,0x0,0x0,0x0,0x10008000,0xe0000000,0x10008000,0xe0000000,0xfff0000,0x3f0000,0xc00000,0x0,0x0,0x6000000,0x8000,0x1800,0x1800,}; } private static void jj_la1_init_1() { jj_la1_1 = new int[] {0x0,0x0,0x0,0x10010,0x1000,0x2000,0x10010,0x10010,0x0,0x10111,0x0,0x0,0x0,0x0,0x6,0x1000,0x0,0x10010,0x0,0x0,}; } /** Constructor with InputStream. */ public SimpleDBParser(java.io.InputStream stream) { this(stream, null); } /** Constructor with InputStream and supplied encoding */ public SimpleDBParser(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 SimpleDBParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 20; i++) jj_la1[i] = -1; } /** 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 < 20; i++) jj_la1[i] = -1; } /** Constructor. */ public SimpleDBParser(java.io.Reader stream) { jj_input_stream = new SimpleCharStream(stream, 1, 1); token_source = new SimpleDBParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 20; i++) jj_la1[i] = -1; } /** 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 < 20; i++) jj_la1[i] = -1; } /** Constructor with generated Token Manager. */ public SimpleDBParser(SimpleDBParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 20; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(SimpleDBParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 20; i++) jj_la1[i] = -1; } 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(); } /** 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; /** Generate ParseException. */ public ParseException generateParseException() { jj_expentries.clear(); boolean[] la1tokens = new boolean[50]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } for (int i = 0; i < 20; 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; } } } } for (int i = 0; i < 50; i++) { if (la1tokens[i]) { jj_expentry = new int[1]; jj_expentry[0] = i; jj_expentries.add(jj_expentry); } } 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() { } }