@@ -537,6 +537,7 @@ int yyverilogerror(const char *error)
537537/* Others */
538538%token TOK_ENDOFFILE
539539%token TOK_NON_TYPE_IDENTIFIER
540+ %token TOK_CLASS_IDENTIFIER
540541%token TOK_PACKAGE_IDENTIFIER
541542%token TOK_TYPE_IDENTIFIER
542543%token TOK_NUMBER // number , any base
@@ -819,12 +820,13 @@ checker_port_direction_opt:
819820 ;
820821
821822class_declaration:
822- TOK_CLASS class_identifier
823+ TOK_CLASS any_identifier
823824 ' ;'
824825 {
825826 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);
828830 }
829831 class_item_brace
830832 TOK_ENDCLASS
@@ -1553,7 +1555,7 @@ data_type:
15531555 { mto ($1 , $2 );
15541556 add_as_subtype (stack_type ($3 ), stack_type ($1 ));
15551557 $$ = $3 ; }
1556- // | class_type
1558+ | class_type
15571559 | TOK_EVENT
15581560 { init ($$, ID_verilog_event); }
15591561 /*
@@ -2033,6 +2035,9 @@ variable_decl_assignment:
20332035 addswap ($$, ID_type, $2 );
20342036 addswap ($$, ID_value, $4 ); }
20352037 | variable_identifier variable_dimension_brace ' =' class_new
2038+ { $$ = $1 ; stack_expr ($$).id (ID_declarator);
2039+ addswap ($$, ID_type, $2 );
2040+ addswap ($$, ID_value, $4 ); }
20362041 ;
20372042
20382043class_new:
@@ -4383,7 +4388,14 @@ non_type_identifier: TOK_NON_TYPE_IDENTIFIER
43834388
43844389block_identifier: TOK_NON_TYPE_IDENTIFIER;
43854390
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+ ;
43874399
43884400constraint_identifier: TOK_NON_TYPE_IDENTIFIER;
43894401
0 commit comments