diff --git a/src/language.yacc b/src/language.yacc
index e643d950604d3e51fbc0eac80a2eb67807ec0ccf..38ddec8e0d25ea10bd784bac50abe36f6d4dbd38 100644
--- a/src/language.yacc
+++ b/src/language.yacc
@@ -176,7 +176,7 @@
 /* This is the grammar definition of Pike. */
 
 #include "global.h"
-RCSID("$Id: language.yacc,v 1.92 1998/04/27 21:04:53 grubba Exp $");
+RCSID("$Id: language.yacc,v 1.93 1998/04/28 15:46:27 grubba Exp $");
 #ifdef HAVE_MEMORY_H
 #include <memory.h>
 #endif
@@ -1054,11 +1054,11 @@ statement: unused2 ';'
   | switch
   | case
   | default
-  | return ';'
+  | return expected_semicolon
   | block
   | foreach
-  | break ';'
-  | continue ';'
+  | break expected_semicolon
+  | continue expected_semicolon
   | error ';' { reset_type_stack(); $$=0; yyerrok; }
   | error F_LEX_EOF
   {
@@ -1146,7 +1146,7 @@ lambda: F_LAMBDA
   }
   ;
 
-failsafe_program: '{' program '}'
+failsafe_program: '{' program end_block
                 | error { yyerrok; }
                 ;