Skip to content

Commit

Permalink
Increase the error verbosity of the Verilog and SMV parsers
Browse files Browse the repository at this point in the history
Bison is instructed to generate verbose error messages for the Verilog and
SMV parsers.

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 87d9e93
Show file tree
Hide file tree
Showing 18 changed files with 72 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 )
3 changes: 3 additions & 0 deletions src/smvlang/parser.y
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,9 @@ static void new_module(YYSTYPE &module)

%}

/* increase verbosity of error messages, to include expected tokens */
%error-verbose

%token AG_Token "AG"
%token AX_Token "AX"
%token AF_Token "AF"
Expand Down
3 changes: 3 additions & 0 deletions src/verilog/parser.y
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,9 @@ int yyverilogerror(const char *error)

%}

/* increase verbosity of error messages, to include expected tokens */
%error-verbose

/* Grammar Selection */
%token TOK_PARSE_LANGUAGE
%token TOK_PARSE_EXPRESSION
Expand Down

0 comments on commit 87d9e93

Please sign in to comment.