diff options
author | clairexen <claire@symbioticeda.com> | 2020-07-15 11:49:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-15 11:49:09 +0200 |
commit | 021ce8e59646ed9a6dff4447e11cceae9d3e615c (patch) | |
tree | 175394ccfbc749c48f3ac0e057db630c7e78d566 /frontends | |
parent | 61a7ec4768a3d0d0c8875bb4d9b6160f8697c0d6 (diff) | |
parent | 02c071888b4b2a26db5653609bb60e6c3f5c366f (diff) | |
download | yosys-021ce8e59646ed9a6dff4447e11cceae9d3e615c.tar.gz yosys-021ce8e59646ed9a6dff4447e11cceae9d3e615c.tar.bz2 yosys-021ce8e59646ed9a6dff4447e11cceae9d3e615c.zip |
Merge pull request #2257 from antmicro/fix-conflicts
Restore #2203 and #2244 and fix parser conflicts
Diffstat (limited to 'frontends')
-rw-r--r-- | frontends/verilog/verilog_parser.y | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/frontends/verilog/verilog_parser.y b/frontends/verilog/verilog_parser.y index 0fdf2b516..ba2eab3d3 100644 --- a/frontends/verilog/verilog_parser.y +++ b/frontends/verilog/verilog_parser.y @@ -742,6 +742,7 @@ module_body: module_body module_body_stmt | /* the following line makes the generate..endgenrate keywords optional */ module_body gen_stmt | + module_body ';' | /* empty */; module_body_stmt: @@ -1331,36 +1332,36 @@ ignspec_id: param_signed: TOK_SIGNED { astbuf1->is_signed = true; + } | TOK_UNSIGNED { + astbuf1->is_signed = false; } | /* empty */; param_integer: TOK_INTEGER { - if (astbuf1->children.size() != 1) - frontend_verilog_yyerror("Internal error in param_integer - should not happen?"); astbuf1->children.push_back(new AstNode(AST_RANGE)); astbuf1->children.back()->children.push_back(AstNode::mkconst_int(31, true)); astbuf1->children.back()->children.push_back(AstNode::mkconst_int(0, true)); astbuf1->is_signed = true; - } | /* empty */; + }; param_real: TOK_REAL { - if (astbuf1->children.size() != 1) - frontend_verilog_yyerror("Parameter already declared as integer, cannot set to real."); astbuf1->children.push_back(new AstNode(AST_REALVALUE)); - } | /* empty */; + }; param_range: range { if ($1 != NULL) { - if (astbuf1->children.size() != 1) - frontend_verilog_yyerror("integer/real parameters should not have a range."); astbuf1->children.push_back($1); } }; +param_integer_type: param_integer param_signed; +param_range_type: type_vec param_signed param_range; +param_implicit_type: param_signed param_range; + param_type: - param_signed param_integer param_real param_range | + param_integer_type | param_real | param_range_type | param_implicit_type | hierarchical_type_id { astbuf1->is_custom_type = true; astbuf1->children.push_back(new AstNode(AST_WIRETYPE)); |