Match single, multiple, or streaming concatenations, or empty queues.
(vl-parse-any-sort-of-concatenation &key (tokstream 'tokstream)
(config 'config))
→
(mv errmsg? value new-tokstream)Both Verilog-2005 and SystemVerilog-2012 agree on the syntax for concatenations and multiple concatenations:
concatenation ::= '{' expression { ',' expression } '}'
multiple_concatenation ::= '{' expression concatenation '}'
By itself this is slightly tricky to parse: we don't know which production
we're matching until we have read the initial
SystemVerilog-2012 complicates this by adding streaming concatenations:
streaming_concatenation ::=
'{' stream_operator [slice_size] stream_concatenation '}'
stream_operator ::= '>>' | '<<'
Fortunately, streaming concatenations are easy to identify because they
always start with one of these
SystemVerilog also adds empty queues which are easy to identify:
empty_queue ::= '{' '}'