/* 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 */ 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