Bug 510129 - need to document bnf for selectors
Summary: need to document bnf for selectors
Keywords:
Status: CLOSED DUPLICATE of bug 961011
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp
Version: 1.2
Hardware: All
OS: Linux
low
medium
Target Milestone: 3.0
: ---
Assignee: Andrew Stitcher
QA Contact: MRG Quality Engineering
URL:
Whiteboard:
: 506808 (view as bug list)
Depends On:
Blocks: 961011
TreeView+ depends on / blocked
 
Reported: 2009-07-07 19:29 UTC by Rafael H. Schloming
Modified: 2014-12-01 23:14 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
: 961011 (view as bug list)
Environment:
Last Closed: 2013-05-15 14:54:28 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
bnf for selectors (3.15 KB, text/plain)
2009-07-07 19:30 UTC, Rafael H. Schloming
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Red Hat Bugzilla 453539 0 high CLOSED Support message selectors 2021-02-22 00:41:40 UTC

Internal Links: 453539

Description Rafael H. Schloming 2009-07-07 19:29:41 UTC

Comment 1 Rafael H. Schloming 2009-07-07 19:30:59 UTC
Created attachment 350857 [details]
bnf for selectors

Comment 2 Jonathan Robie 2010-03-18 21:34:26 UTC
*** Bug 506808 has been marked as a duplicate of this bug. ***

Comment 3 Jonathan Robie 2010-03-26 13:41:05 UTC
This goes into the new Java Client documentation, which will be essentially rewritten along with the new high level API documentation.

I have checked it into the Apache Qpid documentation for the Java Client.

Comment 4 Justin Ross 2013-02-25 12:28:23 UTC
I can't seem to find this in the upstream docs.

Comment 5 Andrew Stitcher 2013-04-15 18:11:32 UTC
I can only document the syntax of the *new* C++ selectors, not the java selectors.

Comment 6 Andrew Stitcher 2013-04-15 18:16:48 UTC
Here I paste in the informal BNF for the newly implemented C++ selectors:
(it is very similar to the java selector syntax, but I make no guatantee that it is identical):

[This is copied from SelectorExpression.cpp and currently reflects the accepted syntax, but there is no process fro keeping this description in synchrony with the the actual code]

/*
 * Syntax for JMS style selector expressions (informal):
 *
 * Alpha ::= "a".."z" | "A".."Z"
 * Digit ::= "0".."9"
 * IdentifierInitial ::= Alpha | "_" | "$"
 * IdentifierPart ::= IdentifierInitial | Digit | "."
 * Identifier ::= IdentifierInitial IdentifierPart*
 * Constraint : Identifier NOT IN ("NULL", "TRUE", "FALSE", "NOT", "AND", "OR", "BETWEEN", "LIKE", "IN", "IS") // Case insensitive
 *
 * LiteralString ::= ("'" ~[']* "'")+ // Repeats to cope with embedded single quote
 *
 * LiteralExactNumeric ::= Digit+
 * Exponent ::= ['+'|'-'] LiteralExactNumeric
 * LiteralApproxNumeric ::= ( Digit "." Digit* [ "E" Exponent ] ) |
 *                          ( "." Digit+ [ "E" Exponent ] ) |
 *                          ( Digit+ "E" Exponent )
 * LiteralBool ::= "TRUE" | "FALSE"
 *
 * Literal ::= LiteralBool | LiteralString | LiteralApproxNumeric | LiteralExactNumeric
 *
 * EqOps ::= "=" | "<>"
 *
 * ComparisonOps ::= EqOps | ">" | ">=" | "<" | "<="
 *
 * BoolExpression ::= OrExpression
 *
 * OrExpression ::= AndExpression  ( "OR" AndExpression )*
 *
 * AndExpression :: = ComparisonExpression ( "AND" ComparisonExpression )*
 *
 * ComparisonExpression ::= AddExpression "IS" "NULL" |
 *                          AddExpression "IS" "NOT" "NULL" |
 *                          AddExpression "LIKE" LiteralString [ "ESCAPE" LiteralString ] |
 *                          AddExpression "NOT" "LIKE" LiteralString [ "ESCAPE" LiteralString ] |
 *                          AddExpression "BETWEEN" AddExpression "AND" AddExpression |
 *                          AddExpression "NOT" "BETWEEN" AddExpression "AND" AddExpression |
 *                          AddExpression ComparisonOps AddExpression |
 *                          "NOT" ComparisonExpression |
 *                          AddExpression
 *
 * AddOps ::= "+" | "-"
 *
 * MultiplyOps ::= "*" | "-"
 *
 * AddExpression :: = MultiplyExpression (  AddOps MultiplyExpression )*
 *
 * MultiplyExpression :: = UnaryArithExpression ( MultiplyOps UnaryArithExpression )*
 *
 * UnaryArithExpression ::= AddOps AddExpression |
 *                          "(" OrExpression ")" |
 *                          PrimaryExpression
 *
 * PrimaryExpression :: = Identifier |
 *                        Literal
 */

Comment 7 Andrew Stitcher 2013-05-02 19:17:32 UTC
Justin is the above information sufficient for documentation purposes for the C++ selectors? If not then what else needs documenting?

Comment 8 Justin Ross 2013-05-02 19:23:01 UTC
Yes, I think so.  We'll update the documentation later if necessary.  Also changing this to the qpid-cpp component.

(In reply to comment #7)
> Justin is the above information sufficient for documentation purposes for
> the C++ selectors? If not then what else needs documenting?


Note You need to log in before you can comment on or make changes to this bug.