@@ -536,8 +536,9 @@ int yyverilogerror(const char *error)
536
536
537
537
/* Others */
538
538
%token TOK_ENDOFFILE
539
- %token TOK_NON_TYPE_IDENTIFIER
540
- %token TOK_TYPE_IDENTIFIER
539
+ %token TOK_IDENTIFIER
540
+ %token TOK_IDENTIFIER_PACKAGE
541
+ %token TOK_IDENTIFIER_TYPE
541
542
%token TOK_NUMBER // number , any base
542
543
%token TOK_TIME_LITERAL // number followed by time unit
543
544
%token TOK_QSTRING // quoted string
@@ -1447,8 +1448,7 @@ type_declaration:
1447
1448
data_type any_identifier ' ;'
1448
1449
{ $$ = $2 ;
1449
1450
// add to the scope as a type name
1450
- auto &name = PARSER.scopes .add_name (stack_expr ($4 ).get (ID_identifier), " " , verilog_scopet::TYPEDEF);
1451
- name.is_type = true ;
1451
+ PARSER.scopes .add_name (stack_expr ($4 ).get (ID_identifier), " " , verilog_scopet::TYPEDEF);
1452
1452
addswap ($$, ID_type, $3 );
1453
1453
stack_expr ($4 ).id (ID_declarator);
1454
1454
mto ($$, $4 );
@@ -1537,7 +1537,7 @@ data_type:
1537
1537
1538
1538
// We attach a dummy id to distinguish two syntactically
1539
1539
// identical enum types.
1540
- auto id = PARSER.scopes .current_scope -> prefix + " enum-" + PARSER.get_next_id ();
1540
+ auto id = PARSER.scopes .current_scope (). prefix + " enum-" + PARSER.get_next_id ();
1541
1541
stack_expr ($$).set (ID_identifier, id);
1542
1542
}
1543
1543
| TOK_STRING
@@ -1568,7 +1568,7 @@ enum_name_value_opt:
1568
1568
;
1569
1569
1570
1570
enum_name_declaration:
1571
- TOK_NON_TYPE_IDENTIFIER enum_name_value_opt
1571
+ TOK_IDENTIFIER enum_name_value_opt
1572
1572
{
1573
1573
init ($$);
1574
1574
auto &scope = PARSER.scopes .add_name (stack_expr ($1 ).id (), " " , verilog_scopet::ENUM_NAME);
@@ -2315,8 +2315,8 @@ smv_assertion_statement:
2315
2315
;
2316
2316
2317
2317
smv_property_identifier_list:
2318
- TOK_NON_TYPE_IDENTIFIER
2319
- | smv_property_identifier_list ' ,' TOK_NON_TYPE_IDENTIFIER
2318
+ TOK_IDENTIFIER
2319
+ | smv_property_identifier_list ' ,' TOK_IDENTIFIER
2320
2320
;
2321
2321
2322
2322
smv_using:
@@ -2901,7 +2901,7 @@ name_of_gate_instance_opt:
2901
2901
| name_of_gate_instance
2902
2902
;
2903
2903
2904
- name_of_gate_instance: TOK_NON_TYPE_IDENTIFIER ;
2904
+ name_of_gate_instance: TOK_IDENTIFIER ;
2905
2905
2906
2906
// System Verilog standard 1800-2017
2907
2907
// A.4.1.1 Module instantiation
@@ -2971,7 +2971,7 @@ module_instance:
2971
2971
2972
2972
name_of_instance:
2973
2973
{ init ($$, " $_&#ANON" + PARSER.get_next_id ());}
2974
- | TOK_NON_TYPE_IDENTIFIER
2974
+ | TOK_IDENTIFIER
2975
2975
;
2976
2976
2977
2977
list_of_module_connections_opt:
@@ -4224,10 +4224,19 @@ part_select_range:
4224
4224
4225
4225
primary: primary_literal
4226
4226
| hierarchical_identifier_select
4227
- | package_scope hierarchical_identifier_select
4228
- { init ($$, ID_verilog_package_scope);
4227
+ | package_scope
4228
+ {
4229
+ init ($$, ID_verilog_package_scope);
4230
+ // enter that scope
4231
+ PARSER.scopes .enter_package_scope (stack_expr ($1 ).id ());
4229
4232
mto ($$, $1 );
4230
- mto ($$, $2 ); }
4233
+ }
4234
+ hierarchical_identifier_select
4235
+ { $$ = $2 ;
4236
+ mto ($$, $3 );
4237
+ // exit the scope
4238
+ pop_scope ();
4239
+ }
4231
4240
| concatenation
4232
4241
| multiple_concatenation
4233
4242
| function_subroutine_call
@@ -4372,15 +4381,15 @@ any_identifier:
4372
4381
| non_type_identifier
4373
4382
;
4374
4383
4375
- non_type_identifier: TOK_NON_TYPE_IDENTIFIER
4384
+ non_type_identifier: TOK_IDENTIFIER
4376
4385
{ new_symbol ($$, $1 ); }
4377
4386
;
4378
4387
4379
- block_identifier: TOK_NON_TYPE_IDENTIFIER ;
4388
+ block_identifier: TOK_IDENTIFIER ;
4380
4389
4381
- class_identifier: TOK_NON_TYPE_IDENTIFIER ;
4390
+ class_identifier: TOK_IDENTIFIER ;
4382
4391
4383
- constraint_identifier: TOK_NON_TYPE_IDENTIFIER ;
4392
+ constraint_identifier: TOK_IDENTIFIER ;
4384
4393
4385
4394
edge_identifier: identifier;
4386
4395
@@ -4391,27 +4400,27 @@ genvar_identifier: identifier;
4391
4400
hierarchical_parameter_identifier: hierarchical_identifier
4392
4401
;
4393
4402
4394
- interface_identifier: TOK_NON_TYPE_IDENTIFIER ;
4403
+ interface_identifier: TOK_IDENTIFIER ;
4395
4404
4396
- module_identifier: TOK_NON_TYPE_IDENTIFIER ;
4405
+ module_identifier: TOK_IDENTIFIER ;
4397
4406
4398
4407
endmodule_identifier_opt:
4399
4408
/* Optional */
4400
4409
| TOK_COLON module_identifier
4401
4410
;
4402
4411
4403
- clocking_identifier: TOK_NON_TYPE_IDENTIFIER ;
4412
+ clocking_identifier: TOK_IDENTIFIER ;
4404
4413
4405
- checker_identifier: TOK_NON_TYPE_IDENTIFIER ;
4414
+ checker_identifier: TOK_IDENTIFIER ;
4406
4415
4407
4416
net_identifier: identifier;
4408
4417
4409
- package_identifier: TOK_NON_TYPE_IDENTIFIER ;
4418
+ package_identifier: TOK_IDENTIFIER ;
4410
4419
4411
4420
package_scope: package_identifier " ::"
4412
4421
;
4413
4422
4414
- param_identifier: TOK_NON_TYPE_IDENTIFIER ;
4423
+ param_identifier: TOK_IDENTIFIER ;
4415
4424
4416
4425
port_identifier: identifier;
4417
4426
@@ -4424,22 +4433,22 @@ method_identifier: identifier;
4424
4433
4425
4434
signal_identifier: identifier;
4426
4435
4427
- type_identifier: TOK_TYPE_IDENTIFIER
4436
+ type_identifier: TOK_IDENTIFIER_TYPE
4428
4437
{
4429
4438
init ($$, ID_typedef_type);
4430
4439
auto base_name = stack_expr ($1 ).id ();
4431
4440
stack_expr ($$).set (ID_base_name, base_name);
4432
- stack_expr ($$).set (ID_identifier, PARSER.scopes .current_scope -> prefix +id2string (base_name));
4441
+ stack_expr ($$).set (ID_identifier, PARSER.scopes .current_scope (). prefix +id2string (base_name));
4433
4442
}
4434
4443
;
4435
4444
4436
4445
ps_type_identifier: type_identifier;
4437
4446
4438
- parameter_identifier: TOK_NON_TYPE_IDENTIFIER ;
4447
+ parameter_identifier: TOK_IDENTIFIER ;
4439
4448
4440
- generate_block_identifier: TOK_NON_TYPE_IDENTIFIER ;
4449
+ generate_block_identifier: TOK_IDENTIFIER ;
4441
4450
4442
- udp_identifier: TOK_NON_TYPE_IDENTIFIER ;
4451
+ udp_identifier: TOK_IDENTIFIER ;
4443
4452
4444
4453
task_identifier: hierarchical_identifier
4445
4454
;
@@ -4450,7 +4459,7 @@ hierarchical_task_or_block_identifier: task_identifier;
4450
4459
4451
4460
hierarchical_tf_identifier: hierarchical_identifier;
4452
4461
4453
- specparam_identifier: TOK_NON_TYPE_IDENTIFIER ;
4462
+ specparam_identifier: TOK_IDENTIFIER ;
4454
4463
4455
4464
function_identifier: hierarchical_identifier
4456
4465
;
@@ -4473,9 +4482,9 @@ hierarchical_variable_identifier: hierarchical_identifier;
4473
4482
4474
4483
identifier: non_type_identifier;
4475
4484
4476
- property_identifier: TOK_NON_TYPE_IDENTIFIER ;
4485
+ property_identifier: TOK_IDENTIFIER ;
4477
4486
4478
- sequence_identifier: TOK_NON_TYPE_IDENTIFIER ;
4487
+ sequence_identifier: TOK_IDENTIFIER ;
4479
4488
4480
4489
variable_identifier: identifier;
4481
4490
0 commit comments