==== bison/data/lalr1.cc ====
--- bison/data/lalr1.cc	2018-02-15 13:18:40.000000000 -0800
+++ bison/data/lalr1.cc	2018-02-16 16:46:56.000000000 -0800
@@ -732,9 +732,11 @@
     /// The return value of parse ().
     int yyresult;
 
+#ifdef __EXCEPTIONS
     // FIXME: This shoud be completely indented.  It is not yet to
     // avoid gratuitous conflicts when merging into the master branch.
     try
+#endif // __EXCEPTIONS
       {
     YYCDEBUG << "Starting parse" << std::endl;
 
@@ -773,17 +775,21 @@
     if (yyla.empty ())
       {
         YYCDEBUG << "Reading a token: ";
+#ifdef __EXCEPTIONS
         try
+#endif // __EXCEPTIONS
           {]b4_token_ctor_if([[
             symbol_type yylookahead (]b4_lex[);
             yyla.move (yylookahead);]], [[
             yyla.type = yytranslate_ (]b4_lex[);]])[
           }
+#ifdef __EXCEPTIONS
         catch (const syntax_error& yyexc)
           {
             error (yyexc);
             goto yyerrlab1;
           }
+#endif // __EXCEPTIONS
       }
     YY_SYMBOL_PRINT ("Next token is", yyla);
 
@@ -852,7 +858,9 @@
 
       // Perform the reduction.
       YY_REDUCE_PRINT (yyn);
+#ifdef __EXCEPTIONS
       try
+#endif // __EXCEPTIONS
         {
           switch (yyn)
             {
@@ -861,11 +869,13 @@
               break;
             }
         }
+#ifdef __EXCEPTIONS
       catch (const syntax_error& yyexc)
         {
           error (yyexc);
           YYERROR;
         }
+#endif // __EXCEPTIONS
       YY_SYMBOL_PRINT ("-> $$ =", yylhs);
       yypop_ (yylen);
       yylen = 0;
@@ -991,6 +1001,7 @@
 
     return yyresult;
   }
+#ifdef __EXCEPTIONS
     catch (...)
       {
         YYCDEBUG << "Exception caught: cleaning lookahead and stack"
@@ -1007,6 +1018,7 @@
           }
         throw;
       }
+#endif // __EXCEPTIONS
   }
 
   void
