1
0
Fork 0
arangodb/arangod/Ahuacatl/aql.ebnf

98 lines
3.2 KiB
EBNF

/* converted on Thu May 10, 2012, 22:39 (UTC+02) by bison-to-w3c v0.27.400 which is Copyright (c) 2011-2012 by Gunther Rademacher <grd@gmx.net> */
query ::= statement_block_statement* return_statement
statement_block_statement
::= for_statement
| let_statement
| filter_statement
| collect_statement
| sort_statement
| limit_statement
for_statement
::= T_FOR variable_name T_IN expression
filter_statement
::= T_FILTER expression
let_statement
::= T_LET variable_name T_ASSIGN expression
collect_statement
::= T_COLLECT collect_element ( T_COMMA collect_element )* optional_into
collect_element
::= variable_name T_ASSIGN expression
| expression
optional_into
::= ( T_INTO variable_name )?
sort_statement
::= T_SORT sort_element ( T_COMMA sort_element )*
sort_element
::= expression sort_direction
sort_direction
::= ( T_ASC | T_DESC )?
limit_statement
::= T_LIMIT signed_number
| T_LIMIT signed_number T_COMMA signed_number
return_statement
::= T_RETURN expression
expression
::= T_OPEN expression T_CLOSE
| T_OPEN query T_CLOSE
| operator_unary
| operator_binary
| operator_ternary
| T_STRING T_OPEN optional_function_call_arguments T_CLOSE
| compound_type
| atomic_value
| T_STRING ( '.' T_STRING | T_LIST_OPEN expression T_LIST_CLOSE )* ( T_EXPAND ( '.' T_STRING | T_LIST_OPEN expression T_LIST_CLOSE )+ )*
operator_unary
::= T_PLUS expression
| T_MINUS expression
| T_NOT expression
operator_binary
::= expression T_OR expression
| expression T_AND expression
| expression T_PLUS expression
| expression T_MINUS expression
| expression T_TIMES expression
| expression T_DIV expression
| expression T_MOD expression
| expression T_EQ expression
| expression T_NE expression
| expression T_LT expression
| expression T_GT expression
| expression T_LE expression
| expression T_GE expression
| expression T_IN expression
operator_ternary
::= expression T_QUESTION expression T_COLON expression
optional_function_call_arguments
::= ( expression ( T_COMMA expression )* )?
compound_type
::= list
| array
list ::= T_LIST_OPEN optional_list_elements T_LIST_CLOSE
optional_list_elements
::= ( expression ( T_COMMA expression )* )?
array ::= T_DOC_OPEN optional_array_elements T_DOC_CLOSE
optional_array_elements
::= ( array_element ( T_COMMA array_element )* )?
array_element
::= array_element_name T_COLON expression
atomic_value
::= value_literal
| bind_parameter
value_literal
::= T_QUOTED_STRING
| T_NUMBER
| T_NULL
| T_TRUE
| T_FALSE
bind_parameter
::= T_PARAMETER
array_element_name
::= T_STRING
| T_QUOTED_STRING
variable_name
::= T_STRING
signed_number
::= T_NUMBER
| '-' T_NUMBER