start:
_ Weak _
Weak:
OrExpression StrongerThanOr
StrongerThanOr:
SequenceExpression StrongerThanSequence
StrongerThanSequence:
AndExpression StrongerThanAnd
StrongerThanAnd:
NotExpression StrongerThanNot
StrongerThanNot:
MustOccurExpression MustNotOccurExpression ShouldOccurExpression StrongerThanOccurence
StrongerThanOccurence:
QualifiedExpression StrongerThanQualified
StrongerThanQualified:
ParenthesizedExpression Atomic
Atomic:
QuotedLiteral TermExpression
QuotedLiteral:
DoubleQuotedLiteralExpression SingleQuotedLiteralExpression
MustOccurExpression:
+ StrongerThanOccurence
MustNotOccurExpression:
- StrongerThanOccurence
ShouldOccurExpression:
? StrongerThanOccurence
QualifiedExpression:
FieldNameToken ColonToken StrongerThanQualified
SequenceExpression:
_ StrongerThanSequence
OrExpression:
StrongerThanOr _ ORToken _ StrongerThanOr
AndExpression:
StrongerThanAnd _ ANDToken _ StrongerThanAnd
NotExpression:
NOTToken _ StrongerThanAnd
ParenthesizedExpression:
LParToken _ Weak _ RParToken
TermExpression:
ANDToken ORToken NOTToken [^\t\n\r ()"\:]
DoubleQuotedLiteralExpression:
" DoubleQuotedLiteralContent "
SingleQuotedLiteralExpression:
' SingleQuotedLiteralContent '
FieldNameToken:
[^\t\n\r ()"?+\-\:]
DoubleQuotedLiteralContent:
[^"\\] \ [\"\'\\]
SingleQuotedLiteralContent:
[^'\\] \ [\"\'\\]
ANDToken:
AND
ORToken:
OR
NOTToken:
NOT
ColonToken:
:
LParToken:
(
RParToken:
)
_:
[ \t\n\r]