Skip to content

Commit 2a129e6

Browse files
authored
Merge pull request #447 from diffblue/verilog-define-ws
Verilog: allow whitespace between macro and arguments
2 parents a68e711 + 9daf51d commit 2a129e6

File tree

3 files changed

+9
-3
lines changed

3 files changed

+9
-3
lines changed

regression/verilog/preprocessor/define1.desc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ value
1313

1414
x-y-z
1515
x-y-value
16+
moo-foo-bar
1617
^EXIT=0$
1718
^SIGNAL=0$
1819
--

regression/verilog/preprocessor/define1.v

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,6 @@
77
`define with_parameter(a, b, c) a-b-c
88
`with_parameter(x, y, z)
99
`with_parameter(x, y, `with_value)
10+
`with_parameter (moo, foo, bar)
11+
`define no_parameter (1+2)
12+
`no_parameter

src/verilog/verilog_preprocessor.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,9 @@ auto verilog_preprocessort::parse_define_arguments(const definet &define)
281281
if(define.parameters.empty())
282282
return {};
283283

284+
// skip whitespace
285+
tokenizer().skip_ws();
286+
284287
if(tokenizer().next_token() != '(')
285288
throw verilog_preprocessor_errort() << "expecting define arguments";
286289

@@ -366,11 +369,10 @@ void verilog_preprocessort::directive()
366369
auto &identifier = identifier_token.text;
367370
auto &define = defines[identifier];
368371

369-
// skip whitespace
370-
tokenizer().skip_ws();
371-
372372
// Is there a parameter list?
373373
// These have been introduced in Verilog 2001.
374+
// 1800-2017: "The left parenthesis shall follow the text macro name
375+
// immediately, with no space in between."
374376
if(tokenizer().peek() == '(')
375377
define.parameters = parse_define_parameters();
376378

0 commit comments

Comments
 (0)