@@ -537,6 +537,7 @@ int yyverilogerror(const char *error)
537
537
/* Others */
538
538
%token TOK_ENDOFFILE
539
539
%token TOK_NON_TYPE_IDENTIFIER
540
+ %token TOK_CLASS_IDENTIFIER
540
541
%token TOK_PACKAGE_IDENTIFIER
541
542
%token TOK_TYPE_IDENTIFIER
542
543
%token TOK_NUMBER // number , any base
@@ -819,12 +820,13 @@ checker_port_direction_opt:
819
820
;
820
821
821
822
class_declaration:
822
- TOK_CLASS class_identifier
823
+ TOK_CLASS any_identifier
823
824
' ;'
824
825
{
825
826
init ($$, ID_verilog_class);
826
- stack_expr ($$).set (ID_base_name, stack_expr ($2 ).id ());
827
- push_scope (stack_expr ($2 ).id (), " ::" , verilog_scopet::CLASS);
827
+ auto base_name = stack_expr ($2 ).get (ID_base_name);
828
+ stack_expr ($$).set (ID_base_name, base_name);
829
+ push_scope (base_name, " ::" , verilog_scopet::CLASS);
828
830
}
829
831
class_item_brace
830
832
TOK_ENDCLASS
@@ -1553,7 +1555,7 @@ data_type:
1553
1555
{ mto ($1 , $2 );
1554
1556
add_as_subtype (stack_type ($3 ), stack_type ($1 ));
1555
1557
$$ = $3 ; }
1556
- // | class_type
1558
+ | class_type
1557
1559
| TOK_EVENT
1558
1560
{ init ($$, ID_verilog_event); }
1559
1561
/*
@@ -2033,6 +2035,9 @@ variable_decl_assignment:
2033
2035
addswap ($$, ID_type, $2 );
2034
2036
addswap ($$, ID_value, $4 ); }
2035
2037
| variable_identifier variable_dimension_brace ' =' class_new
2038
+ { $$ = $1 ; stack_expr ($$).id (ID_declarator);
2039
+ addswap ($$, ID_type, $2 );
2040
+ addswap ($$, ID_value, $4 ); }
2036
2041
;
2037
2042
2038
2043
class_new:
@@ -4383,7 +4388,14 @@ non_type_identifier: TOK_NON_TYPE_IDENTIFIER
4383
4388
4384
4389
block_identifier: TOK_NON_TYPE_IDENTIFIER;
4385
4390
4386
- class_identifier: TOK_NON_TYPE_IDENTIFIER;
4391
+ class_identifier: TOK_CLASS_IDENTIFIER
4392
+ {
4393
+ init ($$, ID_verilog_class_type);
4394
+ auto base_name = stack_expr ($1 ).id ();
4395
+ stack_expr ($$).set (ID_base_name, base_name);
4396
+ stack_expr ($$).set (ID_identifier, PARSER.scopes .current_scope ().prefix +id2string (base_name));
4397
+ }
4398
+ ;
4387
4399
4388
4400
constraint_identifier: TOK_NON_TYPE_IDENTIFIER;
4389
4401
0 commit comments