Support discipline and nature names shadowing type identifiers

Verilog-AMS nature and discipline declarations can use names that are also
visible as type identifiers. The `potential` and `flow` discipline items can
likewise reference a nature whose name is returned as `TYPE_IDENTIFIER` by the
lexer. These grammar positions currently only accept `IDENTIFIER`.

Use `identifier_name` for nature and discipline declaration names and for the
`potential` and `flow` nature references.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
This commit is contained in:
Lars-Peter Clausen 2026-07-10 07:50:06 -07:00
parent a540a7a163
commit 1d623a67d1
1 changed files with 4 additions and 4 deletions

View File

@ -3614,7 +3614,7 @@ delay_value_simple
optional_semicolon : ';' | ; optional_semicolon : ';' | ;
discipline_declaration discipline_declaration
: K_discipline IDENTIFIER optional_semicolon : K_discipline identifier_name optional_semicolon
{ pform_start_discipline($2); } { pform_start_discipline($2); }
discipline_items K_enddiscipline discipline_items K_enddiscipline
{ pform_end_discipline(@1); delete[] $2; } { pform_end_discipline(@1); delete[] $2; }
@ -3630,14 +3630,14 @@ discipline_item
{ pform_discipline_domain(@1, IVL_DIS_DISCRETE); } { pform_discipline_domain(@1, IVL_DIS_DISCRETE); }
| K_domain K_continuous ';' | K_domain K_continuous ';'
{ pform_discipline_domain(@1, IVL_DIS_CONTINUOUS); } { pform_discipline_domain(@1, IVL_DIS_CONTINUOUS); }
| K_potential IDENTIFIER ';' | K_potential identifier_name ';'
{ pform_discipline_potential(@1, $2); delete[] $2; } { pform_discipline_potential(@1, $2); delete[] $2; }
| K_flow IDENTIFIER ';' | K_flow identifier_name ';'
{ pform_discipline_flow(@1, $2); delete[] $2; } { pform_discipline_flow(@1, $2); delete[] $2; }
; ;
nature_declaration nature_declaration
: K_nature IDENTIFIER optional_semicolon : K_nature identifier_name optional_semicolon
{ pform_start_nature($2); } { pform_start_nature($2); }
nature_items nature_items
K_endnature K_endnature