Skip to content

Commit 5217d7b

Browse files
committed
introduce SYSTEM_VERILOG_OPERATOR macro
The new macro removes redundancy in the Verilog tokenizer.
1 parent ab25eb4 commit 5217d7b

File tree

1 file changed

+25
-95
lines changed

1 file changed

+25
-95
lines changed

src/verilog/scanner.l

Lines changed: 25 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,12 @@ static void preprocessor()
6868
else \
6969
IDENTIFIER; \
7070
}
71+
#define SYSTEM_VERILOG_OPERATOR(token, text) \
72+
{ if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG) \
73+
return token; \
74+
else \
75+
yyverilogerror(text " is a System Verilog operator"); \
76+
}
7177
#define VIS_VERILOG_KEYWORD(x) \
7278
{ if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG || \
7379
PARSER.mode==verilog_parsert::VIS_VERILOG) \
@@ -213,101 +219,25 @@ void verilog_scanner_init()
213219

214220
/* System Verilog operators */
215221

216-
"|->" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
217-
return TOK_VERTBARMINUSGREATER;
218-
else
219-
yyverilogerror("|-> is a System Verilog operator");
220-
}
221-
"|=>" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
222-
return TOK_VERTBAREQUALGREATER;
223-
else
224-
yyverilogerror("|=> is a System Verilog operator");
225-
}
226-
"++" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
227-
return TOK_PLUSPLUS;
228-
else
229-
yyverilogerror("++ is a System Verilog operator");
230-
}
231-
"--" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
232-
return TOK_MINUSMINUS;
233-
else
234-
yyverilogerror("-- is a System Verilog operator");
235-
}
236-
"+=" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
237-
return TOK_PLUSEQUAL;
238-
else
239-
yyverilogerror("+= is a System Verilog operator");
240-
}
241-
"+:" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
242-
return TOK_PLUSCOLON;
243-
else
244-
yyverilogerror("+: is a System Verilog operator");
245-
}
246-
"-:" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
247-
return TOK_MINUSCOLON;
248-
else
249-
yyverilogerror("-: is a System Verilog operator");
250-
}
251-
"-=" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
252-
return TOK_MINUSEQUAL;
253-
else
254-
yyverilogerror("-= is a System Verilog operator");
255-
}
256-
"*=" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
257-
return TOK_ASTERICEQUAL;
258-
else
259-
yyverilogerror("*= is a System Verilog operator");
260-
}
261-
"/=" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
262-
return TOK_SLASHEQUAL;
263-
else
264-
yyverilogerror("+= is a System Verilog operator");
265-
}
266-
"%=" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
267-
return TOK_PERCENTEQUAL;
268-
else
269-
yyverilogerror("%= is a System Verilog operator");
270-
}
271-
"&=" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
272-
return TOK_AMPEREQUAL;
273-
else
274-
yyverilogerror("&= is a System Verilog operator");
275-
}
276-
"^=" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
277-
return TOK_CARETEQUAL;
278-
else
279-
yyverilogerror("^= is a System Verilog operator");
280-
}
281-
"|=" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
282-
return TOK_VERTBAREQUAL;
283-
else
284-
yyverilogerror("|= is a System Verilog operator");
285-
}
286-
"<<=" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
287-
return TOK_LESSLESSEQUAL;
288-
else
289-
yyverilogerror("<<= is a System Verilog operator");
290-
}
291-
">>=" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
292-
return TOK_GREATERGREATEREQUAL;
293-
else
294-
yyverilogerror(">>= is a System Verilog operator");
295-
}
296-
"<<<=" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
297-
return TOK_LESSLESSLESSEQUAL;
298-
else
299-
yyverilogerror("<<<= is a System Verilog operator");
300-
}
301-
">>>=" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
302-
return TOK_GREATERGREATERGREATEREQUAL;
303-
else
304-
yyverilogerror(">>>= is a System Verilog operator");
305-
}
306-
"##" { if(PARSER.mode==verilog_parsert::SYSTEM_VERILOG)
307-
return TOK_HASHHASH;
308-
else
309-
yyverilogerror("## is a System Verilog operator");
310-
}
222+
"|->" { SYSTEM_VERILOG_OPERATOR(TOK_VERTBARMINUSGREATER, "|->"); }
223+
"|=>" { SYSTEM_VERILOG_OPERATOR(TOK_VERTBAREQUALGREATER, "|=>"); }
224+
"++" { SYSTEM_VERILOG_OPERATOR(TOK_PLUSPLUS, "++"); }
225+
"--" { SYSTEM_VERILOG_OPERATOR(TOK_MINUSMINUS, "--"); }
226+
"+=" { SYSTEM_VERILOG_OPERATOR(TOK_PLUSEQUAL, "+="); }
227+
"+:" { SYSTEM_VERILOG_OPERATOR(TOK_PLUSCOLON, "+:"); }
228+
"-:" { SYSTEM_VERILOG_OPERATOR(TOK_MINUSCOLON, "-:"); }
229+
"-=" { SYSTEM_VERILOG_OPERATOR(TOK_MINUSEQUAL, "-="); }
230+
"*=" { SYSTEM_VERILOG_OPERATOR(TOK_ASTERICEQUAL, "*="); }
231+
"/=" { SYSTEM_VERILOG_OPERATOR(TOK_SLASHEQUAL, "+="); }
232+
"%=" { SYSTEM_VERILOG_OPERATOR(TOK_PERCENTEQUAL, "%="); }
233+
"&=" { SYSTEM_VERILOG_OPERATOR(TOK_AMPEREQUAL, "&="); }
234+
"^=" { SYSTEM_VERILOG_OPERATOR(TOK_CARETEQUAL, "^="); }
235+
"|=" { SYSTEM_VERILOG_OPERATOR(TOK_VERTBAREQUAL, "|="); }
236+
"<<=" { SYSTEM_VERILOG_OPERATOR(TOK_LESSLESSEQUAL, "<<="); }
237+
">>=" { SYSTEM_VERILOG_OPERATOR(TOK_GREATERGREATEREQUAL, ">>="); }
238+
"<<<=" { SYSTEM_VERILOG_OPERATOR(TOK_LESSLESSLESSEQUAL, "<<<="); }
239+
">>>=" { SYSTEM_VERILOG_OPERATOR(TOK_GREATERGREATERGREATEREQUAL, ">>>="); }
240+
"##" { SYSTEM_VERILOG_OPERATOR(TOK_HASHHASH, "##"); }
311241

312242
/* Verilog keywords */
313243

0 commit comments

Comments
 (0)