mirror of
https://github.com/YosysHQ/yosys
synced 2025-06-09 07:33:25 +00:00
Fixed parsing of empty positional cell ports
This commit is contained in:
parent
b1c432af56
commit
7a67add95d
1 changed files with 31 additions and 2 deletions
|
@ -872,10 +872,39 @@ cell_parameter:
|
||||||
};
|
};
|
||||||
|
|
||||||
cell_port_list:
|
cell_port_list:
|
||||||
cell_port | cell_port_list ',' cell_port;
|
cell_port_list_rules {
|
||||||
|
// remove empty args from end of list
|
||||||
|
while (!astbuf2->children.empty()) {
|
||||||
|
AstNode *node = astbuf2->children.back();
|
||||||
|
if (node->type != AST_ARGUMENT) break;
|
||||||
|
if (!node->children.empty()) break;
|
||||||
|
if (!node->str.empty()) break;
|
||||||
|
astbuf2->children.pop_back();
|
||||||
|
}
|
||||||
|
|
||||||
|
// check port types
|
||||||
|
bool has_positional_args = false;
|
||||||
|
bool has_named_args = false;
|
||||||
|
for (auto node : astbuf2->children) {
|
||||||
|
if (node->type != AST_ARGUMENT) continue;
|
||||||
|
if (node->str.empty())
|
||||||
|
has_positional_args = true;
|
||||||
|
else
|
||||||
|
has_named_args = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (has_positional_args && has_named_args)
|
||||||
|
frontend_verilog_yyerror("Mix of positional and named cell ports.");
|
||||||
|
};
|
||||||
|
|
||||||
|
cell_port_list_rules:
|
||||||
|
cell_port | cell_port_list_rules ',' cell_port;
|
||||||
|
|
||||||
cell_port:
|
cell_port:
|
||||||
/* empty */ |
|
/* empty */ {
|
||||||
|
AstNode *node = new AstNode(AST_ARGUMENT);
|
||||||
|
astbuf2->children.push_back(node);
|
||||||
|
} |
|
||||||
expr {
|
expr {
|
||||||
AstNode *node = new AstNode(AST_ARGUMENT);
|
AstNode *node = new AstNode(AST_ARGUMENT);
|
||||||
astbuf2->children.push_back(node);
|
astbuf2->children.push_back(node);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue