]> git.saurik.com Git - bison.git/commitdiff
bison: catch bad symbol names.
authorAkim Demaille <demaille@gostai.com>
Mon, 4 May 2009 19:23:55 +0000 (21:23 +0200)
committerAkim Demaille <demaille@gostai.com>
Mon, 4 May 2009 19:44:40 +0000 (21:44 +0200)
* src/scan-gram.l({int}{id}): Report as an invalid identifier.
* tests/input.at: Adjust.

ChangeLog
src/scan-gram.l
tests/input.at

index bd1799a9e823c924f55ab15775cf9c68254f587f..bf412806d9bf870a9f84aa233cc9377a33670887 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,14 @@
+2009-05-04  Akim Demaille  <demaille@gostai.com>
+
+       bison: catch bad symbol names.
+       * src/scan-gram.l({int}{id}): Report as an invalid identifier.
+       * tests/input.at: Adjust.
+
 2009-05-04  Akim Demaille  <demaille@gostai.com>
 
        identifiers: dashes are letters.
        Dashes can now start identifiers (symbols and directives).
-       
+
        * src/scan-gram.l ({letter}): Add dash.
        ({id}): Remove it.
        * tests/input.at (Symbols): Adjust.
index 5d4b4b306f20746ba1885b6487c3b6ca15b19d12..7c5b6000e9b0d54851eea1f47ef31c22659aa230 100644 (file)
@@ -240,6 +240,12 @@ splice      (\\[ \f\t\v]*\n)*
     return INT;
   }
 
+  /* Identifiers may not start with a digit.  Yet, don't silently
+     accept "1FOO" as "1 FOO".  */
+  {int}{id} {
+    complain_at (*loc, _("invalid identifier: %s"), quote (yytext));
+  }
+
   /* Characters.  We don't check there is only one.  */
   "'"        STRING_GROW; token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER;
 
index 5baa4f97e7875dcb430c55b833ecbbb7571afc38..43f729622fe9bb12d8a416cdbc090d2eb52109a5 100644 (file)
@@ -657,13 +657,13 @@ AT_COMPILE([input.o], [-c input.c])
 # Digits cannot.
 AT_DATA_GRAMMAR([input.y],
 [[%token .GOOD
-%token -GOOD
-%token 1NV4L1D
+         -GOOD
+         1NV4L1D
 %%
 start: .GOOD -GOOD
 ]])
 AT_BISON_CHECK([-o input.c input.y], [1], [],
-[[input.y:11.8: syntax error, unexpected integer, expecting char or identifier or <tag>
+[[input.y:11.10-16: invalid identifier: `1NV4L1D'
 ]])
 
 AT_CLEANUP