diff options
author | Michael Singer <michael@a-singer.de> | 2021-08-05 21:02:35 +0200 |
---|---|---|
committer | Zachary Snow <zachary.j.snow@gmail.com> | 2021-08-09 22:25:57 -0600 |
commit | 681a1c07e52dc82449501f4939e6312f593449bd (patch) | |
tree | bc214c530089a76f748661b7846ed3d151847724 | |
parent | f368e2c7e650ecb35d3732ad1f3f926a21f063bf (diff) | |
download | yosys-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.y | 23 |
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); } |