    0 $accept: module $end
    1 module: embedded_module
    2 embedded_module: imports_optional top_root
    3 imports_optional: imports
    4                 | /* empty */
    5 imports: imports import_item
    6        | import_item
    7 import_item: IMPORT
    8            | EMBEDFILE '@{' embedded_module '@}'
    9 top_root: body
   10         | /* empty */
   11 body: body body_item
   12     | body_item
   13 body_item: namespace_item
   14          | definition
   15          | prototype_declaration
   16 namespace_item: namespace_management
   17               | instance_item_extended
   18               | type_alias
   19 namespace_management: NAMESPACE ID '@{' top_root '@}'
   20                     | OPEN namespace_id RARROW ID ';'
   21                     | OPEN namespace_id ';'
   22 namespace_id: relative_id
   23 definition: defproc
   24           | defdatatype
   25           | defchan
   26           | defenum
   27 prototype_declaration: declare_proc_proto ';'
   28                      | declare_datatype_proto ';'
   29                      | declare_chan_proto ';'
   30                      | declare_enum ';'
   31 type_alias: optional_export optional_template_specification TYPEDEF physical_type_ref ID ';'
   32 template_specification: TEMPLATE template_formal_decl_list_in_angles
   33                       | TEMPLATE template_formal_decl_list_optional_in_angles template_formal_decl_nodefault_list_in_angles
   34 optional_template_specification: template_specification
   35                                | /* empty */
   36 optional_export: EXPORT
   37                | /* empty */
   38 def_or_proc: DEFINE
   39            | DEFPROC
   40 declare_proc_proto: optional_export optional_template_specification def_or_proc ID optional_port_formal_decl_list_in_parens
   41 defproc: declare_proc_proto '@{' optional_definition_body '@}'
   42 optional_port_formal_decl_list_in_parens: '(' port_formal_decl_list ')'
   43                                         | '(' ')'
   44 template_formal_decl_list_in_angles: '<' template_formal_decl_list '>'
   45 template_formal_decl_nodefault_list_in_angles: '<' template_formal_decl_nodefault_list '>'
   46 template_formal_decl_list_optional_in_angles: template_formal_decl_list_in_angles
   47                                             | '<' '>'
   48 template_formal_decl_list: template_formal_decl_list ';' template_formal_decl
   49                          | template_formal_decl
   50 template_formal_decl_nodefault_list: template_formal_decl_nodefault_list ';' template_formal_decl_nodefault
   51                                    | template_formal_decl_nodefault
   52 template_formal_decl: base_param_type template_formal_id_list
   53 template_formal_decl_nodefault: base_param_type template_formal_id_nodefault_list
   54 template_formal_id_list: template_formal_id_list ',' template_formal_id
   55                        | template_formal_id
   56 template_formal_id_nodefault_list: template_formal_id_nodefault_list ',' template_formal_id_nodefault
   57                                  | template_formal_id_nodefault
   58 template_formal_id_default: ID optional_dense_range_list '=' expr
   59 template_formal_id_nodefault: ID optional_dense_range_list
   60 template_formal_id: template_formal_id_default
   61                   | template_formal_id_nodefault
   62 port_formal_decl_list: port_formal_decl_list ';' port_formal_decl
   63                      | port_formal_decl
   64 port_formal_decl: physical_type_ref port_formal_id_list
   65 port_formal_id_list: port_formal_id_list ',' port_formal_id
   66                    | port_formal_id
   67 port_formal_id: ID optional_dense_range_list
   68 generic_type_ref: generic_id strict_relaxed_template_arguments optional_chan_dir
   69 optional_chan_dir: '?'
   70                  | '!'
   71                  | '?' '?'
   72                  | '!' '!'
   73                  | /* empty */
   74 physical_type_ref: generic_type_ref
   75                  | base_chan_type
   76                  | base_data_type_ref
   77 base_data_type_ref: base_data_type strict_relaxed_template_arguments
   78 data_type_ref: base_data_type_ref
   79              | generic_type_ref
   80 type_id: physical_type_ref
   81        | base_param_type
   82 base_param_type: PINT_TYPE
   83                | PBOOL_TYPE
   84                | PREAL_TYPE
   85 base_chan_type: chan_or_port data_type_ref_list_optional_in_parens
   86 chan_or_port: CHANNEL optional_chan_dir
   87 data_type_ref_list_optional_in_parens: '(' data_type_ref_list_optional ')'
   88 data_type_ref_list_optional: data_type_ref_list
   89                            | /* empty */
   90 data_type_ref_list: data_type_ref_list ',' data_type_ref
   91                   | data_type_ref
   92 base_data_type: INT_TYPE
   93               | BOOL_TYPE
   94 declare_datatype_proto: optional_export optional_template_specification DEFTYPE ID DEFINEOP data_type_ref optional_port_formal_decl_list_in_parens
   95 defdatatype: declare_datatype_proto '@{' optional_datatype_body set_body get_body '@}'
   96 set_body: SET '@{' chp_body_optional '@}'
   97 get_body: GET '@{' chp_body_optional '@}'
   98 declare_enum: ENUM ID
   99 defenum: ENUM ID '@{' enum_member_list '@}'
  100 enum_member_list: enum_member_list ',' ID
  101                 | ID
  102 declare_chan_proto: optional_export optional_template_specification DEFCHAN ID DEFINEOP base_chan_type optional_port_formal_decl_list_in_parens
  103 defchan: declare_chan_proto '@{' optional_datatype_body send_body recv_body '@}'
  104 send_body: SEND '@{' chp_body_optional '@}'
  105 recv_body: RECV '@{' chp_body_optional '@}'
  106 definition_body: definition_body definition_body_item
  107                | definition_body_item
  108 definition_body_item: instance_item_extended
  109                     | type_alias
  110 optional_definition_body: definition_body
  111                         | /* empty */
  112 optional_datatype_body: datatype_body
  113                       | /* empty */
  114 datatype_body: datatype_body datatype_body_item
  115              | datatype_body_item
  116 datatype_body_item: connection_body_item
  117                   | lang_spec
  118 connection_body: connection_body connection_body_item
  119                | connection_body_item
  120 connection_body_item_base: connection_statement
  121                          | nonempty_alias_list ';'
  122                          | instance_type_completion_statement
  123                          | instance_type_completion_connection_statement
  124 connection_body_item: connection_body_item_base
  125                     | loop_connections
  126                     | conditional_connections
  127 instance_management_list: instance_management_list instance_item_extended
  128                         | instance_item_extended
  129 instance_item_extended: instance_item
  130                       | language_body
  131 instance_item: type_instance_declaration
  132              | connection_body_item_base
  133              | loop_instantiation
  134              | conditional_instantiation
  135 loop_instantiation: '(' ';' ID ':' range ':' instance_management_list ')'
  136 conditional_instantiation: '[' guarded_instance_management_list ']'
  137 loop_connections: '(' ';' ID ':' range ':' connection_body ')'
  138 conditional_connections: '[' guarded_connection_body ']'
  139 type_instance_declaration: type_id instance_id_list ';'
  140 instance_id_list: instance_id_list ',' instance_id_item
  141                 | instance_id_item
  142 instance_id_item: ID optional_template_arguments_in_angles sparse_range_list
  143                 | ID optional_template_arguments_in_angles
  144                 | ID optional_template_arguments_in_angles connection_actuals_list
  145                 | ID optional_template_arguments_in_angles '=' alias_list
  146 connection_statement: member_index_expr connection_actuals_list ';'
  147 instance_type_completion_statement: index_expr complex_expr_optional_list_in_angles ';'
  148                                   | generic_id complex_expr_optional_list_in_angles ';'
  149 instance_type_completion_connection_statement: index_expr complex_expr_optional_list_in_angles connection_actuals_list ';'
  150                                              | generic_id complex_expr_optional_list_in_angles connection_actuals_list ';'
  151 nonempty_alias_list: nonempty_alias_list '=' complex_aggregate_reference
  152                    | complex_aggregate_reference '=' complex_aggregate_reference
  153 alias_list: alias_list '=' complex_aggregate_reference
  154           | complex_aggregate_reference
  155 connection_actuals_list: '(' complex_aggregate_reference_list ')'
  156 guarded_instance_management_list: guarded_instance_management_list_unmatched THICKBAR instance_management_else_clause
  157                                 | guarded_instance_management_list_unmatched
  158 guarded_instance_management_list_unmatched: guarded_instance_management_list_unmatched THICKBAR guarded_instance_management
  159                                           | guarded_instance_management
  160 guarded_instance_management: expr RARROW instance_management_list
  161 instance_management_else_clause: ELSE RARROW instance_management_list
  162 guarded_connection_body: guarded_connection_body_unmatched THICKBAR connection_body_else_clause
  163                        | guarded_connection_body_unmatched
  164 guarded_connection_body_unmatched: guarded_connection_body_unmatched THICKBAR guarded_connection_body_clause
  165                                  | guarded_connection_body_clause
  166 guarded_connection_body_clause: expr RARROW connection_body
  167 connection_body_else_clause: ELSE RARROW connection_body
  168 language_body: CHP_LANG '@{' chp_body_optional '@}'
  169              | HSE_LANG '@{' hse_body_optional '@}'
  170              | PRS_LANG optional_template_arguments_in_angles '@{' prs_body_optional '@}'
  171              | lang_spec
  172 lang_spec: SPEC_LANG '@{' spec_body_optional '@}'
  173 chp_body: full_chp_body_item_list
  174 chp_body_optional: chp_body
  175                  | /* empty */
  176 chp_body_or_skip: chp_body
  177                 | SKIP
  178 chp_sequence_group: '@{' full_chp_body_item_list '@}'
  179 full_chp_body_item_list: full_chp_body_item_list ';' full_chp_body_item
  180                        | full_chp_body_item
  181 full_chp_body_item: chp_concurrent_group
  182 chp_body_item: chp_statement_attributes chp_statement
  183              | chp_statement
  184 chp_statement_attributes: '$' '(' chp_statement_attr_list ')'
  185 chp_statement_attr_list: chp_statement_attr_list ';' chp_statement_attr
  186                        | chp_statement_attr
  187 chp_statement_attr: ID '=' expr
  188 chp_statement: chp_loop
  189              | chp_do_until
  190              | chp_selection
  191              | chp_wait
  192              | chp_binary_assignment
  193              | chp_bool_assignment
  194              | chp_send
  195              | chp_recv
  196              | chp_peek
  197              | LOG expr_list_in_parens
  198              | chp_metaloop_selection
  199              | chp_metaloop_statement
  200              | function_call_expr
  201 chp_loop: BEGINLOOP chp_body ']'
  202 chp_do_until: BEGINLOOP chp_unmatched_det_guarded_command_list ']'
  203 chp_wait: '[' chp_guard_expr ']'
  204 chp_selection: '[' chp_matched_det_guarded_command_list ']'
  205              | '[' chp_nondet_guarded_command_list ']'
  206 chp_metaloop_selection: '[' ':' ID ':' range ':' chp_guarded_command ']'
  207                       | '[' THICKBAR ID ':' range ':' chp_guarded_command ']'
  208 chp_metaloop_statement: '@{' ',' ID ':' range ':' chp_body '@}'
  209                       | '@{' ';' ID ':' range ':' chp_body '@}'
  210 chp_nondet_guarded_command_list: chp_nondet_guarded_command_list ':' chp_guarded_command
  211                                | chp_guarded_command ':' chp_guarded_command
  212 chp_matched_det_guarded_command_list: chp_unmatched_det_guarded_command_list THICKBAR chp_else_clause
  213                                     | chp_unmatched_det_guarded_command_list
  214 chp_unmatched_det_guarded_command_list: chp_unmatched_det_guarded_command_list THICKBAR chp_guarded_command
  215                                       | chp_guarded_command
  216 chp_guarded_command: chp_guard_expr RARROW chp_body_or_skip
  217 chp_guard_expr: chp_logical_or_expr
  218 chp_unary_bool_expr: chp_simple_bool_expr
  219                    | chp_not_expr
  220                    | '(' chp_logical_or_expr ')'
  221                    | chp_probe_expr
  222                    | function_call_expr
  223 chp_probe_expr: '#' member_index_expr
  224 chp_simple_bool_expr: member_index_expr
  225                     | BOOL_TRUE
  226                     | BOOL_FALSE
  227 chp_unary_expr: '-' chp_unary_expr
  228               | chp_unary_bool_expr
  229               | loop_expr
  230               | INT
  231               | FLOAT
  232 chp_mult_expr: chp_unary_expr
  233              | chp_mult_expr muldiv_op chp_unary_expr
  234 chp_add_expr: chp_mult_expr
  235             | chp_add_expr_only
  236 chp_add_expr_only: chp_add_expr '+' chp_mult_expr
  237                  | chp_add_expr '-' chp_mult_expr
  238 chp_paren_add_expr: '(' chp_add_expr_only ')'
  239                   | chp_mult_expr
  240 chp_shift_expr: chp_paren_add_expr
  241               | chp_shift_expr EXTRACT chp_add_expr
  242               | chp_shift_expr INSERT chp_add_expr
  243 chp_relational_expr: chp_shift_expr relational_op chp_shift_expr
  244                    | chp_unary_bool_expr
  245 chp_bitwise_and_expr: chp_relational_expr
  246                     | chp_bitwise_and_expr '&' chp_relational_expr
  247 chp_bitwise_xor_expr: chp_bitwise_and_expr
  248                     | chp_bitwise_xor_expr '^' chp_bitwise_and_expr
  249 chp_bitwise_or_expr: chp_bitwise_xor_expr
  250                    | chp_bitwise_or_expr '|' chp_bitwise_xor_expr
  251 chp_logical_and_expr: chp_bitwise_or_expr
  252                     | chp_logical_and_expr LOGICAL_AND chp_bitwise_or_expr
  253 chp_logical_or_expr: chp_logical_and_expr
  254                    | chp_logical_or_expr LOGICAL_OR chp_logical_and_expr
  255 chp_not_expr: '~' chp_unary_bool_expr
  256 chp_else_clause: ELSE RARROW chp_body_or_skip
  257 chp_binary_assignment: member_index_expr ASSIGN expr
  258 chp_bool_assignment: member_index_expr '+'
  259                    | member_index_expr '-'
  260 chp_concurrent_item: chp_body_item
  261                    | chp_sequence_group
  262 chp_concurrent_group: chp_concurrent_group ',' chp_concurrent_item
  263                     | chp_concurrent_item
  264 chp_send: member_index_expr '!' connection_actuals_list
  265         | member_index_expr '!'
  266 chp_recv: member_index_expr '?' member_index_expr_list_in_parens_optional
  267 chp_peek: member_index_expr '#' member_index_expr_list_in_parens
  268 hse_body_optional: hse_body
  269                  | /* empty */
  270 hse_body: full_hse_body_item_list
  271 full_hse_body_item_list: full_hse_body_item_list ';' full_hse_body_item
  272                        | full_hse_body_item
  273 full_hse_body_item: hse_body_item
  274 hse_body_item: hse_loop
  275              | hse_do_until
  276              | hse_wait
  277              | hse_selection
  278              | hse_assignment
  279              | SKIP
  280 hse_loop: BEGINLOOP hse_body ']'
  281 hse_do_until: BEGINLOOP hse_matched_det_guarded_command_list ']'
  282 hse_wait: '[' expr ']'
  283 hse_selection: '[' hse_matched_det_guarded_command_list ']'
  284              | '[' hse_nondet_guarded_command_list ']'
  285 hse_guarded_command: expr RARROW hse_body
  286 hse_else_clause: ELSE RARROW hse_body
  287 hse_nondet_guarded_command_list: hse_nondet_guarded_command_list ':' hse_guarded_command
  288                                | hse_guarded_command ':' hse_guarded_command
  289 hse_matched_det_guarded_command_list: hse_unmatched_det_guarded_command_list THICKBAR hse_else_clause
  290                                     | hse_unmatched_det_guarded_command_list
  291 hse_unmatched_det_guarded_command_list: hse_unmatched_det_guarded_command_list THICKBAR hse_guarded_command
  292                                       | hse_guarded_command
  293 hse_assignment: unary_assignment
  294 prs_body_optional: prs_body
  295                  | /* empty */
  296 prs_body: prs_body prs_body_item
  297         | prs_body_item
  298 prs_body_item: single_prs
  299              | prs_loop
  300              | prs_conditional
  301              | prs_macro
  302              | TREE_LANG optional_template_arguments_in_angles '@{' prs_body_optional '@}'
  303              | SUBCKT_LANG optional_template_arguments_in_angles '@{' prs_body_optional '@}'
  304 prs_macro: prs_literal mandatory_member_index_expr_list_in_parens
  305 prs_loop: '(' ':' ID ':' range ':' prs_body ')'
  306 prs_conditional: '[' prs_guarded_list ']'
  307 prs_guarded_list: prs_guarded_list_unmatched THICKBAR prs_else_clause
  308                 | prs_guarded_list_unmatched
  309 prs_guarded_list_unmatched: prs_guarded_list_unmatched THICKBAR prs_guarded_body
  310                           | prs_guarded_body
  311 prs_guarded_body: expr RARROW prs_body_optional
  312 prs_else_clause: ELSE RARROW prs_body
  313 single_prs: prs_rule_attribute_list_in_brackets prs_expr prs_arrow prs_literal_base dir
  314           | prs_expr prs_arrow prs_literal_base dir
  315 prs_rule_attribute_list_in_brackets: '[' prs_rule_attribute_list ']'
  316 prs_rule_attribute_list: prs_rule_attribute_list ';' prs_rule_attribute
  317                        | prs_rule_attribute
  318 prs_rule_attribute: ID '=' expr_list
  319 prs_arrow: RARROW
  320          | IMPLIES
  321          | HASH_ARROW
  322 dir: '+'
  323    | '-'
  324 prs_expr: prs_or
  325 prs_paren_expr: '(' prs_expr ')'
  326 prs_literal_base: relative_member_index_expr
  327                 | '@@' ID optional_dense_range_list
  328 prs_literal: prs_literal_base expr_list_in_angles_optional
  329 prs_unary_expr: prs_literal
  330               | prs_paren_expr
  331               | prs_and_loop
  332               | prs_or_loop
  333 prs_not: '~' prs_unary_expr
  334        | prs_unary_expr
  335 prs_and: prs_and '&' prs_operator_attribute_optional prs_not
  336        | prs_not
  337 prs_or: prs_or '|' prs_and
  338       | prs_and
  339 prs_operator_attribute: '@{' dir prs_expr '@}'
  340 prs_operator_attribute_optional: prs_operator_attribute
  341                                | /* empty */
  342 prs_and_loop: '(' '&' ':' ID ':' range ':' prs_expr ')'
  343 prs_or_loop: '(' '|' ':' ID ':' range ':' prs_expr ')'
  344 spec_body_optional: spec_body
  345                   | /* empty */
  346 spec_body: spec_body spec_item
  347          | spec_item
  348 spec_item: spec_directive
  349 spec_directive: ID expr_list_in_angles_optional grouped_reference_list_in_parens
  350 grouped_reference_list_in_parens: '(' grouped_reference_list ')'
  351 grouped_reference_list: grouped_reference_list ',' grouped_reference
  352                       | grouped_reference
  353 grouped_reference: '@{' mandatory_member_index_expr_list '@}'
  354                  | member_index_expr
  355 paren_expr: '(' expr ')'
  356 literal: INT
  357        | FLOAT
  358        | string
  359        | BOOL_TRUE
  360        | BOOL_FALSE
  361 string: string STRING
  362       | STRING
  363 id_expr: generic_id
  364 generic_id: relative_id
  365           | absolute_id
  366 absolute_id: SCOPE relative_id
  367 relative_id: qualified_id
  368            | ID
  369 qualified_id: qualified_id SCOPE ID
  370             | ID SCOPE ID
  371 mandatory_member_index_expr_list_in_parens: '(' mandatory_member_index_expr_list ')'
  372 mandatory_member_index_expr_list: mandatory_member_index_expr_list ',' member_index_expr
  373                                 | member_index_expr
  374 member_index_expr_list: member_index_expr_list ',' optional_member_index_expr
  375                       | optional_member_index_expr
  376 optional_member_index_expr: member_index_expr
  377                           | /* empty */
  378 member_index_expr: id_expr
  379                  | index_expr
  380                  | member_expr
  381 relative_member_index_expr: ID
  382                           | local_index_expr
  383                           | local_member_expr
  384 local_index_expr: local_member_expr sparse_range_list
  385                 | ID sparse_range_list
  389 index_expr: member_expr sparse_range_list
  390           | id_expr sparse_range_list
  394 simple_expr: member_index_expr
  395            | literal
  396 unary_expr: simple_expr
  397           | function_call_expr
  398           | paren_expr
  399           | loop_expr
  400           | '-' unary_expr
  401           | '!' unary_expr
  402           | '~' unary_expr
  403 function_call_expr: member_index_expr connection_actuals_list
  404 multiplicative_expr: unary_expr
  405                    | multiplicative_expr muldiv_op unary_expr
  406 muldiv_op: '*'
  407          | '/'
  408          | '%'
  409 additive_expr: multiplicative_expr
  410              | additive_expr '+' multiplicative_expr
  411              | additive_expr '-' multiplicative_expr
  412 shift_expr: additive_expr
  413           | shift_expr EXTRACT additive_expr
  414           | shift_expr INSERT additive_expr
  415 relational_equality_expr: shift_expr
  416                         | '(' relational_equality_expr '<' shift_expr ')'
  417                         | '(' relational_equality_expr '>' shift_expr ')'
  418                         | relational_equality_expr LE shift_expr
  419                         | relational_equality_expr GE shift_expr
  420                         | relational_equality_expr EQUAL shift_expr
  421                         | relational_equality_expr NOTEQUAL shift_expr
  422                         | '(' relational_equality_expr '=' shift_expr ')'
  423 relational_op: '<'
  424              | '>'
  425              | LE
  426              | GE
  427              | EQUAL
  428              | NOTEQUAL
  429 and_expr: relational_equality_expr
  430         | and_expr '&' relational_equality_expr
  431 exclusive_or_expr: and_expr
  432                  | exclusive_or_expr '^' and_expr
  433 inclusive_or_expr: exclusive_or_expr
  434                  | inclusive_or_expr '|' exclusive_or_expr
  435 logical_and_expr: inclusive_or_expr
  436                 | logical_and_expr LOGICAL_AND inclusive_or_expr
  437 logical_or_expr: logical_and_expr
  438                | logical_or_expr LOGICAL_OR logical_and_expr
  439 unary_assignment: member_index_expr PLUSPLUS
  440                 | member_index_expr MINUSMINUS
  441 loop_expr: '(' loop_assoc_op ':' ID ':' range ':' expr ')'
  442 loop_assoc_op: '+'
  443              | '*'
  444              | '&'
  445              | '|'
  446              | '^'
  447              | LOGICAL_AND
  448              | LOGICAL_OR
  449 expr: logical_or_expr
  450 strict_relaxed_template_arguments: complex_expr_optional_list_in_angles optional_template_arguments_in_angles
  451                                  | /* empty */
  452 optional_template_arguments_in_angles: complex_expr_optional_list_in_angles
  453                                      | /* empty */
  454 expr_list_in_angles_optional: expr_list_in_angles
  455                             | /* empty */
  456 expr_list_in_angles: '<' expr_list '>'
  457 complex_expr_optional_list_in_angles: '<' complex_expr_optional_list '>'
  458 complex_expr_optional_list: complex_expr_optional_list ',' optional_complex_expr
  459                           | optional_complex_expr
  460 optional_complex_expr: array_concatenation
  461                      | /* empty */
  462 member_index_expr_list_in_parens_optional: member_index_expr_list_in_parens
  463                                          | /* empty */
  464 member_index_expr_list_in_parens: '(' member_index_expr_list ')'
  465 expr_list_in_parens: '(' expr_list ')'
  466 expr_list: expr_list ',' expr
  467          | expr
  468 range: expr RANGE expr
  469      | expr
  470 optional_dense_range_list: dense_range_list
  471                          | /* empty */
  472 dense_range_list: dense_range_list bracketed_dense_range
  473                 | bracketed_dense_range
  474 sparse_range_list: sparse_range_list bracketed_sparse_range
  475                  | bracketed_sparse_range
  476 bracketed_dense_range: '[' expr ']'
  477 bracketed_sparse_range: '[' range ']'
  478 complex_aggregate_reference: array_concatenation
  479 array_concatenation: array_concatenation '#' complex_expr_term
  480                    | complex_expr_term
  481 complex_expr_term: array_construction
  482                  | expr
  483 array_construction: '@{' mandatory_complex_aggregate_reference_list '@}'
  484 optional_complex_aggregate_reference: complex_aggregate_reference
  485                                     | /* empty */
  486 mandatory_complex_aggregate_reference_list: mandatory_complex_aggregate_reference_list ',' complex_aggregate_reference
  487                                           | complex_aggregate_reference
  488 complex_aggregate_reference_list: complex_aggregate_reference_list ',' optional_complex_aggregate_reference
  489                                 | optional_complex_aggregate_reference
