]> git.saurik.com Git - bison.git/commitdiff
identifiers: dashes are letters.
authorAkim Demaille <demaille@gostai.com>
Mon, 4 May 2009 19:15:17 +0000 (21:15 +0200)
committerAkim Demaille <demaille@gostai.com>
Mon, 4 May 2009 19:30:52 +0000 (21:30 +0200)
Dashes can now start identifiers (symbols and directives).

* src/scan-gram.l ({letter}): Add dash.
({id}): Remove it.
* tests/input.at (Symbols): Adjust.
Remove stray comment.
* tests/regression.at (Invalid inputs): Adjust error message.
* doc/bison.texinfo (Symbols): Update.

ChangeLog
NEWS
doc/bison.texinfo
src/scan-gram.l
tests/input.at
tests/regression.at

index 90c44b646ff7e90c5ccf222465ce57ef2e15eb34..bdf9789fa85c85fb950d42887b8f1d44261c8c8e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+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.
+       Remove stray comment.
+       * tests/regression.at (Invalid inputs): Adjust error message.
+       * doc/bison.texinfo (Symbols): Update.
+
 2009-05-01  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        Declare %code to be a permanent feature.
diff --git a/NEWS b/NEWS
index b3ba74fa814f6b5093e6961256544596c8e5abfc..6578160623c81ed1424b77c0f900099c2004e6fd 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -62,6 +62,14 @@ Bison News
   The old names are now deprecated but will be maintained indefinitely
   for backward compatibility.
 
+** Symbols names
+
+  Consistently with directives (such as %error-verbose) and variables
+  (e.g. push-pull), symbol names may include dashes in any position,
+  similarly to periods and underscores.  This is GNU extension over
+  POSIX Yacc whose use is reported by -Wyacc, and rejected in Yacc
+  mode (--yacc).
+
 ** Temporary hack for adding a semicolon to the user action.
 
   Previously, Bison appended a semicolon to every user action for
index a02d07607b655bd85da5d75820fd457804cccc01..9b600785bccff927d2d8229049003aa7a7e2d952 100644 (file)
@@ -3048,8 +3048,8 @@ A @dfn{nonterminal symbol} stands for a class of syntactically
 equivalent groupings.  The symbol name is used in writing grammar rules.
 By convention, it should be all lower case.
 
-Symbol names can contain letters, underscores, period, and (not at the
-beginning) digits and dashes.  Dashes in symbol names are a GNU
+Symbol names can contain letters, underscores, periods, dashes, and (not
+at the beginning) digits.  Dashes in symbol names are a GNU
 extension, incompatible with @acronym{POSIX} Yacc.  Terminal symbols
 that contain periods or dashes make little sense: since they are not
 valid symbols (in most programming languages) they are not exported as
@@ -9008,7 +9008,7 @@ The first, inclusive, position of the range, and the first beyond.
 @end deftypeivar
 
 @deftypeop {Constructor} {Location} {} Location (Position @var{loc})
-Create a @code{Location} denoting an empty range located at a given point. 
+Create a @code{Location} denoting an empty range located at a given point.
 @end deftypeop
 
 @deftypeop {Constructor} {Location} {} Location (Position @var{begin}, Position @var{end})
@@ -9222,12 +9222,12 @@ Return immediately from the parser, indicating success.
 @end deffn
 
 @deffn {Statement} {return YYERROR;}
-Start error recovery without printing an error message. 
+Start error recovery without printing an error message.
 @xref{Error Recovery}.
 @end deffn
 
 @deffn {Statement} {return YYFAIL;}
-Print an error message and start error recovery. 
+Print an error message and start error recovery.
 @xref{Error Recovery}.
 @end deffn
 
index c29e167df59f34bc2a80ce7ec805de2c4f185d2e..b37b29b02078963bbbe4cab8ee8f5fa5336ecd02 100644 (file)
@@ -89,8 +89,8 @@ static void unexpected_newline (boundary, char const *);
  /* Strings and characters in code. */
 %x SC_STRING SC_CHARACTER
 
-letter   [.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]
-id       {letter}({letter}|[0-9]|-)*
+letter   [-.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]
+id       {letter}({letter}|[0-9])*
 directive %{id}
 int      [0-9]+
 
index 73bf7345a25c0d77184bbbffcd6aa0a4152ae68e..7eaafaae7089ae3df79c11b3d125ee4b3104b9fe 100644 (file)
@@ -621,9 +621,6 @@ AT_CLEANUP
 
 AT_SETUP([Symbols])
 
-# Bison once thought a character token and its alias were different
-# symbols with the same user token number.
-
 AT_DATA_GRAMMAR([input.y],
 [[%token WITH-DASH
 %token WITHOUT_DASH "WITHOUT-DASH"
@@ -661,18 +658,17 @@ AT_BISON_CHECK([-o input.c input.y])
 AT_COMPILE([input.o], [-c input.c])
 
 
-# Period are genuine letters, they can start identifiers.  Dashes
-# and digits can't.
+# Periods and dashes are genuine letters, they can start identifiers.
+# Digits cannot.
 AT_DATA_GRAMMAR([input.y],
-[[%token .good
-%token -wrong
-%token 1nv4l1d
+[[%token .GOOD
+%token -GOOD
+%token 1NV4L1D
 %%
-start: .good
+start: .GOOD -GOOD
 ]])
 AT_BISON_CHECK([-o input.c input.y], [1], [],
-[[input.y:10.8: invalid character: `-'
-input.y:11.8: syntax error, unexpected integer, expecting char or identifier or type
+[[input.y:11.8: syntax error, unexpected integer, expecting char or identifier or type
 ]])
 
 AT_CLEANUP
index 32e676c6025f475c3084ef6496cebcdeb34e2049..cb9cd9a461ea70116f5de157ebf6fe589fb178c9 100644 (file)
@@ -1,6 +1,6 @@
 # Bison Regressions.                               -*- Autotest -*-
 
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
+# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
 # Foundation, Inc.
 
 # This program is free software: you can redistribute it and/or modify
@@ -393,8 +393,7 @@ input.y:3.14: invalid character: `}'
 input.y:4.1: invalid character: `%'
 input.y:4.2: invalid character: `&'
 input.y:5.1-17: invalid directive: `%a-does-not-exist'
-input.y:6.1: invalid character: `%'
-input.y:6.2: invalid character: `-'
+input.y:6.1-2: invalid directive: `%-'
 input.y:7.1-8.0: missing `%}' at end of file
 input.y:7.1-8.0: syntax error, unexpected %{...%}
 ]])