diff options
Diffstat (limited to 'frontends/verilog')
| -rw-r--r-- | frontends/verilog/verilog_parser.y | 24 | 
1 files changed, 14 insertions, 10 deletions
| diff --git a/frontends/verilog/verilog_parser.y b/frontends/verilog/verilog_parser.y index 8244a8f44..ccdab987f 100644 --- a/frontends/verilog/verilog_parser.y +++ b/frontends/verilog/verilog_parser.y @@ -1532,27 +1532,31 @@ cell_port_list_rules:  	cell_port | cell_port_list_rules ',' cell_port;  cell_port: -	/* empty */ { +	attr {  		AstNode *node = new AstNode(AST_ARGUMENT);  		astbuf2->children.push_back(node); +		free_attr($1);  	} | -	expr { +	attr expr {  		AstNode *node = new AstNode(AST_ARGUMENT);  		astbuf2->children.push_back(node); -		node->children.push_back($1); +		node->children.push_back($2); +		free_attr($1);  	} | -	'.' TOK_ID '(' expr ')' { +	attr '.' TOK_ID '(' expr ')' {  		AstNode *node = new AstNode(AST_ARGUMENT); -		node->str = *$2; +		node->str = *$3;  		astbuf2->children.push_back(node); -		node->children.push_back($4); -		delete $2; +		node->children.push_back($5); +		delete $3; +		free_attr($1);  	} | -	'.' TOK_ID '(' ')' { +	attr '.' TOK_ID '(' ')' {  		AstNode *node = new AstNode(AST_ARGUMENT); -		node->str = *$2; +		node->str = *$3;  		astbuf2->children.push_back(node); -		delete $2; +		delete $3; +		free_attr($1);  	};  always_stmt: | 
