<!--
 -
 - Licensed to the Apache Software Foundation (ASF) under one
 - or more contributor license agreements.  See the NOTICE file
 - distributed with this work for additional information
 - regarding copyright ownership.  The ASF licenses this file
 - to you 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.
 -
 -->
<section>
  <title>Java JMS Selector Syntax</title>
  <para>The AMQP Java JMS Messaging Client supports the following syntax for JMS selectors.</para>

<programlisting><![CDATA[
Comments:

  LINE_COMMENT: "--" (~["\n","\r"])* EOL
  EOL: "\n"|"\r"|"\r\n"
  BLOCK_COMMENT: "/*" (~["*"])* "*" ("*" | (~["*","/"] (~["*"])* "*"))* "/"

Reserved Words (case insensitive):

  NOT:     "NOT"
  AND:     "AND"
  OR:      "OR"
  BETWEEN: "BETWEEN"
  LIKE:    "LIKE"
  ESCAPE:  "ESCAPE"
  IN:      "IN"
  IS:      "IS"
  TRUE:    "TRUE"
  FALSE:   "FALSE"
  NULL:    "NULL"

Literals (case insensitive):

  DECIMAL_LITERAL:        ["1"-"9"] (["0"-"9"])* (["l","L"])?
  HEX_LITERAL:            "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+
  OCTAL_LITERAL:          "0" (["0"-"7"])*
  FLOATING_POINT_LITERAL: (   (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)? // matches: 5.5 or 5. or 5.5E10 or 5.E10
                            | "." (["0"-"9"])+ (<EXPONENT>)?              // matches: .5 or .5E10
                            | (["0"-"9"])+ <EXPONENT> )                   // matches: 5E10
  EXPONENT:               "E" (["+","-"])? (["0"-"9"])+
  STRING_LITERAL:         "'" ( ("''") | ~["'"] )*  "'"

Identifiers (case insensitive):

  ID : ["a"-"z", "_", "$"] (["a"-"z","0"-"9","_", "$"])*
  QUOTED_ID : "\"" ( ("\"\"") | ~["\""] )*  "\""

Grammar:

  JmsSelector          := orExpression
  orExpression         := ( andExpression ( <OR> andExpression )* )
  andExpression        := ( equalityExpression ( <AND> equalityExpression )* )
  equalityExpression   := ( comparisonExpression (   "=" comparisonExpression
                                                   | "<>" comparisonExpression
                                                   | <IS> <NULL>
                                                   | <IS> <NOT> <NULL> )* )
  comparisonExpression := ( addExpression (   ">" addExpression
                                            | ">=" addExpression
                                            | "<" addExpression
                                            | "<=" addExpression
                                            | <LIKE> stringLitteral ( <ESCAPE> stringLitteral )?
                                            | <NOT> <LIKE> <STRING_LITERAL> ( <ESCAPE> <STRING_LITERAL> )?
                                            | <BETWEEN> addExpression <AND> addExpression
                                            | <NOT> <BETWEEN> addExpression <AND> addExpression
                                            | <IN> "(" <STRING_LITERAL> ( "," <STRING_LITERAL> )* ")"
                                            | <NOT> <IN> "(" <STRING_LITERAL> ( "," <STRING_LITERAL> )* ")" )* )
  addExpression        := multExpr ( ( "+" multExpr | "-" multExpr ) )*
  multExpr             := unaryExpr ( "*" unaryExpr | "/" unaryExpr | "%" unaryExpr )*
  unaryExpr            := ( "+" unaryExpr | "-" unaryExpr | <NOT> unaryExpr | primaryExpr )
  primaryExpr          := ( literal | variable | "(" orExpression ")" )
  literal              := (   <STRING_LITERAL>
                            | <DECIMAL_LITERAL>
                            | <HEX_LITERAL>
                            | <OCTAL_LITERAL>
                            | <FLOATING_POINT_LITERAL>
                            | <TRUE>
                            | <FALSE>
                            | <NULL> )
  variable             := ( <ID> | <QUOTED_ID> )
]]></programlisting>

</section>
