From ae701e014df1eb0614b5200b4ad0bf17e7b04ad0 Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Sat, 6 Jun 2020 13:55:15 -0400 Subject: [PATCH] Support --bbox-unsup parsing of for with multiple increments --- src/verilog.l | 3 +-- src/verilog.y | 4 ++-- test_regress/t/t_for_comma_bad.out | 24 ++++++++++++------------ 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/src/verilog.l b/src/verilog.l index cebe62569..038d4f577 100644 --- a/src/verilog.l +++ b/src/verilog.l @@ -294,7 +294,6 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} "always" { FL; return yALWAYS; } "and" { FL; return yAND; } "assign" { FL; return yASSIGN; } - "before" { FL; return yBEFORE; } "begin" { FL; return yBEGIN; } "buf" { FL; return yBUF; } "bufif0" { FL; return yBUFIF0; } @@ -468,7 +467,7 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} "always_latch" { FL; return yALWAYS_LATCH; } "assert" { FL; return yASSERT; } "assume" { FL; return yASSUME; } - "before" { ERROR_RSVD_WORD("SystemVerilog 2005"); } + "before" { FL; return yBEFORE; } "bind" { FL; return yBIND; } "bins" { ERROR_RSVD_WORD("SystemVerilog 2005"); } "binsof" { ERROR_RSVD_WORD("SystemVerilog 2005"); } diff --git a/src/verilog.y b/src/verilog.y index 3e4944bdf..78952599e 100644 --- a/src/verilog.y +++ b/src/verilog.y @@ -3299,7 +3299,7 @@ for_initialization: // ==IEEE: for_initialization + for_variable_declarat for_initializationItemList: // IEEE: [for_variable_declaration...] for_initializationItem { $$ = $1; } - | for_initializationItemList ',' for_initializationItem { $$ = $1; $2->v3error("Unsupported: for loop initialization after the first comma"); } + | for_initializationItemList ',' for_initializationItem { $$ = $1; BBUNSUP($2, "Unsupported: for loop initialization after the first comma"); } ; for_initializationItem: // IEEE: variable_assignment + for_variable_declaration @@ -3325,7 +3325,7 @@ for_stepE: // IEEE: for_step + empty for_step: // IEEE: for_step for_step_assignment { $$ = $1; } - | for_step ',' for_step_assignment { $$ = $1; $1->v3error("Unsupported: for loop step after the first comma"); } + | for_step ',' for_step_assignment { $$ = $1; BBUNSUP($2, "Unsupported: for loop step after the first comma"); } ; for_step_assignment: // ==IEEE: for_step_assignment diff --git a/test_regress/t/t_for_comma_bad.out b/test_regress/t/t_for_comma_bad.out index 542c67fbb..21a3f739f 100644 --- a/test_regress/t/t_for_comma_bad.out +++ b/test_regress/t/t_for_comma_bad.out @@ -1,18 +1,18 @@ -%Error: t/t_for_comma_bad.v:14:16: Unsupported: for loop step after the first comma +%Error: t/t_for_comma_bad.v:14:21: Unsupported: for loop step after the first comma 14 | for (; ; a=a+1, b=b+1) ; - | ^ -%Error: t/t_for_comma_bad.v:17:19: Unsupported: for loop step after the first comma + | ^ +%Error: t/t_for_comma_bad.v:17:24: Unsupported: for loop step after the first comma 17 | for (; a<1; a=a+1, b=b+1) ; - | ^ -%Error: t/t_for_comma_bad.v:20:22: Unsupported: for loop step after the first comma + | ^ +%Error: t/t_for_comma_bad.v:20:27: Unsupported: for loop step after the first comma 20 | for (a=0; a<1; a=a+1, b=b+1) ; - | ^ -%Error: t/t_for_comma_bad.v:23:30: Unsupported: for loop step after the first comma + | ^ +%Error: t/t_for_comma_bad.v:23:35: Unsupported: for loop step after the first comma 23 | for (integer a=0; a<1; a=a+1, b=b+1) ; - | ^ -%Error: t/t_for_comma_bad.v:26:34: Unsupported: for loop step after the first comma + | ^ +%Error: t/t_for_comma_bad.v:26:39: Unsupported: for loop step after the first comma 26 | for (var integer a=0; a<1; a=a+1, b=b+1) ; - | ^ + | ^ %Error: t/t_for_comma_bad.v:27:23: Unsupported: for loop initialization after the first comma 27 | for (integer a=0, integer b=0; a<1; ) ; | ^ @@ -22,7 +22,7 @@ %Error: t/t_for_comma_bad.v:29:23: Unsupported: for loop initialization after the first comma 29 | for (integer a=0, integer b=0; a<1; a=a+1, b=b+1) ; | ^ -%Error: t/t_for_comma_bad.v:29:43: Unsupported: for loop step after the first comma +%Error: t/t_for_comma_bad.v:29:48: Unsupported: for loop step after the first comma 29 | for (integer a=0, integer b=0; a<1; a=a+1, b=b+1) ; - | ^ + | ^ %Error: Exiting due to