diff src/parse.y @ 206:1761d7a3770c

[project @ 1993-11-10 21:00:31 by jwe]
author jwe
date Wed, 10 Nov 1993 21:00:31 +0000
parents 83c8b5c4d9d9
children a99f28f5e351
line wrap: on
line diff
--- a/src/parse.y	Mon Nov 08 23:43:03 1993 +0000
+++ b/src/parse.y	Wed Nov 10 21:00:31 1993 +0000
@@ -174,7 +174,9 @@
 
 // Other tokens.
 %token FCN SCREW_TWO
-%token END_OF_INPUT GLOBAL
+%token GLOBAL
+%token ELLIPSIS
+%token END_OF_INPUT
 %token USING TITLE WITH COLON OPEN_BRACE CLOSE_BRACE
 
 // Nonterminals we construct.
@@ -970,6 +972,13 @@
 		    tmp->mark_as_formal_parameters ();
 		    $$ = tmp;
 		  }
+		| param_list1 ',' ELLIPSIS ')'
+		  {
+		    tree_parameter_list *tmp = $1->reverse ();
+		    tmp->mark_as_formal_parameters ();
+		    tmp->mark_varargs ();
+		    $$ = tmp;
+		  }
 
 param_list1	: '(' identifier
 		  { $$ = new tree_parameter_list ($2); }
@@ -977,13 +986,15 @@
 		  { $$ = $1->chain ($3); }
 		| '(' error
 		  {
-		    error ("parameter lists may only contain identifiers");
-		    $$ = (tree_parameter_list *) NULL;
+		    yyerror ("parse error");
+		    error ("invalid parameter list");
+		    ABORT_PARSE;
 		  }
 		| param_list1 ',' error
 		  {
-		    error ("parameter lists may only contain identifiers");
-		    $$ = (tree_parameter_list *) NULL;
+		    yyerror ("parse error");
+		    error ("invalid parameter list");
+		    ABORT_PARSE;
 		  }
 		;