input: attr_vals -- anonymous object | complex_object_block | error ---------------------- body --------------------- attr_vals: attr_val | attr_vals attr_val | attr_vals ';' attr_val attr_val: attr_id SYM_EQ object_block -- could be a single or multiple attr attr_id: V_ATTRIBUTE_IDENTIFIER | V_ATTRIBUTE_IDENTIFIER error -- -- An object_block is any block enclosed in <> with optional leading type name -- object_block: complex_object_block | primitive_object_block complex_object_block: single_attr_object_block | multiple_attr_object_block -- -- --------------------------- multiple attr objects ------------------------------- -- multiple_attr_object_block: untyped_multiple_attr_object_block | type_identifier untyped_multiple_attr_object_block untyped_multiple_attr_object_block: multiple_attr_object_block_head keyed_objects SYM_END_DBLOCK multiple_attr_object_block_head: SYM_START_DBLOCK keyed_objects: keyed_object | keyed_objects keyed_object keyed_object: object_key SYM_EQ object_block object_key: '[' simple_value ']' -- -- --------------------------- single attr objects ------------------------------- -- single_attr_object_block: untyped_single_attr_object_block | type_identifier untyped_single_attr_object_block -- -- An untyped_single_attr_object_block is any block of the form: -- < -- attr1 = <...> -- attr2 = <...> -- attrN = <...> -- > -- untyped_single_attr_object_block: single_attr_object_complex_head SYM_END_DBLOCK | single_attr_object_complex_head attr_vals SYM_END_DBLOCK ; single_attr_object_complex_head: SYM_START_DBLOCK -- -- ------------------------- primitive objects --------------------- -- primitive_object_block: untyped_primitive_object_block | type_identifier untyped_primitive_object_block untyped_primitive_object_block: SYM_START_DBLOCK primitive_object_value SYM_END_DBLOCK primitive_object_value: simple_value | simple_list_value | simple_interval_value | term_code | term_code_list_value simple_value: string_value | integer_value | real_value | boolean_value | character_value | date_value | time_value | date_time_value | duration_value | uri_value simple_list_value: string_list_value | integer_list_value | real_list_value | boolean_list_value | character_list_value | date_list_value | time_list_value | date_time_list_value | duration_list_value simple_interval_value: integer_interval_value | real_interval_value | date_interval_value | time_interval_value | date_time_interval_value | duration_interval_value ---------------------- BASIC DATA VALUES ----------------------- type_identifier: V_TYPE_IDENTIFIER | V_GENERIC_TYPE_IDENTIFIER string_value: V_STRING string_list_value: V_STRING ',' V_STRING | string_list_value ',' V_STRING | V_STRING ',' SYM_LIST_CONTINUE integer_value: V_INTEGER { | '+' V_INTEGER { | '-' V_INTEGER { integer_list_value: integer_value ',' integer_value | integer_list_value ',' integer_value | integer_value ',' SYM_LIST_CONTINUE integer_interval_value: SYM_INTERVAL_DELIM integer_value SYM_ELLIPSIS integer_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT integer_value SYM_ELLIPSIS integer_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM integer_value SYM_ELLIPSIS SYM_LT integer_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT integer_value SYM_ELLIPSIS SYM_LT integer_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_LT integer_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_LE integer_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT integer_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GE integer_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM integer_value SYM_INTERVAL_DELIM real_value: V_REAL | '+' V_REAL | '-' V_REAL real_list_value: real_value ',' real_value | real_list_value ',' real_value | real_value ',' SYM_LIST_CONTINUE real_interval_value: SYM_INTERVAL_DELIM real_value SYM_ELLIPSIS real_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT real_value SYM_ELLIPSIS real_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM real_value SYM_ELLIPSIS SYM_LT real_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT real_value SYM_ELLIPSIS SYM_LT real_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_LT real_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_LE real_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT real_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GE real_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM real_value SYM_INTERVAL_DELIM boolean_value: SYM_TRUE | SYM_FALSE boolean_list_value: boolean_value ',' boolean_value | boolean_list_value ',' boolean_value | boolean_value ',' SYM_LIST_CONTINUE character_value: V_CHARACTER character_list_value: character_value ',' character_value | character_list_value ',' character_value | character_value ',' SYM_LIST_CONTINUE date_value: V_ISO8601_EXTENDED_DATE -- in ISO8601 form yyyy-MM-dd date_list_value: date_value ',' date_value | date_list_value ',' date_value | date_value ',' SYM_LIST_CONTINUE date_interval_value: SYM_INTERVAL_DELIM date_value SYM_ELLIPSIS date_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT date_value SYM_ELLIPSIS date_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM date_value SYM_ELLIPSIS SYM_LT date_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT date_value SYM_ELLIPSIS SYM_LT date_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_LT date_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_LE date_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT date_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GE date_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM date_value SYM_INTERVAL_DELIM time_value: V_ISO8601_EXTENDED_TIME time_list_value: time_value ',' time_value | time_list_value ',' time_value | time_value ',' SYM_LIST_CONTINUE time_interval_value: SYM_INTERVAL_DELIM time_value SYM_ELLIPSIS time_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT time_value SYM_ELLIPSIS time_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM time_value SYM_ELLIPSIS SYM_LT time_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT time_value SYM_ELLIPSIS SYM_LT time_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_LT time_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_LE time_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT time_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GE time_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM time_value SYM_INTERVAL_DELIM date_time_value: V_ISO8601_EXTENDED_DATE_TIME date_time_list_value: date_time_value ',' date_time_value | date_time_list_value ',' date_time_value | date_time_value ',' SYM_LIST_CONTINUE date_time_interval_value: SYM_INTERVAL_DELIM date_time_value SYM_ELLIPSIS date_time_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_ELLIPSIS date_time_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM date_time_value SYM_ELLIPSIS SYM_LT date_time_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_ELLIPSIS SYM_LT date_time_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_LT date_time_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_LE date_time_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GE date_time_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM date_time_value SYM_INTERVAL_DELIM duration_value: V_ISO8601_DURATION duration_list_value: duration_value ',' duration_value | duration_list_value ',' duration_value | duration_value ',' SYM_LIST_CONTINUE duration_interval_value: SYM_INTERVAL_DELIM duration_value SYM_ELLIPSIS duration_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT duration_value SYM_ELLIPSIS duration_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM duration_value SYM_ELLIPSIS SYM_LT duration_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT duration_value SYM_ELLIPSIS SYM_LT duration_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_LT duration_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_LE duration_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GT duration_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM SYM_GE duration_value SYM_INTERVAL_DELIM | SYM_INTERVAL_DELIM duration_value SYM_INTERVAL_DELIM term_code: V_QUALIFIED_TERM_CODE_REF | ERR_V_QUALIFIED_TERM_CODE_REF term_code_list_value: term_code ',' term_code | term_code_list_value ',' term_code | term_code ',' SYM_LIST_CONTINUE uri_value: V_URI