+2011-01-29 Joel E. Denny <joeldenny@joeldenny.org>
+
+ Do not allow identifiers that start with a dash.
+ This cleans up our previous fixes for a bug whereby Bison
+ discarded `.field' in `$-1.field'. The previous fixes were less
+ restrictive about where a dash could appear in an identifier, but
+ the restrictions were hard to explain. That bug was reported and
+ this final fix was originally suggested by Paul Hilfinger. This
+ also fixes a remaining bug reported by Paul Eggert whereby Bison
+ parses `%token ID -123' as `%token ID - 123' and handles `-' as an
+ identifier. Now, `-' cannot be an identifier. Discussed in
+ threads beginning at
+ <http://lists.gnu.org/archive/html/bug-bison/2011-01/msg00000.html>,
+ <http://lists.gnu.org/archive/html/bug-bison/2011-01/msg00004.html>.
+ * NEWS (2.5): Update entry describing the dash extension to
+ grammar symbol names. Also, move that entry before the named
+ references entry because the latter mentions the former.
+ * doc/bison.texinfo (Symbol): Update documentation for symbol
+ names. As suggested by Paul Eggert, mention the effect of periods
+ and dashes on named references.
+ (Decl Summary): Update documentation for unquoted %define values,
+ which, as a side effect, can no longer start with dashes either.
+ * src/scan-code.l (id): Implement.
+ * src/scan-gram.l (id): Implement.
+ * tests/actions.at (Exotic Dollars): Extend test group to exercise
+ bug reported by Paul Hilfinger.
+ * tests/input.at (Symbols): Update test group, and extend to
+ exercise bug reported by Paul Eggert.
+ * tests/named-refs.at (Stray symbols in brackets): Update test
+ group.
+ ($ or @ followed by . or -): Likewise.
+ * tests/regression.at (Invalid inputs): Likewise.
+
2011-01-24 Joel E. Denny <joeldenny@joeldenny.org>
* data/yacc.c: Fix last apostrophe warning from xgettext.
2011-01-09 Paul Eggert <eggert@cs.ucla.edu>
- Simplify handling of '.' and '-' after unbracketed named references.
- * doc/bison.texinfo (Mid-Rule Actions): Mention that periods and
- dashes make symbol names less convenient for named references.
- * src/scan-code.l:
- (handle_action_dollar): New arg textlen. All callers changed.
- (handle_action_at): Likewise. Also, args are pointers to const.
- (ref_tail_fields): Remove; no longer used.
- (letter): Now includes '-' and '.', since this is for Bison
- identifiers.
- (id): Now the simpler traditional defn, since letters now include
- '-' and '.'.
- (c_letter, c_id): New defns.
- (ref): Use c_id for unbracketed IDs.
- (<SC_RULE_ACTION>): Simplify, now that the distinction between
- Bison and unbracketed IDs are now in the regular expressions.
- (VARIANT_BAD_BRACKETING): Remove.
- (VARIANT_NOT_VISIBLE_FROM_MIDRULE): Renumber.
- (find_prefix_end): Remove, replacing with ....
- (identifier_matches): New function.
- (variant_add): Use it. Omit EXPLICIT_BRACKETING arg; no longer
- needed. CP arg is pointer to constant. All callers changed.
- (show_sub_messages): Remove args CP, EXPLICIT_BRACKETING, DOLLAR_OR_AT.
- New arg TEXT. All callers changed. Do not worry about showing
- trailing context.
- (parse_ref): Args CP, RULE, TEXT are now pointers to const. New
- arg TEXTLEN. Remove arg DOLLAR_OR_AT. All callers changed.
- Simplify code now that the regular expressions capture the
- restrictions.
- * src/scan-gram.l (letter, id): Adjust to match scan-code.l.
- * src/symlist.c (symbol_list_null): Arg is now pointer to const.
- * src/symlist.h: Likewise.
- * tests/named-refs.at (Misleading references): These are now caught
- by the C compiler, not by Bison; that's good enough. Adjust test
- to reflect this.
- (Many kinds of errors, Unresolved references): Adjust expected
- diagnostics to match new behavior. The same errors are caught,
- though the diagnostics are not quite as fancy.
- ($ or @ followed by . or -): Likewise. Also, Make the grammar
- unambiguous, so that diagnostics are not complicated by ambiguity
- warnings.
-
Fix minor problems encountered by a fresh bootstrap.
* data/glr.c, data/yacc.c: Do not use apostrophes in '#' comments,
as they confuse xgettext, which tries to parse them as C character