diff --git a/src/main.c b/src/main.c
index 75b3c60c0c2d81d883bff94c5f290d793b67127d..e2758788e0416f44bfb50c73c3a7683799a95972 100644
--- a/src/main.c
+++ b/src/main.c
@@ -484,9 +484,9 @@ int main(int argc, char **argv)
 
 	    case 'c':
 	      p++;
-#if defined(YYDEBUG) || defined(PIKE_DEBUG)
+#if (defined(YYDEBUG) && (YYDEBUG==1)) && defined(PIKE_DEBUG)
 	      yydebug++;
-#endif /* YYDEBUG || PIKE_DEBUG */
+#endif /* YYDEBUG && PIKE_DEBUG */
 	      break;
 
 	    case 's':
diff --git a/src/program.c b/src/program.c
index 18ba4e31f2ba5bff3c6c223df25b989efd803285..83a91b70ace02b6b34e19651ddc9eeb8afdf327f 100644
--- a/src/program.c
+++ b/src/program.c
@@ -7676,7 +7676,7 @@ void handle_compile_exception (const char *yyerror_fmt, ...)
   free_svalue(&thrown);
 }
 
-extern void yyparse(void);
+extern int yyparse(void);
 
 #ifdef PIKE_DEBUG
 #define do_yyparse() do {				\