diff --git a/src/language.yacc b/src/language.yacc index 989f900a6fe8a4a846cc15d07fc4b7898e858720..911705352ffa5370c63c98369250bf1db60e80b2 100644 --- a/src/language.yacc +++ b/src/language.yacc @@ -171,7 +171,7 @@ /* This is the grammar definition of Pike. */ #include "global.h" -RCSID("$Id: language.yacc,v 1.74 1998/04/13 12:51:09 grubba Exp $"); +RCSID("$Id: language.yacc,v 1.75 1998/04/14 17:02:04 grubba Exp $"); #ifdef HAVE_MEMORY_H #include <memory.h> #endif @@ -609,6 +609,12 @@ def: modifiers type_or_error optional_stars F_IDENTIFIER yyerrok; /* if(num_parse_error>5) YYACCEPT; */ } + | error '}' + { + YYBACKUP('}', 0); + reset_type_stack(); + yyerrok; + } ; optional_dot_dot_dot: F_DOT_DOT_DOT { $$=1; } @@ -887,6 +893,10 @@ new_name: optional_stars F_IDENTIFIER mkidentifiernode($<number>4)))); free_node($2); } + | optional_stars F_IDENTIFIER '=' error + { + free_node($2); + } | optional_stars bad_identifier '=' expr0 { free_node($4);