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>