result: expr null result ::= expr | null no referencesarray: [ value_list ] array ::= '[' value_list ']' referenced by: right_expr scalar_value: STRING_P IN_P IS_P OR_P AND_P NOT_P NULL_P TRUE_P ARRAY_T FALSE_P NUMERIC_T OBJECT_T STRING_T BOOLEAN_T NUMERIC_P scalar_value ::= STRING_P | IN_P | IS_P | OR_P | AND_P | NOT_P | NULL_P | TRUE_P | ARRAY_T | FALSE_P | NUMERIC_T | OBJECT_T | STRING_T | BOOLEAN_T | NUMERIC_P referenced by: right_expr value_list value_list: scalar_value value_list , scalar_value value_list ::= scalar_value | value_list ',' scalar_value referenced by: array right_expr value_list right_expr: = scalar_value IN_P ( value_list ) = array = * < NUMERIC_P > NUMERIC_P < = NUMERIC_P > = NUMERIC_P @ > array < @ array & & array IS_P ARRAY_T IS_P NUMERIC_T IS_P OBJECT_T IS_P STRING_T IS_P BOOLEAN_T right_expr ::= '=' scalar_value | IN_P '(' value_list ')' | '=' array | '=' '*' | '<' NUMERIC_P | '>' NUMERIC_P | '<' '=' NUMERIC_P | '>' '=' NUMERIC_P | '@' '>' array | '<' '@' array | '&' '&' array | IS_P ARRAY_T | IS_P NUMERIC_T | IS_P OBJECT_T | IS_P STRING_T | IS_P BOOLEAN_T referenced by: expr expr: path right_expr path HINT_P right_expr NOT_P expr NOT_P HINT_P right_expr NOT_P right_expr path ( expr ) ( expr ) expr AND_P expr expr OR_P expr expr ::= path right_expr | path HINT_P right_expr | NOT_P expr | NOT_P HINT_P right_expr | NOT_P right_expr | path '(' expr ')' | '(' expr ')' | expr AND_P expr | expr OR_P expr referenced by: expr result key: * # % $ STRING_P IN_P IS_P OR_P AND_P NULL_P TRUE_P ARRAY_T FALSE_P NUMERIC_T OBJECT_T STRING_T BOOLEAN_T NUMERIC_P key ::= '*' | '#' | '%' | '$' | STRING_P | IN_P | IS_P | OR_P | AND_P | NULL_P | TRUE_P | ARRAY_T | FALSE_P | NUMERIC_T | OBJECT_T | STRING_T | BOOLEAN_T | NUMERIC_P referenced by: key_any path key_any: key NOT_P key_any ::= key | NOT_P referenced by: path path: key path . key_any NOT_P . key_any path ::= key | path '.' key_any | NOT_P '.' key_any referenced by: expr path ... generated by Railroad Diagram Generator R R