All Downloads are FREE. Search and download functionalities are using the official Maven repository.

mq5.0-source.main.mq-broker.broker-core.src.main.java.com.sun.messaging.jmq.jmsselector.SQLParser Maven / Gradle / Ivy

/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 2000-2012 Oracle and/or its affiliates. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common Development
 * and Distribution License("CDDL") (collectively, the "License").  You
 * may not use this file except in compliance with the License.  You can
 * obtain a copy of the License at
 * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
 * or packager/legal/LICENSE.txt.  See the License for the specific
 * language governing permissions and limitations under the License.
 *
 * When distributing the software, include this License Header Notice in each
 * file and include the License file at packager/legal/LICENSE.txt.
 *
 * GPL Classpath Exception:
 * Oracle designates this particular file as subject to the "Classpath"
 * exception as provided by Oracle in the GPL Version 2 section of the License
 * file that accompanied this code.
 *
 * Modifications:
 * If applicable, add the following below the License Header, with the fields
 * enclosed by brackets [] replaced by your own identifying information:
 * "Portions Copyright [year] [name of copyright owner]"
 *
 * Contributor(s):
 * If you wish your version of this file to be governed by only the CDDL or
 * only the GPL Version 2, indicate your decision by adding "[Contributor]
 * elects to include this software in this distribution under the [CDDL or GPL
 * Version 2] license."  If you don't indicate a single choice of license, a
 * recipient has the option to distribute your version of this file under
 * either the CDDL, the GPL Version 2 or to extend the choice of license to
 * its licensees as provided above.  However, if you add GPL Version 2 code
 * and therefore, elected the GPL Version 2 license, then the option applies
 * only if the new code is made subject to such option by the copyright
 * holder.
 */

/*
 * @(#)SQLParser.java	1.9 06/28/07
 */ 

package com.sun.messaging.jmq.jmsselector;

import java.io.*;
import java.util.*;

/**
 * Subset of SQL-92 used by JMS message selectors. 
 *
 * 

* SQL grammar contributed by [email protected] to the JAVACC web site */ public class SQLParser implements SQLParserConstants { Hashtable msg = null; JMSSelector selector; PropertyValueComparator comparator = PropertyValueComparator.getInstance(); public SQLParser(JMSSelector selector, java.io.Reader stream) { this(stream); this.selector = selector; } public void setMessageHeader(Hashtable msg) { this.msg = msg; } /** * */ public String getJMSDeliveryModeAsString(Hashtable msg) { //int deliveryMode = Message.DEFAULT_DELIVERY_MODE; int deliveryMode = 2; //static in Message //try { //deliveryMode = ((Integer)msg.get("JMSDeliveryMode")).intValue(); deliveryMode = selector.getJMSDeliveryMode(); //} catch (Exception e) { //deliveryMode will be Message.DEFAULT_DELIVERY_MODE //} String strDeliveryMode = ""; switch (deliveryMode) { //case javax.jms.DeliveryMode.PERSISTENT: case 2: strDeliveryMode = "PERSISTENT"; break; //case javax.jms.DeliveryMode.NON_PERSISTENT: case 1: strDeliveryMode = "NON_PERSISTENT"; break; default: //Set PERSISTENT DEFAULT strDeliveryMode = "PERSISTENT"; //throw new JMSException("Invalid message delivery mode " + deliveryMode); } return strDeliveryMode; } /** * Return true iff 'name' might be a JMS Message Header. */ boolean mightBeMessageHeader(String name) { try { return (name.startsWith("JMS") && name.charAt(3) != 'X'); // Handle boundary case that colName is just "JMS". } catch (IndexOutOfBoundsException ex) { // Handle boundary case that colName is just "JMS". } return false; } boolean messageHeaderNotValidInSelector(String name) { return mightBeMessageHeader(name) && (name.equals("JMSDestination") || name.equals("JMSExpiration") || name.equals("JMSRedelivered") || name.equals("JMSReplyTo")); } /******************************************************************* * The SQL-92 grammar starts here *******************************************************************/ final public boolean match(Hashtable msg) throws ParseException, NullMessageHeaderException { boolean matchResult = false; Object res = null; if (msg == null) {if (true) throw new NullMessageHeaderException();} else this.msg = msg; res = SQLOrExpr(); if (res != null) { if (! (res instanceof java.lang.Boolean)) { {if (true) throw new ParseException("Selector must evaluate to a java.lang.Boolean. Instead evaluated to a " + res.getClass().getName());} } matchResult = ((Boolean)res).booleanValue(); } {if (true) return matchResult;} throw new Error("Missing return statement in function"); } final public Object SQLOrExpr() throws ParseException { Object res1=null; Object res2=null; res1 = SQLAndExpr(); label_1: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case OR: ; break; default: jj_la1[0] = jj_gen; break label_1; } jj_consume_token(OR); res2 = SQLAndExpr(); if ((res1 != null && !(res1 instanceof java.lang.Boolean)) || (res2 != null && !(res2 instanceof java.lang.Boolean))) { {if (true) throw new ParseLogicalOperandException("OR");} } if (res1 != null && res2 != null) { res1 = new Boolean(((Boolean)res1).booleanValue() || ((Boolean)res2).booleanValue()); } else if (res1 == null && res2 == null) { // Unknown || Unknown = Unknown res1 = null; } else { //One of the OR operands is unknown Boolean oneKnownValue = (Boolean)(res1 == null ? res2 : res1); if (oneKnownValue.booleanValue()) { //True || Unknown = True res1 = oneKnownValue; } else { //False || Unknown = Unknown res1 = null; } } } {if (true) return (res1);} throw new Error("Missing return statement in function"); } final public Object SQLAndExpr() throws ParseException { Object res1=null; Object res2=null; res1 = SQLNotExpr(); label_2: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case AND: ; break; default: jj_la1[1] = jj_gen; break label_2; } jj_consume_token(AND); res2 = SQLNotExpr(); if ((res1 != null && !(res1 instanceof java.lang.Boolean)) || (res2 != null && !(res2 instanceof java.lang.Boolean))) { //AND operator requires java.lang.Boolean for opearnds {if (true) throw new ParseLogicalOperandException("AND");} } if (res1 != null && res2 != null) { res1 = new Boolean(((Boolean)res1).booleanValue() && ((Boolean)res2).booleanValue()); } else if (res1 == null && res2 == null) { //Unknown && Unknown = Unknown res1 = null; } else { //One of the OR operands is unknown Boolean oneKnownValue = (Boolean)(res1 == null ? res2 : res1); if (oneKnownValue.booleanValue()) { //True && Unknown = Unknown res1 = null; } else { //False && Unknown = False res1 = oneKnownValue; } } } {if (true) return (res1);} throw new Error("Missing return statement in function"); } final public Object SQLNotExpr() throws ParseException { boolean isNot=false; Object res = null; Object obj = null; if (jj_2_1(2)) { jj_consume_token(NOT); isNot = true; } else { ; } res = SQLCompareExpr(); if (isNot) { if (res == null) { //NOT unknown is unknown {if (true) return res;} } else { if (!(res instanceof java.lang.Boolean)) { //The NOT operator requires a java.lang.Boolean for its operand {if (true) throw new ParseLogicalOperandException("NOT");} } } res = new Boolean(! (((Boolean)res).booleanValue())); } {if (true) return res;} throw new Error("Missing return statement in function"); } final public Object SQLCompareExpr() throws ParseException { Object res = null; if (jj_2_2(2)) { res = SQLIsClause(); } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case STRING_LITERAL: case BOOLEAN_LITERAL: case ID: case OPENPAREN: case PLUS: case MINUS: res = SQLSumExpr(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BETWEEN: case IN: case LIKE: case NOT: case LESS: case LESSEQUAL: case GREATER: case GREATEREQUAL: case EQUAL: case NOTEQUAL: res = SQLCompareExprRight(res); break; default: jj_la1[2] = jj_gen; ; } break; default: jj_la1[3] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } {if (true) return res;} throw new Error("Missing return statement in function"); } final public Boolean SQLCompareExprRight(Object obj1) throws ParseException { Boolean res = null; Object obj2 = null; if (obj1 == null) { // return null; //Comparisons with unknowns yield unknown } if (jj_2_3(2)) { res = SQLLikeClause(obj1); } else if (jj_2_4(4)) { res = SQLInClause(obj1); } else if (jj_2_5(2)) { res = SQLBetweenClause(obj1); } else if (jj_2_6(2)) { jj_consume_token(EQUAL); obj2 = SQLSumExpr(); if (obj1 == null) { {if (true) return null;} } res = new Boolean((comparator.compare(obj1, obj2) == 0)); } else if (jj_2_7(2)) { jj_consume_token(NOTEQUAL); obj2 = SQLSumExpr(); if (obj1 == null) { {if (true) return null;} } res = new Boolean((comparator.compare(obj1, obj2) != 0)); } else if (jj_2_8(2)) { jj_consume_token(GREATER); obj2 = SQLSumExpr(); if ((obj1 instanceof String) || (obj2 instanceof String) || (obj1 instanceof Boolean) || (obj2 instanceof Boolean) ) { // > Operator cannot be used with String or Boolean operands {if (true) throw new ParseComparisonOperandException(">");} } if (obj1 == null) { {if (true) return null;} } res = new Boolean((comparator.compare(obj1, obj2) > 0)); } else if (jj_2_9(2)) { jj_consume_token(GREATEREQUAL); obj2 = SQLSumExpr(); if ((obj1 instanceof String) || (obj2 instanceof String) || (obj1 instanceof Boolean) || (obj2 instanceof Boolean) ) { // >= Operator cannot be used with String or Boolean operands {if (true) throw new ParseComparisonOperandException(">=");} } if (obj1 == null) { {if (true) return null;} } res = new Boolean((comparator.compare(obj1, obj2) >= 0)); } else if (jj_2_10(2)) { jj_consume_token(LESS); obj2 = SQLSumExpr(); if ((obj1 instanceof String) || (obj2 instanceof String) || (obj1 instanceof Boolean) || (obj2 instanceof Boolean) ) { // < Operator cannot be used with String or Boolean operands {if (true) throw new ParseComparisonOperandException("<");} } if (obj1 == null) { {if (true) return null;} } //Need to handle the case where comparator may return unknown as a negative value int i = comparator.compare(obj1, obj2); if (i != PropertyValueComparator.UNKNOWN) { res = new Boolean(i < 0); } } else if (jj_2_11(2)) { jj_consume_token(LESSEQUAL); obj2 = SQLSumExpr(); if ((obj1 instanceof String) || (obj2 instanceof String) || (obj1 instanceof Boolean) || (obj2 instanceof Boolean) ) { // <= Operator cannot be used with String or Boolean operands {if (true) throw new ParseComparisonOperandException("<=");} } if (obj1 == null) { {if (true) return null;} } //Need to handle the case where comparator may return unknown as a negative value int i = comparator.compare(obj1, obj2); if (i != PropertyValueComparator.UNKNOWN) { res = new Boolean(i <= 0); } } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return res;} throw new Error("Missing return statement in function"); } final public Object SQLSumExpr() throws ParseException { Object res1 = null; Object res2 = null; NumericValue num1 = null; NumericValue num2 = null; boolean doAdd = true; res1 = SQLProductExpr(); label_3: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PLUS: case MINUS: ; break; default: jj_la1[4] = jj_gen; break label_3; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PLUS: jj_consume_token(PLUS); doAdd = true; break; case MINUS: jj_consume_token(MINUS); doAdd = false; break; default: jj_la1[5] = jj_gen; jj_consume_token(-1); throw new ParseException(); } res2 = SQLProductExpr(); num1 = new NumericValue(res1); num2 = new NumericValue(res2); if (doAdd) { res1 = num1.add(num2); //System.err.println(num1 + "+" + num2 + " = " + res1); } else { res1 = num1.subtract(num2); //System.err.println(num1 + "-" + num2 + " = " + res1); } } {if (true) return res1;} throw new Error("Missing return statement in function"); } final public Object SQLProductExpr() throws ParseException { Object res1 = null; Object res2 = null; NumericValue num1 = null; NumericValue num2 = null; boolean doMultiply = true; res1 = SQLUnaryExpr(); label_4: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ASTERISK: case SLASH: ; break; default: jj_la1[6] = jj_gen; break label_4; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ASTERISK: jj_consume_token(ASTERISK); doMultiply = true; break; case SLASH: jj_consume_token(SLASH); doMultiply = false; break; default: jj_la1[7] = jj_gen; jj_consume_token(-1); throw new ParseException(); } res2 = SQLUnaryExpr(); num1 = new NumericValue(res1); num2 = new NumericValue(res2); if (doMultiply) { res1 = num1.multiply(num2); //System.err.println(num1 + "*" + num2 + " = " + res1); } else { res1 = num1.divide(num2); //System.err.println(num1 + "/" + num2 + " = " + res1); } } {if (true) return res1;} throw new Error("Missing return statement in function"); } final public Object SQLUnaryExpr() throws ParseException { Object res1 = null; NumericValue num1 = null; boolean negate = false; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PLUS: case MINUS: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PLUS: jj_consume_token(PLUS); break; case MINUS: jj_consume_token(MINUS); negate = true; break; default: jj_la1[8] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: jj_la1[9] = jj_gen; ; } res1 = SQLTerm(); if (negate) { num1 = new NumericValue(res1); res1 = num1.negate(); } {if (true) return res1;} throw new Error("Missing return statement in function"); } final public String SQLColRef() throws ParseException { Token x; String colName = new String(""); x = jj_consume_token(ID); colName = x.image; //Prevent JMS Message headers that are not allowed to be used if (messageHeaderNotValidInSelector(colName)) { //Cannot use JMS property 'colName' in a selector {if (true) throw new ParseInvalidJMSPropertyInSelectorException(colName);} } {if (true) return colName;} throw new Error("Missing return statement in function"); } final public Object SQLTerm() throws ParseException { String colName; Object res=null; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case OPENPAREN: jj_consume_token(OPENPAREN); res = SQLOrExpr(); jj_consume_token(CLOSEPAREN); {if (true) return res;} break; case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case STRING_LITERAL: case BOOLEAN_LITERAL: res = SQLLiteral(); {if (true) return res;} break; case ID: colName = SQLColRef(); try { // Specialized processing needed for JMS Message Headers. boolean mightBeMsgHeader = mightBeMessageHeader(colName); if (mightBeMsgHeader && colName.equals("JMSDeliveryMode")) { res = getJMSDeliveryModeAsString(msg); } else if (mightBeMsgHeader && colName.equals("JMSType")) { //res = (String)msg.get("JMSType"); res = selector.getJMSType(); if (res == null) { res = new String(""); } } else if (mightBeMsgHeader && colName.equals("JMSMessageID")) { //res = (String)msg.get("JMSMessageID"); res = selector.getJMSMessageID(); if (res == null) { res = new String(""); } } else if (mightBeMsgHeader && colName.equals("JMSPriority")) { //res = (Integer)(msg.get("JMSPriority")); //will be promoted to Long below res = new Integer(selector.getJMSPriority()); //will be promoted to Long below } else if (mightBeMsgHeader && colName.equals("JMSTimestamp")) { //res = (Long)(msg.get("JMSTimestamp")); res = new Long(selector.getJMSTimestamp()); } else if (mightBeMsgHeader && colName.equals("JMSCorrelationID")) { //res = (String)msg.get("JMSCorrelationID"); res = selector.getJMSCorrelationID(); if (res == null) { res = new String(""); } } else { //Process colName as a plain property. res = msg.get(colName); //For Numbers, only deal with Long and Double. Promote as needed if ((res instanceof java.lang.Byte) || (res instanceof java.lang.Short) || (res instanceof java.lang.Integer)) { res = new Long(((Number)res).longValue()); } else if (res instanceof java.lang.Float) { res = new Double(((Number)res).doubleValue()); } } } catch (Exception e) { e.printStackTrace(); } {if (true) return res;} break; default: jj_la1[10] = jj_gen; jj_consume_token(-1); throw new ParseException(); } throw new Error("Missing return statement in function"); } final public Object SQLLiteral() throws ParseException { Token x=null; Object obj=null; try { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case STRING_LITERAL: x = jj_consume_token(STRING_LITERAL); //Strip leading and trailing quotes //obj = x.image.substring(1, x.image.length()-1); obj = selector.processStringLiteral(x.image); break; case INTEGER_LITERAL: x = jj_consume_token(INTEGER_LITERAL); //{obj = new Long(x.image);} obj = new NumericValue(x.image, NumericValue.LongValue); break; case FLOATING_POINT_LITERAL: x = jj_consume_token(FLOATING_POINT_LITERAL); //{obj = new Double(x.image);} obj = new NumericValue(x.image, NumericValue.DoubleValue); break; case BOOLEAN_LITERAL: x = jj_consume_token(BOOLEAN_LITERAL); obj = new Boolean(x.image.toLowerCase()); break; default: jj_la1[11] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return obj;} } catch (Exception e) { //Cant happen e.printStackTrace(); {if (true) throw generateParseException();} } throw new Error("Missing return statement in function"); } final public Boolean SQLLikeClause(Object obj1) throws ParseException { Boolean res = null; boolean isLike = false; boolean isNot=false; String colName, propVal=null, pattern; char escapeChar=0; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NOT: jj_consume_token(NOT); isNot = true; break; default: jj_la1[12] = jj_gen; ; } jj_consume_token(LIKE); pattern = SQLPattern(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ESCAPE: jj_consume_token(ESCAPE); escapeChar = EscapeChar(); break; default: jj_la1[13] = jj_gen; ; } if (pattern != null && ! (pattern instanceof java.lang.String)) { {if (true) throw new ParseException("The LIKE target must be a string." + " Found " + pattern.getClass());} } if (obj1 instanceof java.lang.String) { isLike = selector.matchPattern(pattern, (String)obj1, escapeChar); if (isNot) { isLike = !isLike; } res = new Boolean(isLike); } {if (true) return res;} throw new Error("Missing return statement in function"); } final public String SQLPattern() throws ParseException { Token x; String res; x = jj_consume_token(STRING_LITERAL); res = x.image; //Strip leading and trailing quotes //res = res.substring(1, res.length()-1); {if (true) return selector.processStringLiteral(res);} //res; throw new Error("Missing return statement in function"); } final public char EscapeChar() throws ParseException { Token x; String escapeCharStr = null; char escapeChar; x = jj_consume_token(STRING_LITERAL); escapeCharStr = x.image; //Must be a single char String if (escapeCharStr.length() != 3) { //Escape is a single character {if (true) throw new ParseESCAPENotASingleCharacterException(escapeCharStr);} } escapeChar = escapeCharStr.charAt(1); {if (true) return escapeChar;} throw new Error("Missing return statement in function"); } final public Boolean SQLIsClause() throws ParseException { String colName; boolean isNull=false; boolean notNull = false; Boolean res=null; colName = SQLColRef(); jj_consume_token(IS); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NOT: jj_consume_token(NOT); notNull = true; break; default: jj_la1[14] = jj_gen; ; } jj_consume_token(NULL); try { boolean mightBeMsgHeader = mightBeMessageHeader(colName); if (mightBeMsgHeader && colName.equals("JMSDeliveryMode")) { isNull = false; //JMSDeliveryMode always has a default value so never considreed null } else if (mightBeMsgHeader && colName.equals("JMSMessageID")) { //isNull = (msg.get("JMSMessageID") == null); //isNull = (selector.getJMSMessageID() == null); isNull = false; //MessageID always generated by pkt so never considered null. } else if (mightBeMsgHeader && colName.equals("JMSPriority")) { isNull = false; //JMSPriority always has a default value so never considered null. } else if (mightBeMsgHeader && colName.equals("JMSTimestamp")) { isNull = false; //JMSTimestamp always generated by pkt so never considered null. } else if (mightBeMsgHeader && colName.equals("JMSCorrelationID")) { //isNull = (msg.get("JMSCorrelationID") == null); isNull = (selector.getJMSCorrelationID() == null); } else if (mightBeMsgHeader && colName.equals("JMSType")) { //isNull = (msg.get("JMSType") == null); isNull = (selector.getJMSType() == null); } else { isNull = (!msg.containsKey(colName)); } } catch (Exception e) { e.printStackTrace(); {if (true) throw generateParseException();} } if (notNull) { isNull = !isNull; } res = new Boolean(isNull); {if (true) return res;} throw new Error("Missing return statement in function"); } final public Boolean SQLInClause(Object obj1) throws ParseException { boolean found=false; boolean negate = false; Boolean res=null; Vector list = null; Object element = null; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NOT: jj_consume_token(NOT); negate = true; break; default: jj_la1[15] = jj_gen; ; } jj_consume_token(IN); jj_consume_token(OPENPAREN); list = SQLLValueList(); jj_consume_token(CLOSEPAREN); if (list != null && !list.isEmpty()) { Enumeration e = list.elements(); try { while (e.hasMoreElements()) { element = e.nextElement(); String str = (String)element; } } catch (ClassCastException cce) { {if (true) throw new ParseException("All TARGETS of a IN clause " + "must be a String. Found a " + element.getClass());} } if (obj1 == null) { {if (true) return null;} } if (! (obj1 instanceof java.lang.String)) { {if (true) throw new ParseException("Source of IN clause must be " + "a String. Found a " + obj1.getClass().getName());} } found = list.contains(obj1); } if (negate) { found = !found; } res = new Boolean(found); {if (true) return res;} throw new Error("Missing return statement in function"); } final public Vector SQLLValueList() throws ParseException { Object elem = null; Vector list = new Vector(); elem = SQLLValueElement(); list.addElement(elem); label_5: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 36: ; break; default: jj_la1[16] = jj_gen; break label_5; } jj_consume_token(36); elem = SQLLValueElement(); list.addElement(elem); } {if (true) return list;} throw new Error("Missing return statement in function"); } final public Object SQLLValueElement() throws ParseException { Object res = null; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NULL: jj_consume_token(NULL); break; default: jj_la1[17] = jj_gen; if (jj_2_12(3)) { res = SQLSumExpr(); } else if (jj_2_13(3)) { res = SQLOrExpr(); } else { jj_consume_token(-1); throw new ParseException(); } } if (res instanceof NumericValue) { res = ((NumericValue)res).getValue(); } {if (true) return res;} throw new Error("Missing return statement in function"); } final public Boolean SQLBetweenClause(Object obj1) throws ParseException { boolean between=false; boolean negate = false; NumericValue res = null; Object res1 = null; Object res2 = null; Vector list = null; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NOT: jj_consume_token(NOT); negate = true; break; default: jj_la1[18] = jj_gen; ; } jj_consume_token(BETWEEN); res1 = SQLSumExpr(); jj_consume_token(AND); res2 = SQLSumExpr(); //Use java.lang.Comparable when min JDK = 1.2 if (obj1 != null && !(obj1 instanceof java.lang.Number)) { {if (true) throw new ParseException("The LValue for BETWEEN must be a java.lang.Number. Found " + obj1);} } if (res1 != null && (res1 instanceof String || res1 instanceof Boolean)) { {if (true) throw new ParseException("The START target for BETWEEN must " + "be a numeric value. Found " + res1.getClass());} } if (res2 != null && (res2 instanceof String || res2 instanceof Boolean)) { {if (true) throw new ParseException("The END target for BETWEEN must " + "be a numeric value. Found " + res2.getClass());} } if (obj1 == null || res1 == null || res2 == null) { // if any operand is unknown, result of expression is unknown. {if (true) return null;} } //XXX GT: can be used when min JDK = 1.2 //if (!(obj1 instanceof java.lang.Comparable)) { // throw new ParseException("The LValue for BETWEEN must be a java.lang.Comparable. Found " + obj1); //} // //if ( (((Comparable)obj1).compareTo(res1) >= 0) && (((Comparable)obj1).compareTo(res2) <= 0) ) { // between = true; //} ////Using the following five lines for now. if (!(obj1 instanceof java.lang.Number)) { //LValue for BETWEEN must be a java.lang.Number {if (true) throw new ParseBetweenLValueException(obj1.toString());} } res = new NumericValue(obj1); between = res.between(new NumericValue(res1), new NumericValue(res2)); ////between set above from NumericValue.between() instead of Comparable.compareTo() if (negate) { between = !between; } res1= new Boolean(between); {if (true) return (Boolean)res1;} throw new Error("Missing return statement in function"); } final private boolean jj_2_1(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; boolean retval = !jj_3_1(); jj_save(0, xla); return retval; } final private boolean jj_2_2(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; boolean retval = !jj_3_2(); jj_save(1, xla); return retval; } final private boolean jj_2_3(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; boolean retval = !jj_3_3(); jj_save(2, xla); return retval; } final private boolean jj_2_4(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; boolean retval = !jj_3_4(); jj_save(3, xla); return retval; } final private boolean jj_2_5(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; boolean retval = !jj_3_5(); jj_save(4, xla); return retval; } final private boolean jj_2_6(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; boolean retval = !jj_3_6(); jj_save(5, xla); return retval; } final private boolean jj_2_7(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; boolean retval = !jj_3_7(); jj_save(6, xla); return retval; } final private boolean jj_2_8(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; boolean retval = !jj_3_8(); jj_save(7, xla); return retval; } final private boolean jj_2_9(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; boolean retval = !jj_3_9(); jj_save(8, xla); return retval; } final private boolean jj_2_10(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; boolean retval = !jj_3_10(); jj_save(9, xla); return retval; } final private boolean jj_2_11(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; boolean retval = !jj_3_11(); jj_save(10, xla); return retval; } final private boolean jj_2_12(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; boolean retval = !jj_3_12(); jj_save(11, xla); return retval; } final private boolean jj_2_13(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; boolean retval = !jj_3_13(); jj_save(12, xla); return retval; } final private boolean jj_3R_8() { Token xsp; xsp = jj_scanpos; if (jj_3R_15()) jj_scanpos = xsp; else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_scan_token(IN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_scan_token(OPENPAREN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_16()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_scan_token(CLOSEPAREN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3_9() { if (jj_scan_token(GREATEREQUAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_10()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_18() { if (jj_3R_24()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_25()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } final private boolean jj_3_8() { if (jj_scan_token(GREATER)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_10()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_40() { if (jj_3R_12()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_13() { if (jj_scan_token(NOT)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_7() { Token xsp; xsp = jj_scanpos; if (jj_3R_13()) jj_scanpos = xsp; else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_scan_token(LIKE)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_14()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_17() { if (jj_scan_token(NOT)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_39() { if (jj_3R_42()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3_7() { if (jj_scan_token(NOTEQUAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_10()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_9() { Token xsp; xsp = jj_scanpos; if (jj_3R_17()) jj_scanpos = xsp; else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_scan_token(BETWEEN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_10()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_27() { if (jj_scan_token(MINUS)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_38() { if (jj_scan_token(OPENPAREN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_11()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_scan_token(CLOSEPAREN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_32() { Token xsp; xsp = jj_scanpos; if (jj_3R_38()) { jj_scanpos = xsp; if (jj_3R_39()) { jj_scanpos = xsp; if (jj_3R_40()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3_6() { if (jj_scan_token(EQUAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_10()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_26() { if (jj_scan_token(PLUS)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_29() { if (jj_scan_token(AND)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_28()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3_5() { if (jj_3R_9()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3_4() { if (jj_3R_8()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_43() { if (jj_3R_49()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_20() { if (jj_3R_28()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_29()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } final private boolean jj_3R_19() { Token xsp; xsp = jj_scanpos; if (jj_3R_26()) { jj_scanpos = xsp; if (jj_3R_27()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_18()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3_3() { if (jj_3R_7()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_47() { if (jj_scan_token(BOOLEAN_LITERAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3_13() { if (jj_3R_11()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3_12() { if (jj_3R_10()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_46() { if (jj_scan_token(FLOATING_POINT_LITERAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_30() { if (jj_scan_token(NULL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_45() { if (jj_scan_token(INTEGER_LITERAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_10() { if (jj_3R_18()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_19()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } final private boolean jj_3R_49() { Token xsp; xsp = jj_scanpos; if (jj_3_3()) { jj_scanpos = xsp; if (jj_3_4()) { jj_scanpos = xsp; if (jj_3_5()) { jj_scanpos = xsp; if (jj_3_6()) { jj_scanpos = xsp; if (jj_3_7()) { jj_scanpos = xsp; if (jj_3_8()) { jj_scanpos = xsp; if (jj_3_9()) { jj_scanpos = xsp; if (jj_3_10()) { jj_scanpos = xsp; if (jj_3_11()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_22() { Token xsp; xsp = jj_scanpos; if (jj_3R_30()) { jj_scanpos = xsp; if (jj_3_12()) { jj_scanpos = xsp; if (jj_3_13()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_12() { if (jj_scan_token(ID)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_21() { if (jj_scan_token(OR)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_20()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_48() { if (jj_scan_token(NOT)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_44() { if (jj_scan_token(STRING_LITERAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_37() { if (jj_scan_token(MINUS)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_6() { if (jj_3R_12()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_scan_token(IS)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; xsp = jj_scanpos; if (jj_3R_48()) jj_scanpos = xsp; else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_scan_token(NULL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_41() { if (jj_3R_10()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; xsp = jj_scanpos; if (jj_3R_43()) jj_scanpos = xsp; else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_36() { if (jj_scan_token(PLUS)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_23() { if (jj_scan_token(36)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_42() { Token xsp; xsp = jj_scanpos; if (jj_3R_44()) { jj_scanpos = xsp; if (jj_3R_45()) { jj_scanpos = xsp; if (jj_3R_46()) { jj_scanpos = xsp; if (jj_3R_47()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3_2() { if (jj_3R_6()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_16() { if (jj_3R_22()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_23()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } final private boolean jj_3R_35() { Token xsp; xsp = jj_scanpos; if (jj_3_2()) { jj_scanpos = xsp; if (jj_3R_41()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_31() { Token xsp; xsp = jj_scanpos; if (jj_3R_36()) { jj_scanpos = xsp; if (jj_3R_37()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_11() { if (jj_3R_20()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_21()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } final private boolean jj_3_11() { if (jj_scan_token(LESSEQUAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_10()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_24() { Token xsp; xsp = jj_scanpos; if (jj_3R_31()) jj_scanpos = xsp; else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_32()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_34() { if (jj_scan_token(SLASH)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3_10() { if (jj_scan_token(LESS)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_10()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3_1() { if (jj_scan_token(NOT)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_33() { if (jj_scan_token(ASTERISK)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_28() { Token xsp; xsp = jj_scanpos; if (jj_3_1()) jj_scanpos = xsp; else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_35()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_14() { if (jj_scan_token(STRING_LITERAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_25() { Token xsp; xsp = jj_scanpos; if (jj_3R_33()) { jj_scanpos = xsp; if (jj_3R_34()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_24()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } final private boolean jj_3R_15() { if (jj_scan_token(NOT)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } public SQLParserTokenManager token_source; JavaCharStream jj_input_stream; public Token token, jj_nt; private int jj_ntk; private Token jj_scanpos, jj_lastpos; private int jj_la; public boolean lookingAhead = false; private boolean jj_semLA; private int jj_gen; final private int[] jj_la1 = new int[19]; final private int[] jj_la1_0 = {0x2000,0x40,0x1f800d80,0x201d8000,0x0,0x0,0x80000000,0x80000000,0x0,0x0,0x201d8000,0xd8000,0x800,0x4000,0x800,0x800,0x0,0x1000,0x800,}; final private int[] jj_la1_1 = {0x0,0x0,0x0,0x6,0x6,0x6,0x1,0x1,0x6,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,}; final private JJCalls[] jj_2_rtns = new JJCalls[13]; private boolean jj_rescan = false; private int jj_gc = 0; public SQLParser(java.io.InputStream stream) { jj_input_stream = new JavaCharStream(stream, 1, 1); token_source = new SQLParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 19; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } 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; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } public SQLParser(java.io.Reader stream) { jj_input_stream = new JavaCharStream(stream, 1, 1); token_source = new SQLParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 19; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } 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; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } public SQLParser(SQLParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 19; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } public void ReInit(SQLParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 19; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } 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++; 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(); } final 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); } return (jj_scanpos.kind != kind); } 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 = lookingAhead ? jj_scanpos : 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; 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.Enumeration enm = jj_expentries.elements(); enm.hasMoreElements();) { int[] oldentry = (int[])(enm.nextElement()); if (oldentry.length == jj_expentry.length) { exists = true; 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.addElement(jj_expentry); if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind; } } final public ParseException generateParseException() { jj_expentries.removeAllElements(); boolean[] la1tokens = new boolean[37]; for (int i = 0; i < 37; 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< 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; } } p = p.next; } while (p != null); } jj_rescan = false; } final 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; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy