@@ -3618,13 +3618,57 @@ concatenation: '{' expression_brace '}'
36183618 { init ($$, ID_concatenation); swapop ($$, $2 ); }
36193619 ;
36203620
3621- replication :
3621+ multiple_concatenation :
36223622 ' {' expression concatenation ' }'
36233623 { init ($$, ID_replication); mto ($$, $2 ); mto ($$, $3 ); }
3624- | ' {' expression replication ' }'
3624+ | ' {' expression multiple_concatenation ' }'
36253625 { init ($$, ID_replication); mto ($$, $2 ); mto ($$, $3 ); }
36263626 ;
36273627
3628+ streaming_concatenation:
3629+ ' {' stream_operator stream_concatenation ' }'
3630+ { $$ = $2 ; mto ($$, $3 ); }
3631+ | ' {' stream_operator slice_size stream_concatenation ' }'
3632+ { $$ = $2 ; mto ($$, $3 ); mto ($$, $4 ); }
3633+ ;
3634+
3635+ stream_operator:
3636+ TOK_GREATERGREATER
3637+ { init ($$, ID_verilog_streaming_concatenation_left_to_right); }
3638+ | TOK_LESSLESS
3639+ { init ($$, ID_verilog_streaming_concatenation_right_to_left); }
3640+ ;
3641+
3642+ slice_size:
3643+ simple_type
3644+ | primary_literal /* really constant_expression */
3645+ ;
3646+
3647+ stream_concatenation:
3648+ ' {' stream_expression_brace ' }'
3649+ { $$ = $2 ; }
3650+ ;
3651+
3652+ stream_expression_brace:
3653+ stream_expression
3654+ { init ($$); mto ($$, $1 ); }
3655+ | stream_expression_brace ' ,' stream_expression
3656+ { $$ = $1 ; mto ($$, $3 ); }
3657+ ;
3658+
3659+ stream_expression:
3660+ expression
3661+ | expression TOK_WITH ' [' array_range_expression ' ]'
3662+ { init ($$, ID_verilog_array_range); mto ($$, $1 ); mto ($$, $4 ); }
3663+ ;
3664+
3665+ array_range_expression:
3666+ expression
3667+ | expression TOK_COLON expression
3668+ | expression TOK_PLUSCOLON expression
3669+ | expression TOK_MINUSCOLON expression
3670+ ;
3671+
36283672expression_brace_opt:
36293673 /* Optional */
36303674 { make_nil ($$); }
@@ -3835,12 +3879,13 @@ part_select_range:
38353879primary: primary_literal
38363880 | hierarchical_identifier_select
38373881 | concatenation
3838- | replication
3882+ | multiple_concatenation
38393883 | function_subroutine_call
38403884 | ' (' mintypmax_expression ' )'
38413885 { $$ = $2 ; }
38423886 | cast
38433887 | assignment_pattern_expression
3888+ | streaming_concatenation
38443889 | TOK_NULL { init ($$, ID_NULL); }
38453890 | TOK_THIS { init ($$, ID_this); }
38463891 ;
0 commit comments