Skip to content

Commit

Permalink
Increase the error verbosity of the Verilog parser
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
kroening committed Feb 4, 2025
1 parent c036dd5 commit 529fd28
Show file tree
Hide file tree
Showing 18 changed files with 70 additions and 4 deletions.
7 changes: 7 additions & 0 deletions regression/smv/syntax-errors/syntax1.desc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
CORE
syntax1.smv

^file .* line 3: syntax error, unexpected VAR, expecting string or "'" before 'VAR'$
^EXIT=1$
^SIGNAL=0$
--
4 changes: 4 additions & 0 deletions regression/smv/syntax-errors/syntax1.smv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
MODULE -- forgot the name

VAR abc : BOOLEAN;

7 changes: 7 additions & 0 deletions regression/smv/syntax-errors/syntax2.desc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
CORE
syntax2.smv

^file .* line 3: syntax error, unexpected VAR before 'VAR'$
^EXIT=1$
^SIGNAL=0$
--
4 changes: 4 additions & 0 deletions regression/smv/syntax-errors/syntax2.smv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
-- forgot the MODULE

VAR abc : BOOLEAN;

7 changes: 7 additions & 0 deletions regression/smv/syntax-errors/syntax3.desc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
CORE
syntax3.smv

^file .* line 3: syntax error, unexpected string, expecting number before 'not_a_number'$
^EXIT=1$
^SIGNAL=0$
--
4 changes: 4 additions & 0 deletions regression/smv/syntax-errors/syntax3.smv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
MODULE main

VAR foobar : 1.. not_a_number;

2 changes: 1 addition & 1 deletion regression/verilog/preprocessor/ifdef1.desc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
CORE
ifdef1.v

^file ifdef1\.v line 4: syntax error before 'syntax'$
^file ifdef1\.v line 4: syntax error, unexpected .* before 'syntax'$
^EXIT=1$
^SIGNAL=0$
--
2 changes: 1 addition & 1 deletion regression/verilog/preprocessor/ifdef2.desc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
CORE
ifdef2.v

^file ifdef2\.v line 4: syntax error before 'syntax'$
^file ifdef2\.v line 4: syntax error, unexpected .* before 'syntax'$
^EXIT=1$
^SIGNAL=0$
--
2 changes: 1 addition & 1 deletion regression/verilog/preprocessor/multi-line-define2.desc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
CORE
multi-line-define2.v

^file multi-line-define2\.v line 4: syntax error before 'syntax'$
^file multi-line-define2\.v line 4: syntax error, unexpected .* before 'syntax'$
^EXIT=1$
^SIGNAL=0$
--
2 changes: 1 addition & 1 deletion regression/verilog/preprocessor/multi-line-define3.desc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
CORE
multi-line-define3.v

^file multi-line-define3\.v line 4: syntax error before 'syntax'$
^file multi-line-define3\.v line 4: syntax error, unexpected .* before 'syntax'$
^EXIT=1$
^SIGNAL=0$
--
7 changes: 7 additions & 0 deletions regression/verilog/syntax-errors/syntax1.desc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
CORE
syntax1.sv

^file .* line 1: syntax error, unexpected ';', expecting TOK_NON_TYPE_IDENTIFIER before ';'$
^EXIT=1$
^SIGNAL=0$
--
1 change: 1 addition & 0 deletions regression/verilog/syntax-errors/syntax1.sv
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module ;// forgot the name
7 changes: 7 additions & 0 deletions regression/verilog/syntax-errors/syntax2.desc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
CORE
syntax2.sv

^file syntax2.sv line 3: syntax error, unexpected byte, expecting ';' before 'byte'$
^EXIT=1$
^SIGNAL=0$
--
6 changes: 6 additions & 0 deletions regression/verilog/syntax-errors/syntax2.sv
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module main // forgot the ;

byte some_var;

endmodule

7 changes: 7 additions & 0 deletions regression/verilog/syntax-errors/syntax3.desc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
CORE
syntax3.sv

^file syntax3.sv line 1: syntax error, unexpected ';' before ';'$
^EXIT=1$
^SIGNAL=0$
--
1 change: 1 addition & 0 deletions regression/verilog/syntax-errors/syntax3.sv
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module main(; // forgot the )
1 change: 1 addition & 0 deletions src/smvlang/parser.y
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/* increase verbosity of error messages, to include expected tokens */
%define parse.error verbose

%{
Expand Down
3 changes: 3 additions & 0 deletions src/verilog/parser.y
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
/* increase verbosity of error messages, to include expected tokens */
%define parse.error verbose

%{
/*******************************************************************\
Expand Down

0 comments on commit 529fd28

Please sign in to comment.