Java JMS Selector Syntax
The AMQP Java JMS Messaging Client supports the following syntax for JMS selectors.
)? // matches: 5.5 or 5. or 5.5E10 or 5.E10
| "." (["0"-"9"])+ ()? // matches: .5 or .5E10
| (["0"-"9"])+ ) // 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 ( andExpression )* )
andExpression := ( equalityExpression ( equalityExpression )* )
equalityExpression := ( comparisonExpression ( "=" comparisonExpression
| "<>" comparisonExpression
|
| )* )
comparisonExpression := ( addExpression ( ">" addExpression
| ">=" addExpression
| "<" addExpression
| "<=" addExpression
| stringLitteral ( stringLitteral )?
| ( )?
| addExpression addExpression
| addExpression addExpression
| "(" ( "," )* ")"
| "(" ( "," )* ")" )* )
addExpression := multExpr ( ( "+" multExpr | "-" multExpr ) )*
multExpr := unaryExpr ( "*" unaryExpr | "/" unaryExpr | "%" unaryExpr )*
unaryExpr := ( "+" unaryExpr | "-" unaryExpr | unaryExpr | primaryExpr )
primaryExpr := ( literal | variable | "(" orExpression ")" )
literal := (
|
|
|
|
|
|
| )
variable := ( | )
]]>