Skip to content

Commit 8b0ce05

Browse files
authored
Merge pull request #261 from diffblue/verilog-identifier-token
Verilog: rename token for identifiers
2 parents a315ea3 + 6ca16b4 commit 8b0ce05

File tree

2 files changed

+25
-39
lines changed

2 files changed

+25
-39
lines changed

src/verilog/parser.y

Lines changed: 23 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,7 @@ int yyverilogerror(const char *error)
541541

542542
/* Others */
543543
%token TOK_ENDOFFILE
544-
%token TOK_CHARSTR
544+
%token TOK_NON_TYPE_IDENTIFIER
545545
%token TOK_NUMBER // number, any base
546546
%token TOK_TIME_LITERAL // number followed by time unit
547547
%token TOK_QSTRING // quoted string
@@ -1040,7 +1040,7 @@ data_type:
10401040
;
10411041

10421042
enum_name_declaration:
1043-
TOK_CHARSTR
1043+
TOK_NON_TYPE_IDENTIFIER
10441044
;
10451045

10461046
enum_name_declaration_list:
@@ -1767,7 +1767,7 @@ name_of_gate_instance_opt:
17671767
| name_of_gate_instance
17681768
;
17691769

1770-
name_of_gate_instance: TOK_CHARSTR;
1770+
name_of_gate_instance: TOK_NON_TYPE_IDENTIFIER;
17711771

17721772
// System Verilog standard 1800-2017
17731773
// A.4.1.1 Module instantiation
@@ -1829,9 +1829,10 @@ module_instance:
18291829
{ init($$, ID_inst); addswap($$, ID_instance, $1); swapop($$, $3); }
18301830
;
18311831

1832-
name_of_instance: { init($$, "$_&#ANON" + PARSER.get_dummy_id());}
1833-
|
1834-
TOK_CHARSTR;
1832+
name_of_instance:
1833+
{ init($$, "$_&#ANON" + PARSER.get_dummy_id());}
1834+
| TOK_NON_TYPE_IDENTIFIER
1835+
;
18351836

18361837
list_of_module_connections_opt:
18371838
/* Optional */
@@ -2827,65 +2828,52 @@ attr_name: identifier
28272828
// System Verilog standard 1800-2017
28282829
// A.9.3 Identifiers
28292830

2830-
block_identifier: TOK_CHARSTR;
2831+
block_identifier: TOK_NON_TYPE_IDENTIFIER;
28312832

2832-
genvar_identifier: TOK_CHARSTR
2833-
{ new_symbol($$, $1); }
2834-
;
2833+
genvar_identifier: identifier;
28352834

28362835
hierarchical_parameter_identifier: hierarchical_identifier
28372836
;
28382837

28392838
interface_identifier:
28402839
;
28412840

2842-
module_identifier: TOK_CHARSTR;
2841+
module_identifier: TOK_NON_TYPE_IDENTIFIER;
28432842

28442843
module_identifier_opt:
28452844
/* Optional */
28462845
| module_identifier
28472846
;
28482847

2849-
net_identifier: TOK_CHARSTR
2850-
{ new_symbol($$, $1); }
2851-
;
2848+
net_identifier: identifier;
28522849

2853-
param_identifier: TOK_CHARSTR;
2850+
param_identifier: TOK_NON_TYPE_IDENTIFIER;
28542851

2855-
port_identifier: TOK_CHARSTR
2856-
{ new_symbol($$, $1); }
2857-
;
2852+
port_identifier: identifier;
28582853

28592854
ps_covergroup_identifier:
28602855
;
28612856

2862-
memory_identifier: TOK_CHARSTR
2863-
{ new_symbol($$, $1); }
2864-
;
2857+
memory_identifier: identifier;
28652858

2866-
type_identifier: TOK_CHARSTR
2867-
{ new_symbol($$, $1); }
2868-
;
2859+
type_identifier: identifier;
28692860

2870-
parameter_identifier: TOK_CHARSTR;
2861+
parameter_identifier: TOK_NON_TYPE_IDENTIFIER;
28712862

2872-
generate_block_identifier: TOK_CHARSTR;
2863+
generate_block_identifier: TOK_NON_TYPE_IDENTIFIER;
28732864

2874-
udp_identifier: TOK_CHARSTR;
2865+
udp_identifier: TOK_NON_TYPE_IDENTIFIER;
28752866

28762867
task_identifier: hierarchical_identifier
28772868
;
28782869

2879-
event_identifier:
2880-
TOK_CHARSTR
2881-
{ new_symbol($$, $1); }
2882-
;
2870+
event_identifier: identifier;
28832871

28842872
hierarchical_task_or_block_identifier: task_identifier;
28852873

28862874
hierarchical_tf_identifier: hierarchical_identifier;
28872875

2888-
specparam_identifier: TOK_CHARSTR;
2876+
specparam_identifier: TOK_NON_TYPE_IDENTIFIER;
28892877

28902878
function_identifier: hierarchical_identifier
28912879
;
@@ -2904,14 +2892,12 @@ hierarchical_identifier:
29042892

29052893
hierarchical_variable_identifier: hierarchical_identifier;
29062894

2907-
identifier: TOK_CHARSTR
2895+
identifier: TOK_NON_TYPE_IDENTIFIER
29082896
{ new_symbol($$, $1); }
29092897
;
29102898

2911-
property_identifier: TOK_CHARSTR;
2899+
property_identifier: TOK_NON_TYPE_IDENTIFIER;
29122900

2913-
variable_identifier: TOK_CHARSTR
2914-
{ new_symbol($$, $1); }
2915-
;
2901+
variable_identifier: identifier;
29162902

29172903
%%

src/verilog/scanner.l

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ static void preprocessor()
6161

6262
}
6363

64-
#define IDENTIFIER { newstack(yyveriloglval); stack_expr(yyveriloglval).id(yytext); return TOK_CHARSTR; }
64+
#define IDENTIFIER { newstack(yyveriloglval); stack_expr(yyveriloglval).id(yytext); return TOK_NON_TYPE_IDENTIFIER; }
6565
#define SYSTEM_VERILOG_KEYWORD(x) \
6666
{ if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG) \
6767
return x; \
@@ -497,7 +497,7 @@ within { SYSTEM_VERILOG_KEYWORD(TOK_WITHIN); }
497497
{Real} { newstack(yyveriloglval); stack_expr(yyveriloglval).id(yytext); return TOK_NUMBER; }
498498
{RealExp} { newstack(yyveriloglval); stack_expr(yyveriloglval).id(yytext); return TOK_NUMBER; }
499499
{Word} { IDENTIFIER; }
500-
{EscapedWord} { newstack(yyveriloglval); stack_expr(yyveriloglval).id(yytext+1); return TOK_CHARSTR; }
500+
{EscapedWord} { newstack(yyveriloglval); stack_expr(yyveriloglval).id(yytext+1); return TOK_NON_TYPE_IDENTIFIER; }
501501
. { return yytext[0]; }
502502
} // GRAMMAR
503503

0 commit comments

Comments
 (0)