Skip to content

Commit 529fd28

Browse files
committed
Increase the error verbosity of the Verilog parser
Bison is instructed to generate verbose error messages for the Verilog parser. This results in more helpful syntax error messages at least in some cases.
1 parent c036dd5 commit 529fd28

18 files changed

+70
-4
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CORE
2+
syntax1.smv
3+
4+
^file .* line 3: syntax error, unexpected VAR, expecting string or "'" before 'VAR'$
5+
^EXIT=1$
6+
^SIGNAL=0$
7+
--
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
MODULE -- forgot the name
2+
3+
VAR abc : BOOLEAN;
4+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CORE
2+
syntax2.smv
3+
4+
^file .* line 3: syntax error, unexpected VAR before 'VAR'$
5+
^EXIT=1$
6+
^SIGNAL=0$
7+
--
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
-- forgot the MODULE
2+
3+
VAR abc : BOOLEAN;
4+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CORE
2+
syntax3.smv
3+
4+
^file .* line 3: syntax error, unexpected string, expecting number before 'not_a_number'$
5+
^EXIT=1$
6+
^SIGNAL=0$
7+
--
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
MODULE main
2+
3+
VAR foobar : 1.. not_a_number;
4+
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
ifdef1.v
33

4-
^file ifdef1\.v line 4: syntax error before 'syntax'$
4+
^file ifdef1\.v line 4: syntax error, unexpected .* before 'syntax'$
55
^EXIT=1$
66
^SIGNAL=0$
77
--
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
ifdef2.v
33

4-
^file ifdef2\.v line 4: syntax error before 'syntax'$
4+
^file ifdef2\.v line 4: syntax error, unexpected .* before 'syntax'$
55
^EXIT=1$
66
^SIGNAL=0$
77
--
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
multi-line-define2.v
33

4-
^file multi-line-define2\.v line 4: syntax error before 'syntax'$
4+
^file multi-line-define2\.v line 4: syntax error, unexpected .* before 'syntax'$
55
^EXIT=1$
66
^SIGNAL=0$
77
--
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
multi-line-define3.v
33

4-
^file multi-line-define3\.v line 4: syntax error before 'syntax'$
4+
^file multi-line-define3\.v line 4: syntax error, unexpected .* before 'syntax'$
55
^EXIT=1$
66
^SIGNAL=0$
77
--
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CORE
2+
syntax1.sv
3+
4+
^file .* line 1: syntax error, unexpected ';', expecting TOK_NON_TYPE_IDENTIFIER before ';'$
5+
^EXIT=1$
6+
^SIGNAL=0$
7+
--
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module ;// forgot the name
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CORE
2+
syntax2.sv
3+
4+
^file syntax2.sv line 3: syntax error, unexpected byte, expecting ';' before 'byte'$
5+
^EXIT=1$
6+
^SIGNAL=0$
7+
--
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module main // forgot the ;
2+
3+
byte some_var;
4+
5+
endmodule
6+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CORE
2+
syntax3.sv
3+
4+
^file syntax3.sv line 1: syntax error, unexpected ';' before ';'$
5+
^EXIT=1$
6+
^SIGNAL=0$
7+
--
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module main(; // forgot the )

src/smvlang/parser.y

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* increase verbosity of error messages, to include expected tokens */
12
%define parse.error verbose
23

34
%{

src/verilog/parser.y

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
/* increase verbosity of error messages, to include expected tokens */
2+
%define parse.error verbose
3+
14
%{
25
/*******************************************************************\
36

0 commit comments

Comments
 (0)