]> git.saurik.com Git - bison.git/blobdiff - src/scan-gram.l
tests: syntax-check
[bison.git] / src / scan-gram.l
index 81127f887d697aaf10e36f47417bf76a65abbe7e..ad061cc6f86159ba93da4023e60fa326111f8b86 100644 (file)
@@ -36,7 +36,7 @@
 #include "reader.h"
 #include "uniqstr.h"
 
 #include "reader.h"
 #include "uniqstr.h"
 
-#include <ctype.h>
+#include <c-ctype.h>
 #include <mbswidth.h>
 #include <quote.h>
 
 #include <mbswidth.h>
 #include <quote.h>
 
@@ -291,7 +291,7 @@ splice       (\\[ \f\t\v]*\n)*
   }
 
   . {
   }
 
   . {
-    complain_at (*loc, _("invalid character: %s"), quote (yytext));
+    complain_at (*loc, _("invalid character: %s"), quote_mem (yytext, yyleng));
   }
 
   <<EOF>> {
   }
 
   <<EOF>> {
@@ -375,7 +375,7 @@ splice       (\\[ \f\t\v]*\n)*
   }
   . {
     complain_at (*loc, _("invalid character in bracketed name: %s"),
   }
   . {
     complain_at (*loc, _("invalid character in bracketed name: %s"),
-                quote (yytext));
+                quote_mem (yytext, yyleng));
   }
   <<EOF>> {
     BEGIN bracketed_id_context_state;
   }
   <<EOF>> {
     BEGIN bracketed_id_context_state;
@@ -560,7 +560,7 @@ splice       (\\[ \f\t\v]*\n)*
   \\(.|\n)     {
     char const *p = yytext + 1;
     /* Quote only if escaping won't make the character visible.  */
   \\(.|\n)     {
     char const *p = yytext + 1;
     /* Quote only if escaping won't make the character visible.  */
-    if (isspace ((unsigned char) *p) && isprint ((unsigned char) *p))
+    if (c_isspace ((unsigned char) *p) && c_isprint ((unsigned char) *p))
       p = quote (p);
     else
       p = quotearg_style_mem (escape_quoting_style, p, 1);
       p = quote (p);
     else
       p = quotearg_style_mem (escape_quoting_style, p, 1);
@@ -872,6 +872,10 @@ unexpected_end (boundary start, char const *msgid, char const *token_end)
   location loc;
   loc.start = start;
   loc.end = scanner_cursor;
   location loc;
   loc.start = start;
   loc.end = scanner_cursor;
+  token_end = quote (token_end);
+  // Instead of '\'', display "'".
+  if (!strcmp (token_end, "'\\''"))
+    token_end = "\"'\"";
   complain_at (loc, _(msgid), token_end);
 }
 
   complain_at (loc, _(msgid), token_end);
 }
 
@@ -884,7 +888,7 @@ unexpected_end (boundary start, char const *msgid, char const *token_end)
 static void
 unexpected_eof (boundary start, char const *token_end)
 {
 static void
 unexpected_eof (boundary start, char const *token_end)
 {
-  unexpected_end (start, N_("missing '%s' at end of file"), token_end);
+  unexpected_end (start, N_("missing %s at end of file"), token_end);
 }
 
 
 }
 
 
@@ -895,7 +899,7 @@ unexpected_eof (boundary start, char const *token_end)
 static void
 unexpected_newline (boundary start, char const *token_end)
 {
 static void
 unexpected_newline (boundary start, char const *token_end)
 {
-  unexpected_end (start, N_("missing '%s' at end of line"), token_end);
+  unexpected_end (start, N_("missing %s at end of line"), token_end);
 }
 
 
 }