diff options
Diffstat (limited to 'qpid/doc/book/src/Java-JMS-Selector-Syntax.xml')
| -rw-r--r-- | qpid/doc/book/src/Java-JMS-Selector-Syntax.xml | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/qpid/doc/book/src/Java-JMS-Selector-Syntax.xml b/qpid/doc/book/src/Java-JMS-Selector-Syntax.xml new file mode 100644 index 0000000000..241fcc36ba --- /dev/null +++ b/qpid/doc/book/src/Java-JMS-Selector-Syntax.xml @@ -0,0 +1,76 @@ +<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>
\ No newline at end of file |
