Properly support signed task/function arguments.

This commit is contained in:
steve 2007-03-23 23:22:57 +00:00
parent 9e9d5ccfdd
commit a3dda80fb2
1 changed files with 38 additions and 1 deletions

39
parse.y
View File

@ -19,7 +19,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#ifdef HAVE_CVS_IDENT
#ident "$Id: parse.y,v 1.201.2.6 2007/03/23 19:31:22 steve Exp $"
#ident "$Id: parse.y,v 1.201.2.7 2007/03/23 23:22:57 steve Exp $"
#endif
# include "config.h"
@ -1030,6 +1030,14 @@ function_item
$$ = tmp;
yyerror(@1, "Functions may not have output ports.");
}
| K_output K_signed range_opt list_of_identifiers ';'
{ svector<PWire*>*tmp
= pform_make_task_ports(NetNet::PINPUT, true,
$3, $4,
@1.text, @1.first_line);
$$ = tmp;
yyerror(@1, "Functions may not have output ports.");
}
| K_inout range_opt list_of_identifiers ';'
{ svector<PWire*>*tmp
= pform_make_task_ports(NetNet::PINPUT, false,
@ -1038,6 +1046,14 @@ function_item
$$ = tmp;
yyerror(@1, "Functions may not have inout ports.");
}
| K_inout K_signed range_opt list_of_identifiers ';'
{ svector<PWire*>*tmp
= pform_make_task_ports(NetNet::PINPUT, true,
$3, $4,
@1.text, @1.first_line);
$$ = tmp;
yyerror(@1, "Functions may not have inout ports.");
}
| attribute_list_opt block_item_decl
{ $$ = 0; }
;
@ -2863,6 +2879,13 @@ task_item
@1.text, @1.first_line);
$$ = tmp;
}
| K_input K_signed range_opt list_of_identifiers ';'
{ svector<PWire*>*tmp
= pform_make_task_ports(NetNet::PINPUT, true,
$3, $4,
@1.text, @1.first_line);
$$ = tmp;
}
| K_output range_opt list_of_identifiers ';'
{ svector<PWire*>*tmp
= pform_make_task_ports(NetNet::POUTPUT, false,
@ -2870,6 +2893,13 @@ task_item
@1.text, @1.first_line);
$$ = tmp;
}
| K_output K_signed range_opt list_of_identifiers ';'
{ svector<PWire*>*tmp
= pform_make_task_ports(NetNet::POUTPUT, true,
$3, $4,
@1.text, @1.first_line);
$$ = tmp;
}
| K_inout range_opt list_of_identifiers ';'
{ svector<PWire*>*tmp
= pform_make_task_ports(NetNet::PINOUT, false,
@ -2877,6 +2907,13 @@ task_item
@1.text, @1.first_line);
$$ = tmp;
}
| K_inout K_signed range_opt list_of_identifiers ';'
{ svector<PWire*>*tmp
= pform_make_task_ports(NetNet::PINOUT, true,
$3, $4,
@1.text, @1.first_line);
$$ = tmp;
}
;
task_item_list