Match
(vl-parse-simple-type &key (tokstream 'tokstream) (config 'config)) → (mv errmsg? value new-tokstream)
The rule from SystemVerilog-2012 is:
simple_type ::= integer_type | non_integer_type | ps_type_identifier | ps_parameter_identifier
The first two variants are simple and need not be part of the mutual recursion; see vl-parse-very-simple-type. The other two variants are somewhat horribly complex and redundant with one another. After working with these grammar rules, I believe simple_type is equivalent to:
very_simple_type ::= integer_type | non_integer_type pva_tail ::= { '::' identifier [ pva ] } '::' identifier simple_type ::= very_simple_type | 'local' '::' identifier | '$unit' pva_tail | identifier | identifier [ pva ] pva_tail | identifier { [ '[' expression ']' ] '.' identifier }