diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index 504f489752d832c4de291358f1d8c2332a35bacd..5c9b9a5e971baa94acb8169d10f238f78d879817 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -394,7 +394,7 @@ static int yylinenoImbricatedLoopsTab[MAX_RECUR_LOOPS];
 static double LoopControlVariablesTab[MAX_RECUR_LOOPS][3];
 static char *LoopControlVariablesNameTab[MAX_RECUR_LOOPS];
 
-void yyerror(char *s);
+void yyerror(const char *s);
 void yymsg(int level, const char *fmt, ...);
 void skip_until(const char *skip, const char *until);
 int PrintListOfDouble(char *format, List_T *list, char *buffer);
@@ -8773,7 +8773,7 @@ void FixRelativePath(const char *in, char *out)
   }
 }
 
-void yyerror(char *s)
+void yyerror(const char *s)
 {
   Msg::Error("'%s', line %d : %s (%s)", gmsh_yyname.c_str(), gmsh_yylineno - 1,
              s, gmsh_yytext);
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index 8e2ae86ee90b659e4bcbcfdcd6ae95aae69d3965..318c84d5a89074ac7b7adbb35224c7e1e3303022 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -63,7 +63,7 @@ static int yylinenoImbricatedLoopsTab[MAX_RECUR_LOOPS];
 static double LoopControlVariablesTab[MAX_RECUR_LOOPS][3];
 static char *LoopControlVariablesNameTab[MAX_RECUR_LOOPS];
 
-void yyerror(char *s);
+void yyerror(const char *s);
 void yymsg(int level, const char *fmt, ...);
 void skip_until(const char *skip, const char *until);
 int PrintListOfDouble(char *format, List_T *list, char *buffer);
@@ -3923,7 +3923,7 @@ void FixRelativePath(const char *in, char *out)
   }
 }
 
-void yyerror(char *s)
+void yyerror(const char *s)
 {
   Msg::Error("'%s', line %d : %s (%s)", gmsh_yyname.c_str(), gmsh_yylineno - 1,
              s, gmsh_yytext);