Mercurial > octave
diff src/parse.y @ 7587:1f662945c2be
handle varargin and varargout without keywords
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 13 Mar 2008 13:05:43 -0400 |
parents | c827f5673321 |
children | ae90e05ad299 |
line wrap: on
line diff
--- a/src/parse.y Wed Mar 12 21:17:07 2008 -0400 +++ b/src/parse.y Thu Mar 13 13:05:43 2008 -0400 @@ -399,7 +399,8 @@ // Other tokens. %token END_OF_INPUT LEXICAL_ERROR -%token FCN VARARGIN VARARGOUT +%token FCN +// %token VARARGIN VARARGOUT %token CLOSE_BRACE // Nonterminals we construct. @@ -1147,19 +1148,10 @@ | param_list2 { $1->mark_as_formal_parameters (); - $$ = $1; - } - | VARARGIN - { - tree_parameter_list *tmp = new tree_parameter_list (); - tmp->mark_varargs_only (); - $$ = tmp; - } - | param_list2 ',' VARARGIN - { - $1->mark_as_formal_parameters (); - $1->mark_varargs (); - $$ = $1; + if ($1->validate (tree_parameter_list::in)) + $$ = $1; + else + ABORT_PARSE; } ; @@ -1181,35 +1173,21 @@ lexer_flags.looking_at_return_list = false; $$ = new tree_parameter_list (); } - | '[' VARARGOUT ']' - { - lexer_flags.looking_at_return_list = false; - tree_parameter_list *tmp = new tree_parameter_list (); - tmp->mark_varargs_only (); - $$ = tmp; - } - | VARARGOUT - { - lexer_flags.looking_at_return_list = false; - tree_parameter_list *tmp = new tree_parameter_list (); - tmp->mark_varargs_only (); - $$ = tmp; - } | return_list1 { lexer_flags.looking_at_return_list = false; - $$ = $1; + if ($1->validate (tree_parameter_list::out)) + $$ = $1; + else + ABORT_PARSE; } | '[' return_list1 ']' { lexer_flags.looking_at_return_list = false; - $$ = $2; - } - | '[' return_list1 ',' VARARGOUT ']' - { - lexer_flags.looking_at_return_list = false; - $2->mark_varargs (); - $$ = $2; + if ($2->validate (tree_parameter_list::out)) + $$ = $2; + else + ABORT_PARSE; } ;