aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Singer <michael@a-singer.de>2021-08-05 21:02:35 +0200
committerZachary Snow <zachary.j.snow@gmail.com>2021-08-09 22:25:57 -0600
commit681a1c07e52dc82449501f4939e6312f593449bd (patch)
treebc214c530089a76f748661b7846ed3d151847724
parentf368e2c7e650ecb35d3732ad1f3f926a21f063bf (diff)
downloadyosys-681a1c07e52dc82449501f4939e6312f593449bd.tar.gz
yosys-681a1c07e52dc82449501f4939e6312f593449bd.tar.bz2
yosys-681a1c07e52dc82449501f4939e6312f593449bd.zip
Allow optional comma after last entry in enum
-rw-r--r--frontends/verilog/verilog_parser.y23
1 files changed, 12 insertions, 11 deletions
diff --git a/frontends/verilog/verilog_parser.y b/frontends/verilog/verilog_parser.y
index de463b47d..a5227cb09 100644
--- a/frontends/verilog/verilog_parser.y
+++ b/frontends/verilog/verilog_parser.y
@@ -1624,17 +1624,18 @@ enum_type: TOK_ENUM {
// create the template for the names
astbuf1 = new AstNode(AST_ENUM_ITEM);
astbuf1->children.push_back(AstNode::mkconst_int(0, true));
- } enum_base_type '{' enum_name_list '}' { // create template for the enum vars
- auto tnode = astbuf1->clone();
- delete astbuf1;
- astbuf1 = tnode;
- tnode->type = AST_WIRE;
- tnode->attributes[ID::enum_type] = AstNode::mkconst_str(astbuf2->str);
- // drop constant but keep any range
- delete tnode->children[0];
- tnode->children.erase(tnode->children.begin());
- $$ = astbuf1; }
- ;
+ } enum_base_type '{' enum_name_list optional_comma '}' {
+ // create template for the enum vars
+ auto tnode = astbuf1->clone();
+ delete astbuf1;
+ astbuf1 = tnode;
+ tnode->type = AST_WIRE;
+ tnode->attributes[ID::enum_type] = AstNode::mkconst_str(astbuf2->str);
+ // drop constant but keep any range
+ delete tnode->children[0];
+ tnode->children.erase(tnode->children.begin());
+ $$ = astbuf1;
+ };
enum_base_type: type_atom type_signing
| type_vec type_signing range { if ($3) astbuf1->children.push_back($3); }