You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ek...@apache.org on 2005/06/14 23:14:49 UTC
svn commit: r190657 [14/23] - in /incubator/beehive/trunk/system-controls:
./ ant/ samples/ejb/
samples/ejb/client/org/apache/beehive/controls/system/ejb/sample/client/
samples/ejb/control/org/apache/beehive/controls/system/ejb/sample/control/
samples/ejb/ejb/META-INF/
samples/ejb/ejb/org/apache/beehive/controls/system/ejb/sample/bean/
samples/jdbc/jdbcControlSample/ samples/jdbc/jdbcControlSample/META-INF/
samples/jdbc/jdbcControlSample/WEB-INF/
samples/jdbc/jdbcControlSample/WEB-INF/src/
samples/jdbc/jdbcControlSample/WEB-INF/src/controls/
samples/jdbc/jdbcControlSample/WEB-INF/src/servlet/
samples/jdbc/jdbcControlSample/WEB-INF/src/shared/ samples/jms/
samples/jms/src/org/apache/beehive/controls/system/jms/samples/
samples/webservice/amazon/ samples/webservice/amazon/junit/
samples/webservice/amazon/schemas/ samples/webservice/common/src/test/
samples/webservice/google/ samples/webservice/google/junit/model/
samples/webservice/google/rpc_schemas/ samples/webservice/google/servlet/
samples/webservice/wsm_samples_client/
samples/webservice/wsm_samples_client/junit/
samples/webservice/wsm_samples_client/junit/org/wsm/samples/client/header/
samples/webservice/wsm_samples_client/junit/org/wsm/samples/client/webparam/
samples/webservice/xmlbeans/ samples/webservice/xmlbeans/junit/ src/ejb/
src/ejb/org/apache/beehive/controls/system/ejb/ src/ejb/schema/ src/jdbc/
src/jdbc/org/apache/beehive/controls/system/jdbc/
src/jdbc/org/apache/beehive/controls/system/jdbc/parser/ src/jms/
src/jms/org/apache/beehive/controls/system/jms/
src/jms/org/apache/beehive/controls/system/jms/impl/
src/jms/org/apache/beehive/controls/system/jndi/
src/jms/org/apache/beehive/controls/system/jndi/impl/ src/webservice/
src/webservice/org/apache/beehive/controls/system/webservice/
src/webservice/org/apache/beehive/controls/system/webservice/generator/
src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/
src/webservice/org/apache/beehive/controls/system/webservice/utils/
test/ant/ test/conf/ test/src/jdbc/controls/
test/src/jdbc/controls/org/apache/beehive/controls/system/jdbc/test/dbconnection/
test/src/jdbc/controls/org/apache/beehive/controls/system/jdbc/test/errors/
test/src/jdbc/controls/org/apache/beehive/controls/system/jdbc/test/results/
test/src/jdbc/controls/schemas/badusers/
test/src/jdbc/controls/schemas/users/ test/src/jdbc/jdbc-container/
test/src/jdbc/jdbc-container/application/
test/src/jdbc/jdbc-container/src/org/apache/beehive/controls/system/jdbc/containertest/
test/src/jdbc/jdbc-container/webapp/WEB-INF/
test/src/jdbc/jdbc-container/webapp/conf/Catalina/localhost/
test/src/jdbc/junitTests/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/dbconnection/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/errors/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/results/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/sqlparser/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/utils/
test/src/webservice/ test/src/webservice/jcxgen-tests/
test/src/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/units/jcxgen/
test/src/webservice/schemas/ test/src/webservice/servers/webapp/WEB-INF/
test/src/webservice/servers/webapp/WEB-INF/src/org/apache/beehive/doclitwrap/
test/src/webservice/servers/webapp/WEB-INF/src/web/
test/src/webservice/servers/webapp/WEB-INF/webservices/web/complex/
test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/dlwservice/
Modified: incubator/beehive/trunk/system-controls/src/jdbc/org/apache/beehive/controls/system/jdbc/parser/SqlGrammar.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/system-controls/src/jdbc/org/apache/beehive/controls/system/jdbc/parser/SqlGrammar.java?rev=190657&r1=190656&r2=190657&view=diff
==============================================================================
--- incubator/beehive/trunk/system-controls/src/jdbc/org/apache/beehive/controls/system/jdbc/parser/SqlGrammar.java (original)
+++ incubator/beehive/trunk/system-controls/src/jdbc/org/apache/beehive/controls/system/jdbc/parser/SqlGrammar.java Tue Jun 14 14:14:42 2005
@@ -1,514 +1,514 @@
-/* Generated By:JavaCC: Do not edit this line. SqlGrammar.java */
-package org.apache.beehive.controls.system.jdbc.parser;
-import java.io.StringReader;
-
-public class SqlGrammar implements SqlGrammarConstants {
- private StringBuilder buffer = new StringBuilder();
- public static void main(String[] args) throws Exception
- {
- SqlGrammar parser = new SqlGrammar(new StringReader(args[0]));
- SqlStatement statement = parser.parse();
- System.out.println(statement.toString());
- }
-
-//
-// Parse methods
-//
-
-
-//
-// Main parse method
-//
- final public SqlStatement parse() throws ParseException {
- SqlStatement statement = new SqlStatement();
- SqlFragment frag;
- Token t, sq;
- label_1:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case NON_EXPRESSION_TEXT:
- case START_EXPRESSION:
- case SQUOTE:
- ;
- break;
- default:
- jj_la1[0] = jj_gen;
- break label_1;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case NON_EXPRESSION_TEXT:
- t = jj_consume_token(NON_EXPRESSION_TEXT);
- statement.addChild(new LiteralFragment(t.image));
- break;
- case SQUOTE:
- sq = jj_consume_token(SQUOTE);
- t = jj_consume_token(STRING_LITERAL);
- statement.addChild(new LiteralFragment(sq.image + t.image));
- break;
- case START_EXPRESSION:
- frag = parseExpression();
- statement.addChild(frag);
- break;
- default:
- jj_la1[1] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- jj_consume_token(0);
- {if (true) return statement;}
- throw new Error("Missing return statement in function");
- }
-
-//
-// Parse an expression delimited by '{}'
-//
- final public SqlFragment parseExpression() throws ParseException {
- Token t, tt = null;
- SqlFragment frag = null;
- jj_consume_token(START_EXPRESSION);
- label_2:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case WHITESPACE:
- ;
- break;
- default:
- jj_la1[2] = jj_gen;
- break label_2;
- }
- jj_consume_token(WHITESPACE);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SQL_ESCAPE:
- case SQL_SUBST:
- case SQL_FN:
- frag = parseSqlEscape();
- break;
- case JDBC_CALL:
- case JDBC_RET:
- case JDBC_DATE:
- case JDBC_TIME:
- case JDBC_TIMESTAMP:
- case JDBC_FUNCTION:
- case JDBC_ESCAPE:
- case JDBC_OUTERJOIN:
- frag = parseJdbcEscape();
- break;
- case IDENTIFIER:
- t = jj_consume_token(IDENTIFIER);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case REFLECT_SEP:
- jj_consume_token(REFLECT_SEP);
- tt = jj_consume_token(IDENTIFIER);
- break;
- default:
- jj_la1[3] = jj_gen;
- ;
- }
- jj_consume_token(END_EXPRESSION);
- frag = new ReflectionFragment(t.image,(tt == null) ? null : tt.image);
- break;
- default:
- jj_la1[4] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- label_3:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case WHITESPACE:
- ;
- break;
- default:
- jj_la1[5] = jj_gen;
- break label_3;
- }
- jj_consume_token(WHITESPACE);
- }
- {if (true) return frag;}
- throw new Error("Missing return statement in function");
- }
-
-//
-// parse an sql: escape sequence
-//
- final public SqlSubstitutionFragment parseSqlEscape() throws ParseException {
- Token id1, id2;
- Token t = null;
- SqlSubstitutionFragment frag;
- String func = null;
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SQL_ESCAPE:
- case SQL_SUBST:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SQL_ESCAPE:
- jj_consume_token(SQL_ESCAPE);
- break;
- case SQL_SUBST:
- jj_consume_token(SQL_SUBST);
- break;
- default:
- jj_la1[6] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- t = jj_consume_token(IDENTIFIER);
- if (t != null) {
- frag = new SqlSubstitutionFragment(new ReflectionFragment(t.image));
- } else {
- frag = new SqlSubstitutionFragment(new LiteralFragment(func));
- }
- break;
- case SQL_FN:
- jj_consume_token(SQL_FN);
- jj_consume_token(SQL_FN_NM);
- jj_consume_token(SQL_FN_PAREN);
- label_4:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SQL_FN_WHITESPACE:
- ;
- break;
- default:
- jj_la1[7] = jj_gen;
- break label_4;
- }
- jj_consume_token(SQL_FN_WHITESPACE);
- }
- id1 = jj_consume_token(SQL_FN_IDENTIFIER);
- label_5:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SQL_FN_WHITESPACE:
- ;
- break;
- default:
- jj_la1[8] = jj_gen;
- break label_5;
- }
- jj_consume_token(SQL_FN_WHITESPACE);
- }
- jj_consume_token(SQL_FN_COMMA);
- label_6:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SQL_FN_WHITESPACE:
- ;
- break;
- default:
- jj_la1[9] = jj_gen;
- break label_6;
- }
- jj_consume_token(SQL_FN_WHITESPACE);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SQL_FN_PSTART:
- t = jj_consume_token(SQL_FN_PSTART);
- break;
- default:
- jj_la1[10] = jj_gen;
- ;
- }
- id2 = jj_consume_token(SQL_FN_IDENTIFIER);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SQL_FN_PEND:
- jj_consume_token(SQL_FN_PEND);
- break;
- default:
- jj_la1[11] = jj_gen;
- ;
- }
- label_7:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SQL_FN_WHITESPACE:
- ;
- break;
- default:
- jj_la1[12] = jj_gen;
- break label_7;
- }
- jj_consume_token(SQL_FN_WHITESPACE);
- }
- jj_consume_token(SQL_FN_END);
- if (t == null) {
- frag = new SqlSubstitutionFragment(new LiteralFragment("(" + id1.image + " IN (" + id2.image + ")"));
- } else {
- frag = new SqlSubstitutionFragment(new LiteralFragment("(" + id1.image + " IN ("),
- new ReflectionFragment(id2.image),
- new LiteralFragment("))"));
- }
- break;
- default:
- jj_la1[13] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- jj_consume_token(END_EXPRESSION);
- {if (true) return frag;}
- throw new Error("Missing return statement in function");
- }
-
-//
-// parse a param sub inside of a jdbc escape
-//
- final public SqlFragment parseReflect() throws ParseException {
- Token t, tt = null;
- SqlFragment frag;
- jj_consume_token(JDBC_PARAM);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PARAM_IDENTIFIER:
- t = jj_consume_token(PARAM_IDENTIFIER);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PARAM_REFLECT_SEP:
- jj_consume_token(PARAM_REFLECT_SEP);
- tt = jj_consume_token(IDENTIFIER);
- break;
- default:
- jj_la1[14] = jj_gen;
- ;
- }
- frag = new ReflectionFragment(t.image, (tt == null) ? null : tt.image);
- break;
- case PARAM_LITERAL:
- t = jj_consume_token(PARAM_LITERAL);
- frag = new LiteralFragment(t.image);
- break;
- default:
- jj_la1[15] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- jj_consume_token(PARAM_END);
- {if (true) return frag;}
- throw new Error("Missing return statement in function");
- }
-
-//
-// parse a jdbc escape sequence
-//
- final public JdbcFragment parseJdbcEscape() throws ParseException {
- Token lit, c;
- JdbcFragment jfrag = new JdbcFragment();
- jfrag.addChild(new LiteralFragment("{"));
- SqlFragment frag = null;
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case JDBC_CALL:
- c = jj_consume_token(JDBC_CALL);
- break;
- case JDBC_RET:
- c = jj_consume_token(JDBC_RET);
- break;
- case JDBC_DATE:
- c = jj_consume_token(JDBC_DATE);
- break;
- case JDBC_ESCAPE:
- c = jj_consume_token(JDBC_ESCAPE);
- break;
- case JDBC_FUNCTION:
- c = jj_consume_token(JDBC_FUNCTION);
- break;
- case JDBC_TIME:
- c = jj_consume_token(JDBC_TIME);
- break;
- case JDBC_TIMESTAMP:
- c = jj_consume_token(JDBC_TIMESTAMP);
- break;
- case JDBC_OUTERJOIN:
- c = jj_consume_token(JDBC_OUTERJOIN);
- break;
- default:
- jj_la1[16] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- jfrag.addChild(new LiteralFragment(c.image));
- label_8:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case JDBC_LIT:
- lit = jj_consume_token(JDBC_LIT);
- jfrag.addChild(new LiteralFragment(lit.image));
- break;
- case JDBC_PARAM:
- frag = parseReflect();
- jfrag.addChild(frag);
- break;
- default:
- jj_la1[17] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case JDBC_LIT:
- case JDBC_PARAM:
- ;
- break;
- default:
- jj_la1[18] = jj_gen;
- break label_8;
- }
- }
- jj_consume_token(JDBC_END);
- jfrag.addChild(new LiteralFragment("}"));
- {if (true) return jfrag;}
- throw new Error("Missing return statement in function");
- }
-
- public SqlGrammarTokenManager 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[19];
- static private int[] jj_la1_0;
- static private int[] jj_la1_1;
- static {
- jj_la1_0();
- jj_la1_1();
- }
- private static void jj_la1_0() {
- jj_la1_0 = new int[] {0xe,0xe,0x100000,0x100,0x2ffe00,0x100000,0x600,0x40000000,0x40000000,0x40000000,0x10000000,0x20000000,0x40000000,0xe00,0x0,0x0,0xff000,0x0,0x0,};
- }
- private static void jj_la1_1() {
- jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x28,0x0,0x6,0x6,};
- }
-
- public SqlGrammar(java.io.InputStream stream) {
- jj_input_stream = new SimpleCharStream(stream, 1, 1);
- token_source = new SqlGrammarTokenManager(jj_input_stream);
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 19; 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 < 19; i++) jj_la1[i] = -1;
- }
-
- public SqlGrammar(java.io.Reader stream) {
- jj_input_stream = new SimpleCharStream(stream, 1, 1);
- token_source = new SqlGrammarTokenManager(jj_input_stream);
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 19; 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 < 19; i++) jj_la1[i] = -1;
- }
-
- public SqlGrammar(SqlGrammarTokenManager tm) {
- token_source = tm;
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 19; i++) jj_la1[i] = -1;
- }
-
- public void ReInit(SqlGrammarTokenManager tm) {
- token_source = tm;
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 19; 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[39];
- for (int i = 0; i < 39; i++) {
- la1tokens[i] = false;
- }
- if (jj_kind >= 0) {
- la1tokens[jj_kind] = true;
- jj_kind = -1;
- }
- for (int i = 0; i < 19; 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 < 39; 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() {
- }
-
-}
+/* Generated By:JavaCC: Do not edit this line. SqlGrammar.java */
+package org.apache.beehive.controls.system.jdbc.parser;
+import java.io.StringReader;
+
+public class SqlGrammar implements SqlGrammarConstants {
+ private StringBuilder buffer = new StringBuilder();
+ public static void main(String[] args) throws Exception
+ {
+ SqlGrammar parser = new SqlGrammar(new StringReader(args[0]));
+ SqlStatement statement = parser.parse();
+ System.out.println(statement.toString());
+ }
+
+//
+// Parse methods
+//
+
+
+//
+// Main parse method
+//
+ final public SqlStatement parse() throws ParseException {
+ SqlStatement statement = new SqlStatement();
+ SqlFragment frag;
+ Token t, sq;
+ label_1:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case NON_EXPRESSION_TEXT:
+ case START_EXPRESSION:
+ case SQUOTE:
+ ;
+ break;
+ default:
+ jj_la1[0] = jj_gen;
+ break label_1;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case NON_EXPRESSION_TEXT:
+ t = jj_consume_token(NON_EXPRESSION_TEXT);
+ statement.addChild(new LiteralFragment(t.image));
+ break;
+ case SQUOTE:
+ sq = jj_consume_token(SQUOTE);
+ t = jj_consume_token(STRING_LITERAL);
+ statement.addChild(new LiteralFragment(sq.image + t.image));
+ break;
+ case START_EXPRESSION:
+ frag = parseExpression();
+ statement.addChild(frag);
+ break;
+ default:
+ jj_la1[1] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ jj_consume_token(0);
+ {if (true) return statement;}
+ throw new Error("Missing return statement in function");
+ }
+
+//
+// Parse an expression delimited by '{}'
+//
+ final public SqlFragment parseExpression() throws ParseException {
+ Token t, tt = null;
+ SqlFragment frag = null;
+ jj_consume_token(START_EXPRESSION);
+ label_2:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case WHITESPACE:
+ ;
+ break;
+ default:
+ jj_la1[2] = jj_gen;
+ break label_2;
+ }
+ jj_consume_token(WHITESPACE);
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SQL_ESCAPE:
+ case SQL_SUBST:
+ case SQL_FN:
+ frag = parseSqlEscape();
+ break;
+ case JDBC_CALL:
+ case JDBC_RET:
+ case JDBC_DATE:
+ case JDBC_TIME:
+ case JDBC_TIMESTAMP:
+ case JDBC_FUNCTION:
+ case JDBC_ESCAPE:
+ case JDBC_OUTERJOIN:
+ frag = parseJdbcEscape();
+ break;
+ case IDENTIFIER:
+ t = jj_consume_token(IDENTIFIER);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case REFLECT_SEP:
+ jj_consume_token(REFLECT_SEP);
+ tt = jj_consume_token(IDENTIFIER);
+ break;
+ default:
+ jj_la1[3] = jj_gen;
+ ;
+ }
+ jj_consume_token(END_EXPRESSION);
+ frag = new ReflectionFragment(t.image,(tt == null) ? null : tt.image);
+ break;
+ default:
+ jj_la1[4] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ label_3:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case WHITESPACE:
+ ;
+ break;
+ default:
+ jj_la1[5] = jj_gen;
+ break label_3;
+ }
+ jj_consume_token(WHITESPACE);
+ }
+ {if (true) return frag;}
+ throw new Error("Missing return statement in function");
+ }
+
+//
+// parse an sql: escape sequence
+//
+ final public SqlSubstitutionFragment parseSqlEscape() throws ParseException {
+ Token id1, id2;
+ Token t = null;
+ SqlSubstitutionFragment frag;
+ String func = null;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SQL_ESCAPE:
+ case SQL_SUBST:
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SQL_ESCAPE:
+ jj_consume_token(SQL_ESCAPE);
+ break;
+ case SQL_SUBST:
+ jj_consume_token(SQL_SUBST);
+ break;
+ default:
+ jj_la1[6] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ t = jj_consume_token(IDENTIFIER);
+ if (t != null) {
+ frag = new SqlSubstitutionFragment(new ReflectionFragment(t.image));
+ } else {
+ frag = new SqlSubstitutionFragment(new LiteralFragment(func));
+ }
+ break;
+ case SQL_FN:
+ jj_consume_token(SQL_FN);
+ jj_consume_token(SQL_FN_NM);
+ jj_consume_token(SQL_FN_PAREN);
+ label_4:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SQL_FN_WHITESPACE:
+ ;
+ break;
+ default:
+ jj_la1[7] = jj_gen;
+ break label_4;
+ }
+ jj_consume_token(SQL_FN_WHITESPACE);
+ }
+ id1 = jj_consume_token(SQL_FN_IDENTIFIER);
+ label_5:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SQL_FN_WHITESPACE:
+ ;
+ break;
+ default:
+ jj_la1[8] = jj_gen;
+ break label_5;
+ }
+ jj_consume_token(SQL_FN_WHITESPACE);
+ }
+ jj_consume_token(SQL_FN_COMMA);
+ label_6:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SQL_FN_WHITESPACE:
+ ;
+ break;
+ default:
+ jj_la1[9] = jj_gen;
+ break label_6;
+ }
+ jj_consume_token(SQL_FN_WHITESPACE);
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SQL_FN_PSTART:
+ t = jj_consume_token(SQL_FN_PSTART);
+ break;
+ default:
+ jj_la1[10] = jj_gen;
+ ;
+ }
+ id2 = jj_consume_token(SQL_FN_IDENTIFIER);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SQL_FN_PEND:
+ jj_consume_token(SQL_FN_PEND);
+ break;
+ default:
+ jj_la1[11] = jj_gen;
+ ;
+ }
+ label_7:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SQL_FN_WHITESPACE:
+ ;
+ break;
+ default:
+ jj_la1[12] = jj_gen;
+ break label_7;
+ }
+ jj_consume_token(SQL_FN_WHITESPACE);
+ }
+ jj_consume_token(SQL_FN_END);
+ if (t == null) {
+ frag = new SqlSubstitutionFragment(new LiteralFragment("(" + id1.image + " IN (" + id2.image + ")"));
+ } else {
+ frag = new SqlSubstitutionFragment(new LiteralFragment("(" + id1.image + " IN ("),
+ new ReflectionFragment(id2.image),
+ new LiteralFragment("))"));
+ }
+ break;
+ default:
+ jj_la1[13] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ jj_consume_token(END_EXPRESSION);
+ {if (true) return frag;}
+ throw new Error("Missing return statement in function");
+ }
+
+//
+// parse a param sub inside of a jdbc escape
+//
+ final public SqlFragment parseReflect() throws ParseException {
+ Token t, tt = null;
+ SqlFragment frag;
+ jj_consume_token(JDBC_PARAM);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case PARAM_IDENTIFIER:
+ t = jj_consume_token(PARAM_IDENTIFIER);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case PARAM_REFLECT_SEP:
+ jj_consume_token(PARAM_REFLECT_SEP);
+ tt = jj_consume_token(IDENTIFIER);
+ break;
+ default:
+ jj_la1[14] = jj_gen;
+ ;
+ }
+ frag = new ReflectionFragment(t.image, (tt == null) ? null : tt.image);
+ break;
+ case PARAM_LITERAL:
+ t = jj_consume_token(PARAM_LITERAL);
+ frag = new LiteralFragment(t.image);
+ break;
+ default:
+ jj_la1[15] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ jj_consume_token(PARAM_END);
+ {if (true) return frag;}
+ throw new Error("Missing return statement in function");
+ }
+
+//
+// parse a jdbc escape sequence
+//
+ final public JdbcFragment parseJdbcEscape() throws ParseException {
+ Token lit, c;
+ JdbcFragment jfrag = new JdbcFragment();
+ jfrag.addChild(new LiteralFragment("{"));
+ SqlFragment frag = null;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case JDBC_CALL:
+ c = jj_consume_token(JDBC_CALL);
+ break;
+ case JDBC_RET:
+ c = jj_consume_token(JDBC_RET);
+ break;
+ case JDBC_DATE:
+ c = jj_consume_token(JDBC_DATE);
+ break;
+ case JDBC_ESCAPE:
+ c = jj_consume_token(JDBC_ESCAPE);
+ break;
+ case JDBC_FUNCTION:
+ c = jj_consume_token(JDBC_FUNCTION);
+ break;
+ case JDBC_TIME:
+ c = jj_consume_token(JDBC_TIME);
+ break;
+ case JDBC_TIMESTAMP:
+ c = jj_consume_token(JDBC_TIMESTAMP);
+ break;
+ case JDBC_OUTERJOIN:
+ c = jj_consume_token(JDBC_OUTERJOIN);
+ break;
+ default:
+ jj_la1[16] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ jfrag.addChild(new LiteralFragment(c.image));
+ label_8:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case JDBC_LIT:
+ lit = jj_consume_token(JDBC_LIT);
+ jfrag.addChild(new LiteralFragment(lit.image));
+ break;
+ case JDBC_PARAM:
+ frag = parseReflect();
+ jfrag.addChild(frag);
+ break;
+ default:
+ jj_la1[17] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case JDBC_LIT:
+ case JDBC_PARAM:
+ ;
+ break;
+ default:
+ jj_la1[18] = jj_gen;
+ break label_8;
+ }
+ }
+ jj_consume_token(JDBC_END);
+ jfrag.addChild(new LiteralFragment("}"));
+ {if (true) return jfrag;}
+ throw new Error("Missing return statement in function");
+ }
+
+ public SqlGrammarTokenManager 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[19];
+ static private int[] jj_la1_0;
+ static private int[] jj_la1_1;
+ static {
+ jj_la1_0();
+ jj_la1_1();
+ }
+ private static void jj_la1_0() {
+ jj_la1_0 = new int[] {0xe,0xe,0x100000,0x100,0x2ffe00,0x100000,0x600,0x40000000,0x40000000,0x40000000,0x10000000,0x20000000,0x40000000,0xe00,0x0,0x0,0xff000,0x0,0x0,};
+ }
+ private static void jj_la1_1() {
+ jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x28,0x0,0x6,0x6,};
+ }
+
+ public SqlGrammar(java.io.InputStream stream) {
+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ token_source = new SqlGrammarTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 19; 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 < 19; i++) jj_la1[i] = -1;
+ }
+
+ public SqlGrammar(java.io.Reader stream) {
+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ token_source = new SqlGrammarTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 19; 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 < 19; i++) jj_la1[i] = -1;
+ }
+
+ public SqlGrammar(SqlGrammarTokenManager tm) {
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 19; i++) jj_la1[i] = -1;
+ }
+
+ public void ReInit(SqlGrammarTokenManager tm) {
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 19; 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[39];
+ for (int i = 0; i < 39; i++) {
+ la1tokens[i] = false;
+ }
+ if (jj_kind >= 0) {
+ la1tokens[jj_kind] = true;
+ jj_kind = -1;
+ }
+ for (int i = 0; i < 19; 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 < 39; 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() {
+ }
+
+}
Propchange: incubator/beehive/trunk/system-controls/src/jdbc/org/apache/beehive/controls/system/jdbc/parser/SqlGrammar.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/beehive/trunk/system-controls/src/jdbc/org/apache/beehive/controls/system/jdbc/parser/SqlGrammar.jj
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/system-controls/src/jdbc/org/apache/beehive/controls/system/jdbc/parser/SqlGrammar.jj?rev=190657&r1=190656&r2=190657&view=diff
==============================================================================
--- incubator/beehive/trunk/system-controls/src/jdbc/org/apache/beehive/controls/system/jdbc/parser/SqlGrammar.jj (original)
+++ incubator/beehive/trunk/system-controls/src/jdbc/org/apache/beehive/controls/system/jdbc/parser/SqlGrammar.jj Tue Jun 14 14:14:42 2005
@@ -1,314 +1,314 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * $Header:$
- */
-
-options {
- STATIC = false;
- UNICODE_INPUT = true;
- DEBUG_TOKEN_MANAGER = false;
- DEBUG_PARSER = false;
-}
-
-//
-// parser declarations
-//
-PARSER_BEGIN(SqlGrammar)
-
-package org.apache.beehive.controls.system.jdbc.parser;
-import java.io.StringReader;
-
-public class SqlGrammar
-{
- private StringBuilder buffer = new StringBuilder();
- public static void main(String[] args) throws Exception
- {
- SqlGrammar parser = new SqlGrammar(new StringReader(args[0]));
- SqlStatement statement = parser.parse();
- System.out.println(statement.toString());
- }
-}
-
-PARSER_END(SqlGrammar)
-
-//
-// token mgr decls
-//
-TOKEN_MGR_DECLS : { }
-
-//
-// default token mgr state -- just collect anything until a { or ' is read
-//
-<DEFAULT> TOKEN:
-{
- < NON_EXPRESSION_TEXT : (~["{","}","'"])+ >
- | < START_EXPRESSION : "{"> : IN_EXPRESSION
- | < SQUOTE : "'"> : IN_LITERAL
-}
-
-//
-// this token mgr state is used to skip over literal values which occur in non_expression_text,
-// they need to be skipped in this state since they may contain a '{}' which needs to be ignored.
-//
-<IN_LITERAL> TOKEN:
-{
- <STRING_LITERAL : (((~["'", "\\", "\n", "\r"])|<ECMA_ESCAPE_SEQUENCE>)* "'") > : DEFAULT
- | <#ECMA_ESCAPE_SEQUENCE: "\\" |
- (
- ["n", "t", "b", "r", "f", "\\", "\""] |
- ["0"-"7"] (["0"-"7"])? |
- ["0"-"3"] ["0"-"7"] ["0"-"7"] |
- ["x","X"] <HIT> <HIT> |
- ["u","U"] <HIT> <HIT> <HIT> <HIT>
- )
- >
- | <#HIT: ["0"-"9","a"-"f","A"-"F"] >
-}
-
-//
-// state for parse db control sql expressions, delimited by {}
-//
-<IN_EXPRESSION> TOKEN:
-{
- <END_EXPRESSION : "}" > { SwitchTo(DEFAULT); }
- | <REFLECT_SEP : "|">
- | <SQL_ESCAPE : "sql: ">
- | <SQL_SUBST : "sql:subst ">
- | <SQL_FN : "sql:fn "> : IN_SQLFN
- | <JDBC_CALL : "call "> : IN_JDBC
- | <JDBC_RET : "?= "|"?="|"? ="> : IN_JDBC
- | <JDBC_DATE : "d "> : IN_JDBC
- | <JDBC_TIME : "t "> : IN_JDBC
- | <JDBC_TIMESTAMP : "ts "> : IN_JDBC
- | <JDBC_FUNCTION : "fn "> : IN_JDBC
- | <JDBC_ESCAPE : "escape "> : IN_JDBC
- | <JDBC_OUTERJOIN : "oj "> : IN_JDBC
- | <WHITESPACE : " " | "\t" | "\r" | "\n">
- | <IDENTIFIER : (<LETTER>) (<LETTER>|<DIGIT>|".")* >
- | < #LETTER :
- [
- "\u0024",
- "\u0041"-"\u005a",
- "\u005f",
- "\u0061"-"\u007a",
- "\u00c0"-"\u00d6",
- "\u00d8"-"\u00f6",
- "\u00f8"-"\u00ff",
- "\u0100"-"\u1fff",
- "\u3040"-"\u318f",
- "\u3300"-"\u337f",
- "\u3400"-"\u3d2d",
- "\u4e00"-"\u9fff",
- "\uf900"-"\ufaff"
- ]
- >
- | < #DIGIT :
- [
- "\u0030"-"\u0039",
- "\u0660"-"\u0669",
- "\u06f0"-"\u06f9",
- "\u0966"-"\u096f",
- "\u09e6"-"\u09ef",
- "\u0a66"-"\u0a6f",
- "\u0ae6"-"\u0aef",
- "\u0b66"-"\u0b6f",
- "\u0be7"-"\u0bef",
- "\u0c66"-"\u0c6f",
- "\u0ce6"-"\u0cef",
- "\u0d66"-"\u0d6f",
- "\u0e50"-"\u0e59",
- "\u0ed0"-"\u0ed9",
- "\u1040"-"\u1049"
- ]
- >
-}
-
-//
-// special state for the sql:fn constuct
-//
-<IN_SQLFN> TOKEN:
-{
- <SQL_FN_END : ")" > : IN_EXPRESSION
- | <SQL_FN_NM : "in">
- | <SQL_FN_PAREN : "(">
- | <SQL_FN_COMMA : ",">
- | <SQL_FN_PSTART : <START_EXPRESSION>>
- | <SQL_FN_PEND : <END_EXPRESSION>>
- | <SQL_FN_WHITESPACE : <WHITESPACE>>
- | <SQL_FN_IDENTIFIER : <IDENTIFIER> >
-}
-
-<IN_JDBC> TOKEN:
-{
- <JDBC_END : <END_EXPRESSION> > { SwitchTo(DEFAULT); }
- | <JDBC_LIT : (~["{","}"])+ >
- | <JDBC_PARAM : <START_EXPRESSION> > : IN_PARAM
-}
-
-<IN_PARAM> TOKEN:
-{
- <PARAM_IDENTIFIER : <IDENTIFIER> >
- | <PARAM_REFLECT_SEP : <REFLECT_SEP> >
- | <PARAM_LITERAL : ("'" ((~["'", "\\", "\n", "\r"])|<ECMA_ESCAPE_SEQUENCE>)* "'") >
- | <PARAM_END : <END_EXPRESSION> > { SwitchTo(IN_JDBC); }
-}
-
-
-//
-// Parse methods
-//
-
-
-//
-// Main parse method
-//
-SqlStatement parse() :
-{
- SqlStatement statement = new SqlStatement();
- SqlFragment frag;
- Token t, sq;
-}
-{
- (
- (
- (t=<NON_EXPRESSION_TEXT> {statement.addChild(new LiteralFragment(t.image));})
- |
- (sq=<SQUOTE>t=<STRING_LITERAL> {statement.addChild(new LiteralFragment(sq.image + t.image));})
- |
- (frag=parseExpression() {statement.addChild(frag);})
- )
- )* <EOF>
-
- {
- return statement;
- }
-}
-
-//
-// Parse an expression delimited by '{}'
-//
-SqlFragment parseExpression() :
-{
- Token t, tt = null;
- SqlFragment frag = null;
-}
-{
- <START_EXPRESSION>(<WHITESPACE>)*
- (
- frag = parseSqlEscape()
- | frag = parseJdbcEscape()
- | (t=<IDENTIFIER> (<REFLECT_SEP>tt=<IDENTIFIER>)? <END_EXPRESSION> {frag = new ReflectionFragment(t.image,(tt == null) ? null : tt.image);})
- )
- (<WHITESPACE>)*
- //<END_EXPRESSION>
-
- {
- return frag;
- }
-}
-
-//
-// parse an sql: escape sequence
-//
-SqlSubstitutionFragment parseSqlEscape() :
-{
- Token id1, id2;
- Token t = null;
- SqlSubstitutionFragment frag;
- String func = null;
-}
-{
-(
- (
- (
- (<SQL_ESCAPE> | <SQL_SUBST>) t=<IDENTIFIER>)
- {
- if (t != null) {
- frag = new SqlSubstitutionFragment(new ReflectionFragment(t.image));
- } else {
- frag = new SqlSubstitutionFragment(new LiteralFragment(func));
- }
- }
- )
- |
- (
- (
- <SQL_FN> <SQL_FN_NM> <SQL_FN_PAREN> (<SQL_FN_WHITESPACE>)* id1=<SQL_FN_IDENTIFIER> (<SQL_FN_WHITESPACE>)*
- <SQL_FN_COMMA> (<SQL_FN_WHITESPACE>)* (t=<SQL_FN_PSTART>)? id2=<SQL_FN_IDENTIFIER> (<SQL_FN_PEND>)?
- (<SQL_FN_WHITESPACE>)* <SQL_FN_END>
- )
- {
- if (t == null) {
- frag = new SqlSubstitutionFragment(new LiteralFragment("(" + id1.image + " IN (" + id2.image + ")"));
- } else {
- frag = new SqlSubstitutionFragment(new LiteralFragment("(" + id1.image + " IN ("),
- new ReflectionFragment(id2.image),
- new LiteralFragment("))"));
- }
- }
- )
-) <END_EXPRESSION>
-
- { return frag; }
-}
-
-//
-// parse a param sub inside of a jdbc escape
-//
-SqlFragment parseReflect() :
-{
- Token t, tt = null;
- SqlFragment frag;
-}
-{
- <JDBC_PARAM>
- (((t=<PARAM_IDENTIFIER>)(<PARAM_REFLECT_SEP>tt=<IDENTIFIER>)?
- { frag = new ReflectionFragment(t.image, (tt == null) ? null : tt.image); })
-
- |
- ((t=<PARAM_LITERAL>)
- { frag = new LiteralFragment(t.image); }))
- <PARAM_END>
-
- {return frag;}
-}
-
-//
-// parse a jdbc escape sequence
-//
-JdbcFragment parseJdbcEscape() :
-{
- Token lit, c;
- JdbcFragment jfrag = new JdbcFragment();
- jfrag.addChild(new LiteralFragment("{"));
- SqlFragment frag = null;
-}
-
-{
- (c=<JDBC_CALL>|c=<JDBC_RET>|c=<JDBC_DATE>|c=<JDBC_ESCAPE>|c=<JDBC_FUNCTION>|c=<JDBC_TIME>|c=<JDBC_TIMESTAMP>|c=<JDBC_OUTERJOIN>)
- {jfrag.addChild(new LiteralFragment(c.image));}
- (
- (lit=<JDBC_LIT> {jfrag.addChild(new LiteralFragment(lit.image));}
- | (frag=parseReflect()) { jfrag.addChild(frag);})
- )+
- <JDBC_END>
-
- {
- jfrag.addChild(new LiteralFragment("}"));
- return jfrag;
- }
-}
-
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * $Header:$
+ */
+
+options {
+ STATIC = false;
+ UNICODE_INPUT = true;
+ DEBUG_TOKEN_MANAGER = false;
+ DEBUG_PARSER = false;
+}
+
+//
+// parser declarations
+//
+PARSER_BEGIN(SqlGrammar)
+
+package org.apache.beehive.controls.system.jdbc.parser;
+import java.io.StringReader;
+
+public class SqlGrammar
+{
+ private StringBuilder buffer = new StringBuilder();
+ public static void main(String[] args) throws Exception
+ {
+ SqlGrammar parser = new SqlGrammar(new StringReader(args[0]));
+ SqlStatement statement = parser.parse();
+ System.out.println(statement.toString());
+ }
+}
+
+PARSER_END(SqlGrammar)
+
+//
+// token mgr decls
+//
+TOKEN_MGR_DECLS : { }
+
+//
+// default token mgr state -- just collect anything until a { or ' is read
+//
+<DEFAULT> TOKEN:
+{
+ < NON_EXPRESSION_TEXT : (~["{","}","'"])+ >
+ | < START_EXPRESSION : "{"> : IN_EXPRESSION
+ | < SQUOTE : "'"> : IN_LITERAL
+}
+
+//
+// this token mgr state is used to skip over literal values which occur in non_expression_text,
+// they need to be skipped in this state since they may contain a '{}' which needs to be ignored.
+//
+<IN_LITERAL> TOKEN:
+{
+ <STRING_LITERAL : (((~["'", "\\", "\n", "\r"])|<ECMA_ESCAPE_SEQUENCE>)* "'") > : DEFAULT
+ | <#ECMA_ESCAPE_SEQUENCE: "\\" |
+ (
+ ["n", "t", "b", "r", "f", "\\", "\""] |
+ ["0"-"7"] (["0"-"7"])? |
+ ["0"-"3"] ["0"-"7"] ["0"-"7"] |
+ ["x","X"] <HIT> <HIT> |
+ ["u","U"] <HIT> <HIT> <HIT> <HIT>
+ )
+ >
+ | <#HIT: ["0"-"9","a"-"f","A"-"F"] >
+}
+
+//
+// state for parse db control sql expressions, delimited by {}
+//
+<IN_EXPRESSION> TOKEN:
+{
+ <END_EXPRESSION : "}" > { SwitchTo(DEFAULT); }
+ | <REFLECT_SEP : "|">
+ | <SQL_ESCAPE : "sql: ">
+ | <SQL_SUBST : "sql:subst ">
+ | <SQL_FN : "sql:fn "> : IN_SQLFN
+ | <JDBC_CALL : "call "> : IN_JDBC
+ | <JDBC_RET : "?= "|"?="|"? ="> : IN_JDBC
+ | <JDBC_DATE : "d "> : IN_JDBC
+ | <JDBC_TIME : "t "> : IN_JDBC
+ | <JDBC_TIMESTAMP : "ts "> : IN_JDBC
+ | <JDBC_FUNCTION : "fn "> : IN_JDBC
+ | <JDBC_ESCAPE : "escape "> : IN_JDBC
+ | <JDBC_OUTERJOIN : "oj "> : IN_JDBC
+ | <WHITESPACE : " " | "\t" | "\r" | "\n">
+ | <IDENTIFIER : (<LETTER>) (<LETTER>|<DIGIT>|".")* >
+ | < #LETTER :
+ [
+ "\u0024",
+ "\u0041"-"\u005a",
+ "\u005f",
+ "\u0061"-"\u007a",
+ "\u00c0"-"\u00d6",
+ "\u00d8"-"\u00f6",
+ "\u00f8"-"\u00ff",
+ "\u0100"-"\u1fff",
+ "\u3040"-"\u318f",
+ "\u3300"-"\u337f",
+ "\u3400"-"\u3d2d",
+ "\u4e00"-"\u9fff",
+ "\uf900"-"\ufaff"
+ ]
+ >
+ | < #DIGIT :
+ [
+ "\u0030"-"\u0039",
+ "\u0660"-"\u0669",
+ "\u06f0"-"\u06f9",
+ "\u0966"-"\u096f",
+ "\u09e6"-"\u09ef",
+ "\u0a66"-"\u0a6f",
+ "\u0ae6"-"\u0aef",
+ "\u0b66"-"\u0b6f",
+ "\u0be7"-"\u0bef",
+ "\u0c66"-"\u0c6f",
+ "\u0ce6"-"\u0cef",
+ "\u0d66"-"\u0d6f",
+ "\u0e50"-"\u0e59",
+ "\u0ed0"-"\u0ed9",
+ "\u1040"-"\u1049"
+ ]
+ >
+}
+
+//
+// special state for the sql:fn constuct
+//
+<IN_SQLFN> TOKEN:
+{
+ <SQL_FN_END : ")" > : IN_EXPRESSION
+ | <SQL_FN_NM : "in">
+ | <SQL_FN_PAREN : "(">
+ | <SQL_FN_COMMA : ",">
+ | <SQL_FN_PSTART : <START_EXPRESSION>>
+ | <SQL_FN_PEND : <END_EXPRESSION>>
+ | <SQL_FN_WHITESPACE : <WHITESPACE>>
+ | <SQL_FN_IDENTIFIER : <IDENTIFIER> >
+}
+
+<IN_JDBC> TOKEN:
+{
+ <JDBC_END : <END_EXPRESSION> > { SwitchTo(DEFAULT); }
+ | <JDBC_LIT : (~["{","}"])+ >
+ | <JDBC_PARAM : <START_EXPRESSION> > : IN_PARAM
+}
+
+<IN_PARAM> TOKEN:
+{
+ <PARAM_IDENTIFIER : <IDENTIFIER> >
+ | <PARAM_REFLECT_SEP : <REFLECT_SEP> >
+ | <PARAM_LITERAL : ("'" ((~["'", "\\", "\n", "\r"])|<ECMA_ESCAPE_SEQUENCE>)* "'") >
+ | <PARAM_END : <END_EXPRESSION> > { SwitchTo(IN_JDBC); }
+}
+
+
+//
+// Parse methods
+//
+
+
+//
+// Main parse method
+//
+SqlStatement parse() :
+{
+ SqlStatement statement = new SqlStatement();
+ SqlFragment frag;
+ Token t, sq;
+}
+{
+ (
+ (
+ (t=<NON_EXPRESSION_TEXT> {statement.addChild(new LiteralFragment(t.image));})
+ |
+ (sq=<SQUOTE>t=<STRING_LITERAL> {statement.addChild(new LiteralFragment(sq.image + t.image));})
+ |
+ (frag=parseExpression() {statement.addChild(frag);})
+ )
+ )* <EOF>
+
+ {
+ return statement;
+ }
+}
+
+//
+// Parse an expression delimited by '{}'
+//
+SqlFragment parseExpression() :
+{
+ Token t, tt = null;
+ SqlFragment frag = null;
+}
+{
+ <START_EXPRESSION>(<WHITESPACE>)*
+ (
+ frag = parseSqlEscape()
+ | frag = parseJdbcEscape()
+ | (t=<IDENTIFIER> (<REFLECT_SEP>tt=<IDENTIFIER>)? <END_EXPRESSION> {frag = new ReflectionFragment(t.image,(tt == null) ? null : tt.image);})
+ )
+ (<WHITESPACE>)*
+ //<END_EXPRESSION>
+
+ {
+ return frag;
+ }
+}
+
+//
+// parse an sql: escape sequence
+//
+SqlSubstitutionFragment parseSqlEscape() :
+{
+ Token id1, id2;
+ Token t = null;
+ SqlSubstitutionFragment frag;
+ String func = null;
+}
+{
+(
+ (
+ (
+ (<SQL_ESCAPE> | <SQL_SUBST>) t=<IDENTIFIER>)
+ {
+ if (t != null) {
+ frag = new SqlSubstitutionFragment(new ReflectionFragment(t.image));
+ } else {
+ frag = new SqlSubstitutionFragment(new LiteralFragment(func));
+ }
+ }
+ )
+ |
+ (
+ (
+ <SQL_FN> <SQL_FN_NM> <SQL_FN_PAREN> (<SQL_FN_WHITESPACE>)* id1=<SQL_FN_IDENTIFIER> (<SQL_FN_WHITESPACE>)*
+ <SQL_FN_COMMA> (<SQL_FN_WHITESPACE>)* (t=<SQL_FN_PSTART>)? id2=<SQL_FN_IDENTIFIER> (<SQL_FN_PEND>)?
+ (<SQL_FN_WHITESPACE>)* <SQL_FN_END>
+ )
+ {
+ if (t == null) {
+ frag = new SqlSubstitutionFragment(new LiteralFragment("(" + id1.image + " IN (" + id2.image + ")"));
+ } else {
+ frag = new SqlSubstitutionFragment(new LiteralFragment("(" + id1.image + " IN ("),
+ new ReflectionFragment(id2.image),
+ new LiteralFragment("))"));
+ }
+ }
+ )
+) <END_EXPRESSION>
+
+ { return frag; }
+}
+
+//
+// parse a param sub inside of a jdbc escape
+//
+SqlFragment parseReflect() :
+{
+ Token t, tt = null;
+ SqlFragment frag;
+}
+{
+ <JDBC_PARAM>
+ (((t=<PARAM_IDENTIFIER>)(<PARAM_REFLECT_SEP>tt=<IDENTIFIER>)?
+ { frag = new ReflectionFragment(t.image, (tt == null) ? null : tt.image); })
+
+ |
+ ((t=<PARAM_LITERAL>)
+ { frag = new LiteralFragment(t.image); }))
+ <PARAM_END>
+
+ {return frag;}
+}
+
+//
+// parse a jdbc escape sequence
+//
+JdbcFragment parseJdbcEscape() :
+{
+ Token lit, c;
+ JdbcFragment jfrag = new JdbcFragment();
+ jfrag.addChild(new LiteralFragment("{"));
+ SqlFragment frag = null;
+}
+
+{
+ (c=<JDBC_CALL>|c=<JDBC_RET>|c=<JDBC_DATE>|c=<JDBC_ESCAPE>|c=<JDBC_FUNCTION>|c=<JDBC_TIME>|c=<JDBC_TIMESTAMP>|c=<JDBC_OUTERJOIN>)
+ {jfrag.addChild(new LiteralFragment(c.image));}
+ (
+ (lit=<JDBC_LIT> {jfrag.addChild(new LiteralFragment(lit.image));}
+ | (frag=parseReflect()) { jfrag.addChild(frag);})
+ )+
+ <JDBC_END>
+
+ {
+ jfrag.addChild(new LiteralFragment("}"));
+ return jfrag;
+ }
+}
+
Propchange: incubator/beehive/trunk/system-controls/src/jdbc/org/apache/beehive/controls/system/jdbc/parser/SqlGrammar.jj
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/beehive/trunk/system-controls/src/jdbc/org/apache/beehive/controls/system/jdbc/parser/SqlGrammarConstants.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/system-controls/src/jdbc/org/apache/beehive/controls/system/jdbc/parser/SqlGrammarConstants.java?rev=190657&r1=190656&r2=190657&view=diff
==============================================================================
--- incubator/beehive/trunk/system-controls/src/jdbc/org/apache/beehive/controls/system/jdbc/parser/SqlGrammarConstants.java (original)
+++ incubator/beehive/trunk/system-controls/src/jdbc/org/apache/beehive/controls/system/jdbc/parser/SqlGrammarConstants.java Tue Jun 14 14:14:42 2005
@@ -1,95 +1,95 @@
-/* Generated By:JavaCC: Do not edit this line. SqlGrammarConstants.java */
-package org.apache.beehive.controls.system.jdbc.parser;
-
-public interface SqlGrammarConstants {
-
- int EOF = 0;
- int NON_EXPRESSION_TEXT = 1;
- int START_EXPRESSION = 2;
- int SQUOTE = 3;
- int STRING_LITERAL = 4;
- int ECMA_ESCAPE_SEQUENCE = 5;
- int HIT = 6;
- int END_EXPRESSION = 7;
- int REFLECT_SEP = 8;
- int SQL_ESCAPE = 9;
- int SQL_SUBST = 10;
- int SQL_FN = 11;
- int JDBC_CALL = 12;
- int JDBC_RET = 13;
- int JDBC_DATE = 14;
- int JDBC_TIME = 15;
- int JDBC_TIMESTAMP = 16;
- int JDBC_FUNCTION = 17;
- int JDBC_ESCAPE = 18;
- int JDBC_OUTERJOIN = 19;
- int WHITESPACE = 20;
- int IDENTIFIER = 21;
- int LETTER = 22;
- int DIGIT = 23;
- int SQL_FN_END = 24;
- int SQL_FN_NM = 25;
- int SQL_FN_PAREN = 26;
- int SQL_FN_COMMA = 27;
- int SQL_FN_PSTART = 28;
- int SQL_FN_PEND = 29;
- int SQL_FN_WHITESPACE = 30;
- int SQL_FN_IDENTIFIER = 31;
- int JDBC_END = 32;
- int JDBC_LIT = 33;
- int JDBC_PARAM = 34;
- int PARAM_IDENTIFIER = 35;
- int PARAM_REFLECT_SEP = 36;
- int PARAM_LITERAL = 37;
- int PARAM_END = 38;
-
- int DEFAULT = 0;
- int IN_LITERAL = 1;
- int IN_EXPRESSION = 2;
- int IN_SQLFN = 3;
- int IN_JDBC = 4;
- int IN_PARAM = 5;
-
- String[] tokenImage = {
- "<EOF>",
- "<NON_EXPRESSION_TEXT>",
- "\"{\"",
- "\"\\\'\"",
- "<STRING_LITERAL>",
- "<ECMA_ESCAPE_SEQUENCE>",
- "<HIT>",
- "\"}\"",
- "\"|\"",
- "\"sql: \"",
- "\"sql:subst \"",
- "\"sql:fn \"",
- "\"call \"",
- "<JDBC_RET>",
- "\"d \"",
- "\"t \"",
- "\"ts \"",
- "\"fn \"",
- "\"escape \"",
- "\"oj \"",
- "<WHITESPACE>",
- "<IDENTIFIER>",
- "<LETTER>",
- "<DIGIT>",
- "\")\"",
- "\"in\"",
- "\"(\"",
- "\",\"",
- "<SQL_FN_PSTART>",
- "<SQL_FN_PEND>",
- "<SQL_FN_WHITESPACE>",
- "<SQL_FN_IDENTIFIER>",
- "<JDBC_END>",
- "<JDBC_LIT>",
- "<JDBC_PARAM>",
- "<PARAM_IDENTIFIER>",
- "<PARAM_REFLECT_SEP>",
- "<PARAM_LITERAL>",
- "<PARAM_END>",
- };
-
-}
+/* Generated By:JavaCC: Do not edit this line. SqlGrammarConstants.java */
+package org.apache.beehive.controls.system.jdbc.parser;
+
+public interface SqlGrammarConstants {
+
+ int EOF = 0;
+ int NON_EXPRESSION_TEXT = 1;
+ int START_EXPRESSION = 2;
+ int SQUOTE = 3;
+ int STRING_LITERAL = 4;
+ int ECMA_ESCAPE_SEQUENCE = 5;
+ int HIT = 6;
+ int END_EXPRESSION = 7;
+ int REFLECT_SEP = 8;
+ int SQL_ESCAPE = 9;
+ int SQL_SUBST = 10;
+ int SQL_FN = 11;
+ int JDBC_CALL = 12;
+ int JDBC_RET = 13;
+ int JDBC_DATE = 14;
+ int JDBC_TIME = 15;
+ int JDBC_TIMESTAMP = 16;
+ int JDBC_FUNCTION = 17;
+ int JDBC_ESCAPE = 18;
+ int JDBC_OUTERJOIN = 19;
+ int WHITESPACE = 20;
+ int IDENTIFIER = 21;
+ int LETTER = 22;
+ int DIGIT = 23;
+ int SQL_FN_END = 24;
+ int SQL_FN_NM = 25;
+ int SQL_FN_PAREN = 26;
+ int SQL_FN_COMMA = 27;
+ int SQL_FN_PSTART = 28;
+ int SQL_FN_PEND = 29;
+ int SQL_FN_WHITESPACE = 30;
+ int SQL_FN_IDENTIFIER = 31;
+ int JDBC_END = 32;
+ int JDBC_LIT = 33;
+ int JDBC_PARAM = 34;
+ int PARAM_IDENTIFIER = 35;
+ int PARAM_REFLECT_SEP = 36;
+ int PARAM_LITERAL = 37;
+ int PARAM_END = 38;
+
+ int DEFAULT = 0;
+ int IN_LITERAL = 1;
+ int IN_EXPRESSION = 2;
+ int IN_SQLFN = 3;
+ int IN_JDBC = 4;
+ int IN_PARAM = 5;
+
+ String[] tokenImage = {
+ "<EOF>",
+ "<NON_EXPRESSION_TEXT>",
+ "\"{\"",
+ "\"\\\'\"",
+ "<STRING_LITERAL>",
+ "<ECMA_ESCAPE_SEQUENCE>",
+ "<HIT>",
+ "\"}\"",
+ "\"|\"",
+ "\"sql: \"",
+ "\"sql:subst \"",
+ "\"sql:fn \"",
+ "\"call \"",
+ "<JDBC_RET>",
+ "\"d \"",
+ "\"t \"",
+ "\"ts \"",
+ "\"fn \"",
+ "\"escape \"",
+ "\"oj \"",
+ "<WHITESPACE>",
+ "<IDENTIFIER>",
+ "<LETTER>",
+ "<DIGIT>",
+ "\")\"",
+ "\"in\"",
+ "\"(\"",
+ "\",\"",
+ "<SQL_FN_PSTART>",
+ "<SQL_FN_PEND>",
+ "<SQL_FN_WHITESPACE>",
+ "<SQL_FN_IDENTIFIER>",
+ "<JDBC_END>",
+ "<JDBC_LIT>",
+ "<JDBC_PARAM>",
+ "<PARAM_IDENTIFIER>",
+ "<PARAM_REFLECT_SEP>",
+ "<PARAM_LITERAL>",
+ "<PARAM_END>",
+ };
+
+}
Propchange: incubator/beehive/trunk/system-controls/src/jdbc/org/apache/beehive/controls/system/jdbc/parser/SqlGrammarConstants.java
------------------------------------------------------------------------------
svn:eol-style = native