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;
 		  }
 		;