User: user57  
  Date: 02/02/13 18:54:30

  Modified:    src/main/org/jboss/mq/selectors Operator.java Selector.java
  Added:       src/main/org/jboss/mq/selectors SelectorParser.jj
  Removed:     src/main/org/jboss/mq/selectors ASCII_CharStream.java
                        ParseException.java SelectorParser.java
                        SelectorParserConstants.java
                        SelectorParserTokenManager.java Token.java
                        TokenMgrError.java jms.jj
  Log:
   o Removing files generated by JavaCC.
   o Renamed jms.jj to SelectorParser.jj (it generates SelectorParser.java)
   o Made SelectorParser the deafult
   o Fixed build system to correctly build the parser
  
  Revision  Changes    Path
  1.5       +4 -27     jbossmq/src/main/org/jboss/mq/selectors/Operator.java
  
  Index: Operator.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/selectors/Operator.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Operator.java     24 Aug 2001 17:27:08 -0000      1.4
  +++ Operator.java     14 Feb 2002 02:54:29 -0000      1.5
  @@ -9,15 +9,16 @@
   import java.util.HashSet;
   
   /**
  - *  An operator for the selector system
  + * An operator for the selector system.
    *
    * @author     Norbert Lataille ([EMAIL PROTECTED])
    * @author     [EMAIL PROTECTED]
    * @author     [EMAIL PROTECTED]
    * @created    August 16, 2001
  - * @version    $Revision: 1.4 $
  + * @version    $Revision: 1.5 $
    */
  -public class Operator {
  +public class Operator
  +{
      int              operation;
      Object           oper1;
      Object           oper2;
  @@ -32,53 +33,29 @@
      int              class3;
   
      public final static int EQUAL = 0;
  -   //Done
      public final static int NOT = 1;
  -   //Done
      public final static int AND = 2;
  -   //Done
      public final static int OR = 3;
  -   //Done
      public final static int GT = 4;
  -   //Done
      public final static int GE = 5;
  -   //Done
      public final static int LT = 6;
  -   //Done
      public final static int LE = 7;
  -   //Done
      public final static int DIFFERENT = 8;
  -   //Done
      public final static int ADD = 9;
  -   //Done
      public final static int SUB = 10;
  -   //Done
      public final static int NEG = 11;
  -   //Done
      public final static int MUL = 12;
  -   //Done
      public final static int DIV = 13;
  -   //Done
      public final static int BETWEEN = 14;
  -   //Done
      public final static int NOT_BETWEEN = 15;
  -   //Done
      public final static int LIKE = 16;
  -   //Done
      public final static int NOT_LIKE = 17;
  -   //Done
      public final static int LIKE_ESCAPE = 18;
  -   //Done
      public final static int NOT_LIKE_ESCAPE = 19;
  -   //Done
      public final static int IS_NULL = 20;
  -   //Done
      public final static int IS_NOT_NULL = 21;
  -   //Done
      public final static int IN = 22;
  -   //Done
      public final static int NOT_IN = 23;
  -   //Done
   
      public final static int STRING = 0;
      public final static int DOUBLE = 1;
  
  
  
  1.8       +32 -25    jbossmq/src/main/org/jboss/mq/selectors/Selector.java
  
  Index: Selector.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/selectors/Selector.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Selector.java     13 Jan 2002 01:10:03 -0000      1.7
  +++ Selector.java     14 Feb 2002 02:54:29 -0000      1.8
  @@ -17,37 +17,44 @@
   import org.jboss.mq.SpyMessage;
   
   /**
  - *  This class implements a Message Selector.
  + * This class implements a Message Selector.
    *
    * @author     Norbert Lataille ([EMAIL PROTECTED])
    * @author     Juha Lindfors ([EMAIL PROTECTED])
    * @author     <a href="mailto:[EMAIL PROTECTED]";>Jason Dillon</a>
    * @author     [EMAIL PROTECTED]
    * @created    August 16, 2001
  - * @version    $Revision: 1.7 $
  + * @version    $Revision: 1.8 $
    */
   public class Selector
   {
      /** The logging interface */
      static Logger cat = Logger.getLogger(Selector.class);
  +   
      /** The ISelectorParser implementation class */
  -   private static Class parserClass = parser.class;
  +   private static Class parserClass = SelectorParser.class;
   
      public HashMap identifiers;
  +   
      public Object result;
  +   
      private Class resultType;
   
  -   /** Get the class that implements the ISelectorParser interface to be used by
  -    Selector instances.
  +   /**
  +    * Get the class that implements the ISelectorParser interface to be used by
  +    * Selector instances.
       */
      public static Class getSelectorParserClass()
      {
         return Selector.parserClass;
      }
  -   /** Set the class that implements the ISelectorParser interface to be used by
  -    Selector instances.
  -    @param parserClass, the ISelectorParser implementation. This must have a
  -    public no-arg constructor.
  +   
  +   /**
  +    * Set the class that implements the ISelectorParser interface to be used by
  +    * Selector instances.
  +    * 
  +    * @param parserClass  the ISelectorParser implementation. This must have a
  +    *                     public no-arg constructor.
       */
      public static void setSelectorParserClass(Class parserClass)
      {
  @@ -72,9 +79,9 @@
            throw exception;
         }
         
  -      //       if (cat.isDebugEnabled()) {
  -      //          cat.debug("result: " + resultType + " = " + result);
  -      //       }
  +      // if (log.isDebugEnabled()) {
  +      //    log.debug("result: " + resultType + " = " + result);
  +      // }
      }
   
      public boolean test(SpyMessage.Header mes) throws JMSException
  @@ -88,11 +95,11 @@
            {
               Identifier id = (Identifier)i.next();
               Object find = mes.jmsProperties.get(id.name);
  -            //             if (cat.isDebugEnabled()) {
  -            //                cat.debug("Identifier: " + id);
  -            //                cat.debug("Property: " + find);
  +            //             if (log.isDebugEnabled()) {
  +            //                log.debug("Identifier: " + id);
  +            //                log.debug("Property: " + find);
               //                if (find != null) {
  -            //                   cat.debug("Property type: " + find.getClass());
  +            //                   log.debug("Property type: " + find.getClass());
               //                }
               //             }
               
  @@ -103,9 +110,9 @@
               
               if (find == null)
               {
  -               //if (cat.isDebugEnabled())
  +               //if (log.isDebugEnabled())
                  //{
  -               //   cat.debug("Warning : missing property " + id.name);
  +               //   log.debug("Warning : missing property " + id.name);
                  //}
                  id.value = null;
               }
  @@ -128,8 +135,8 @@
                     throw new Exception("Bad property type: " + type);
                  }
                  
  -               //                if (cat.isDebugEnabled()) {
  -               //                   cat.debug("SEL:" + id.name + " =>" + id.value);
  +               //                if (log.isDebugEnabled()) {
  +               //                   log.debug("SEL:" + id.name + " =>" + id.value);
                  //                }
               }
            }
  @@ -150,10 +157,10 @@
               res = result;
            }
            
  -         //          if (cat.isDebugEnabled()) {
  -         //             cat.debug("res: " + res);
  +         //          if (log.isDebugEnabled()) {
  +         //             log.debug("res: " + res);
            //             if (result != null) {
  -         //                cat.debug("res type: " + res.getClass());
  +         //                log.debug("res type: " + res.getClass());
            //             }
            //          }
            
  @@ -167,8 +174,8 @@
               throw new Exception("Bad object type: " + res);
            }
            
  -         //          if (cat.isDebugEnabled()) {
  -         //             cat.debug("Selectors =>" + res);
  +         //          if (log.isDebugEnabled()) {
  +         //             log.debug("Selectors =>" + res);
            //          }
            
            return ((Boolean )res).booleanValue();
  
  
  
  1.1                  jbossmq/src/main/org/jboss/mq/selectors/SelectorParser.jj
  
  Index: SelectorParser.jj
  ===================================================================
  // A JavaCC 2.0 grammar for the JMS 1.0.2 message selectors.
  options {
      LOOKAHEAD=1;
  }
  
  PARSER_BEGIN(SelectorParser)
     
  package org.jboss.mq.selectors;
  
  import java.io.StringReader;
  import java.util.HashSet;
  import java.util.HashMap;
  
  /**
   * A JavaCC 2.0 grammar for the JMS 1.0.2 message selectors.
   * 
   * @see http://www.webgain.com/products/metamata/java_doc.html
   * @author [EMAIL PROTECTED]
   * @version $Revision: 1.1 $
   */
  public class SelectorParser
     implements ISelectorParser
  {
     private HashMap identifierMap;
  
     public static Object doParse(String selector, HashMap identifierMap)
        throws ParseException
     {
        return doParse(selector, identifierMap, false);
     }
     public static Object doParse(String selector, HashMap identifierMap, boolean 
trace)
        throws ParseException
     {
        SelectorParser parser = new SelectorParser();
        return parser.parse(selector, identifierMap, trace);
     }
  
     public Object parse(String selector, HashMap identifierMap)
        throws ParseException
     {
        return parse(selector, identifierMap, false);
     }
     public Object parse(String selector, HashMap identifierMap, boolean trace)
        throws ParseException
     {
        StringReader sr = new StringReader(selector);
        ReInit(sr);
        if( trace )
           this.enable_tracing();
        else
           this.disable_tracing();
        this.identifierMap = identifierMap;
        return this.expression();
     }
  
     public SelectorParser()
     {
     }
  }
  PARSER_END(SelectorParser)
  
  SKIP :
  {
        " "
    |   "\r"
    |   "\t"
    |   "\n"
  }
  
  
  /* RESERVED WORDS AND LITERALS */
  
  TOKEN :
  {
    < TRUE: "TRUE" | "true" >
    | < FALSE: "FALSE" | "false" >
    | < BOOLEAN: <TRUE> | <FALSE> >
    | < NULL: "NULL" | "null" >
    | < AND: "AND" | "and" >
    | < NOT: "NOT" >
    | < OR: "OR" | "or" >
    | < BETWEEN: "BETWEEN" | "between" >
    | < LIKE: "LIKE" | "like" >
    | < IN: "IN" | "in" >
    | < IS: "IS" | "is" >
    | < ESCAPE: "ESCAPE" | "escape" >
    | < LPAREN: "(" >
    | < RPAREN: ")" >
    | < SEMICOLON: ";" >
    | < COMMA: "," >
  
  }
  
  TOKEN : /* OPERATORS */
  {
    < MULT: "*" >
    | < DIV: "/" >
    | < MINUS: "-" >
    | < PLUS: "+" >
    | < GT: ">" >
    | < GE: ">=" >
    | < LT: "<" >
    | < LE: "<=" >
    | < NE: "<>" >
    | < EQ: "=" >
  
  }
  
  TOKEN : /* Literals */
  {
        < LONG: ( ["0" - "9"] )+ >
    |   < DOUBLE: <FLOAT>
            | <FLOAT> ( ["e","E"] ([ "-","+"])? <LONG> )?
        >
    |   < #FLOAT: <LONG> ( "." <LONG> )?
            | "." <LONG>
        >
    | < STRING:
        "'"
        (   (~["'","\n","\r"])
          | ("''")
        )*
        "'"
      >
  }
  
  TOKEN : /* Function names */
  {
    < IDENTIFIER: <LETTER> (<LETTER>|<DIGIT>)* >
  |
    < #LETTER: [ "_","$", "a"-"z", "A"-"Z" ]
    >
  |
    < #DIGIT: ["0" - "9"]
    >
  }
  
  /** Start of the grammar */
  
  Object expression() :
  {
     Object exp1 = null;
  }
  {
     exp1 = logicExpression()
     {
        return exp1;
     }
  }
  
  Object logicExpression() :
  {
     Object exp1 = null;
     Object exp2 = null;
  }
  {
     exp1=notExpression()
     (
        <AND> exp2=notExpression()
        {
           exp1 = new Operator(Operator.AND, exp1, exp2);
        }
        | <OR> notExpression()
        {
           exp1 = new Operator(Operator.OR, exp1, exp2);
        }
     )*
     { return exp1; }
  }
  
  Object notExpression() :
  {
     Object exp1 = null;
     Object exp2 = null;
  }
  {
    exp1=relationalExpression()
     { return exp1; }
    | <NOT> exp1=relationalExpression()
        {
           exp1 = new Operator(Operator.NOT, exp1);
        }
     { return exp1; }
  }
  
  Object relationalExpression() :
  {
     Object exp1 = null;
     Object exp2 = null;
  }
  {
    exp1=orEqualExpression()
    (
        <LT> exp2=orEqualExpression()
        {
           exp1 = new Operator(Operator.LT, exp1, exp2);
        }
  
        | <GT> orEqualExpression()
        {
           exp1 = new Operator(Operator.GT, exp1, exp2);
        }
    )*
     { return exp1; }
  }
  
  Object orEqualExpression() :
  {
     Object exp1 = null;
     Object exp2 = null;
  }
  {
    exp1=equalExpression()
    (
      ( <LE> exp2=equalExpression()
        {
           exp1 = new Operator(Operator.LE, exp1, exp2);
        }
      )
        |
      ( <GE> equalExpression()
        {
           exp1 = new Operator(Operator.GE, exp1, exp2);
        }
      )
    )*
     { return exp1; }
  }
  
  
  Object equalExpression() :
  {
     Object exp1 = null;
     Object exp2 = null;
     Object exp3 = null;
     HashSet set = null;
  }
  {
     exp1=additiveExpression()
     (  <NE> exp2=additiveExpression()
        {
           exp1 = new Operator(Operator.DIFFERENT, exp1, exp2);
        }
        | <EQ> exp2=additiveExpression()
        {
           exp1 = new Operator(Operator.EQUAL, exp1, exp2);
        }
        | <IS> exp1=nullExp(exp1)
        | <BETWEEN> exp2=additiveExpression() <AND> exp3=additiveExpression()
        {
           exp1 = new Operator(Operator.BETWEEN, exp1, exp2, exp3);
        }
        | <LIKE> exp1=likeExp(exp1)
        | <IN> <LPAREN> { set = new HashSet(); } strings(set) <RPAREN>
        {
           exp1 = new Operator(Operator.IN, exp1, set);
        }
     )*
     { return exp1; }
  }
  
  
  Object additiveExpression() :
  {
     Object exp1 = null;
     Object exp2 = null;
  }
  {
    exp1=multiplicativeExpression()
    (
      ( <PLUS> exp2=multiplicativeExpression()
        {
           exp1 = new Operator(Operator.ADD, exp1, exp2);
        }
      )
      |
      ( <MINUS> exp2=multiplicativeExpression()
        {
           exp1 = new Operator(Operator.SUB, exp1, exp2);
        }
      )
    )*
    { return exp1; }
  }
  
  Object multiplicativeExpression() :
  {
     Object exp1 = null;
     Object exp2 = null;
  }
  {
     exp1=unaryExpression()
     (
        ( <MULT> exp2=unaryExpression()
           {
              exp1 = new Operator(Operator.MUL, exp1, exp2);
           }
         )
     |
        ( <DIV> exp2=unaryExpression()
           {
              exp1 = new Operator(Operator.DIV, exp1, exp2);
           }
        )
     )*
     { return exp1; }
  }
  
  Object unaryExpression() :
  {
     Object exp1 = null;
  }
  {
     <PLUS> exp1=unaryExpression()
        { return exp1; }
     | <MINUS> exp1=unaryExpression()
        { return new Operator(Operator.NEG, exp1); }
     | exp1=unaryExpressionNotPlusMinus()
        { return exp1; }
  }
  
  
  Object unaryExpressionNotPlusMinus() :
  {
     Token t = null;
     Object exp = null;
  }
  {
     t=<IDENTIFIER>
        {
           Identifier id = new Identifier(t.image);
           identifierMap.put(t.image, id);
           return id;
        }
     | t=<STRING>  { return t.image; }
     | t=<DOUBLE>  { return Double.valueOf(t.image); }
     | t=<LONG>    { return Long.valueOf(t.image); }
     | t=<BOOLEAN> { return Boolean.valueOf(t.image); }
     | <LPAREN> exp=expression() <RPAREN>
        { return exp; }
  }
  
  Operator nullExp(Object exp1) :
  {
     Token not = null;
  }
  {
     [ not=<NOT> ] <NULL>
     {
        int opCode = not == null ? Operator.IS_NULL : Operator.IS_NOT_NULL;
        return new Operator(opCode, exp1);
     }
  }
  
  Operator likeExp(Object exp1) :
  {
     Object exp2 = null;
     Object exp3 = null;
     Token esc = null;
  }
  {
     exp2=additiveExpression()
     [ esc=<ESCAPE> exp3=additiveExpression() ]
        {
           Operator op = null;
           if( esc == null )
              op = new Operator(Operator.LIKE, exp1, exp2);
           else
              op = new Operator(Operator.LIKE_ESCAPE, exp1, exp2, exp3);
           return op;
        }
  }
  
  void strings(HashSet set) :
  {
     Token tk = null;
  }
  {
     <COMMA> strings(set)
     | [ tk=<STRING> ]
        { if( tk != null ) set.add(tk.image); }
  }
  
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to