diff --git a/parse.y b/parse.y index 7d7551acb..cd95cd56d 100644 --- a/parse.y +++ b/parse.y @@ -195,7 +195,7 @@ const static struct str_pair_t str_strength = { PGate::STRONG, PGate::STRONG }; %type lavalue lpvalue %type delay_value delay_value_simple %type delay1 delay3 delay3_opt -%type expression_list +%type expression_list expression_list_proper %type assign assign_list %type range range_opt @@ -929,6 +929,19 @@ expression_list } ; +expression_list_proper + : expression_list_proper ',' expression + { svector*tmp = new svector(*$1, $3); + delete $1; + $$ = tmp; + } + | expression + { svector*tmp = new svector(1); + (*tmp)[0] = $1; + $$ = tmp; + } + ; + expr_primary : number @@ -2859,7 +2872,7 @@ statement delete $1; $$ = tmp; } - | identifier '(' expression_list ')' ';' + | identifier '(' expression_list_proper ')' ';' { PCallTask*tmp = new PCallTask(*$1, *$3); tmp->set_file(@1.text); tmp->set_lineno(@1.first_line);