BNF for brql.jj

NON-TERMINALS

CompilationUnit ::= Query <EOF>
CommaOpt ::= ( <COMMA> )?
Query ::= ( PrefixDecl )* ( SelectClause | ConstructClause | DescribeClause ) ( PrefixDecl )* ( FromClause )? ( <WHERE> GraphPattern )?
SelectClause ::= ( <SELECT> VarAsNode ( CommaOpt VarAsNode )* | <SELECT> <STAR> )
DescribeClause ::= ( <DESCRIBE> VarOrURI ( CommaOpt VarOrURI )* | <DESCRIBE> <STAR> )
ConstructClause ::= ( <CONSTRUCT> ConstructPattern | <CONSTRUCT> <STAR> )
ConstructPattern ::= <LBRACE> TriplePatternList ( <DOT> )? <RBRACE>
FromClause ::= <FROM> FromSelector ( CommaOpt FromSelector )*
FromSelector ::= URL
GraphPattern ::= GraphOrPattern
GraphOrPattern ::= GraphAndPattern ( <OR> GraphAndPattern )*
GraphAndPattern ::= ( GroupGraphPattern | OptionalGraphPattern )
OptionalGraphPattern ::= ( <OPTIONAL> GroupGraphPattern | <LBRACKET> PatternElementList <RBRACKET> )
GroupGraphPattern ::= <LBRACE> PatternElementList <RBRACE>
PatternElementList ::= PatternElement ( <DOT> PatternElement )* ( <DOT> )?
PatternElement ::= ( GraphPattern | TriplePatternList | Expression )
TriplePatternList ::= TriplePattern ( <DOT> TriplePattern )*
TriplePattern ::= VarOrURI VarOrURI VarOrLiteral
VarOrURI ::= ( VarAsNode | URI )
VarOrLiteral ::= ( VarAsNode | Literal )
VarAsNode ::= <VAR>
VarAsExpr ::= <VAR>
PrefixDecl ::= ( <PREFIX> <NCNAME> <COLON> QuotedURI | <PREFIX> <COLON> QuotedURI )
Expression ::= ConditionalOrExpression
ConditionalOrExpression ::= ConditionalXorExpression ( <SC_OR> ConditionalXorExpression )*
ConditionalXorExpression ::= ConditionalAndExpression
ConditionalAndExpression ::= ValueLogical ( <SC_AND> ValueLogical )*
ValueLogical ::= StringEqualityExpression
StringEqualityExpression ::= NumericalLogical ( <STR_EQ> NumericalLogical | <STR_NE> NumericalLogical | <STR_MATCH> PatternLiteral | <STR_NMATCH> PatternLiteral )*
NumericalLogical ::= EqualityExpression
EqualityExpression ::= RelationalExpression ( <EQ> RelationalExpression | <NEQ> RelationalExpression )?
RelationalExpression ::= NumericExpression ( <LT> NumericExpression | <GT> NumericExpression | <LE> NumericExpression | <GE> NumericExpression )?
NumericExpression ::= ShiftExpression
ShiftExpression ::= AdditiveExpression
AdditiveExpression ::= MultiplicativeExpression ( <PLUS> MultiplicativeExpression | <MINUS> MultiplicativeExpression )*
MultiplicativeExpression ::= UnaryExpression ( <STAR> UnaryExpression | <SLASH> UnaryExpression | <REM> UnaryExpression )*
UnaryExpression ::= ( <PLUS> UnaryExpressionNotPlusMinus | <MINUS> UnaryExpressionNotPlusMinus | UnaryExpressionNotPlusMinus )
UnaryExpressionNotPlusMinus ::= ( <TILDE> | <BANG> ) UnaryExpression
| PrimaryExpression
PrimaryExpression ::= ( VarAsExpr | Literal | FunctionCall | <LPAREN> Expression <RPAREN> )
FunctionCall ::= <AMP> <QNAME> <LPAREN> ArgList <RPAREN>
ArgList ::= ( VarOrLiteral ( <COMMA> VarOrLiteral )* )?
Literal ::= URI
| NumericLiteral
| TextLiteral
NumericLiteral ::= <INTEGER_LITERAL>
| <FLOATING_POINT_LITERAL>
TextLiteral ::= ( <STRING_LITERAL1> | <STRING_LITERAL2> ) ( <LANG> )? ( <DATATYPE> URI )?
PatternLiteral ::=
URL ::= URI
URI ::= QuotedURI
| QName
QName ::= <QNAME>
QuotedURI ::= <URI>