diff options
author | Joel E. Denny <joeldenny@joeldenny.org> | 2011-01-29 12:54:28 -0500 |
---|---|---|
committer | Joel E. Denny <joeldenny@joeldenny.org> | 2011-01-29 14:57:53 -0500 |
commit | 82f3355eaf8d5988391021262dc9acfa6485c098 (patch) | |
tree | 647d67f92023898e19261e8d075ba7c01c40e9f2 /tests/named-refs.at | |
parent | 676997e53bf9e8d364302bd1f90d812e50b1477a (diff) | |
download | bison-82f3355eaf8d5988391021262dc9acfa6485c098.tar.gz |
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.
Diffstat (limited to 'tests/named-refs.at')
-rw-r--r-- | tests/named-refs.at | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/tests/named-refs.at b/tests/named-refs.at index 74549c6e..3c7b072d 100644 --- a/tests/named-refs.at +++ b/tests/named-refs.at @@ -446,13 +446,14 @@ AT_SETUP([Stray symbols in brackets]) AT_DATA_GRAMMAR([test.y], [[ %% -start: foo[ /* aaa */ *&-+ ] bar +start: foo[ /* aaa */ *&-.+ ] bar { s = $foo; } ]]) AT_BISON_CHECK([-o test.c test.y], 1, [], [[test.y:11.23: invalid character in bracketed name: `*' test.y:11.24: invalid character in bracketed name: `&' -test.y:11.26: invalid character in bracketed name: `+' +test.y:11.25: invalid character in bracketed name: `-' +test.y:11.27: invalid character in bracketed name: `+' ]]) AT_CLEANUP @@ -570,23 +571,27 @@ AT_DATA([[test.y]], %% start: .field { $.field; } -| -field { @-field; } | 'a' { @.field; } -| 'a' { $-field; } ; .field: ; --field: ; ]]) AT_BISON_CHECK([[test.y]], [[1]], [], [[test.y:4.12-18: invalid reference: `$.field' test.y:4.13: syntax error after `$', expecting integer, letter, `_', `@<:@', or `$' test.y:4.3-8: possibly meant: $[.field] at $1 -test.y:5.12-18: invalid reference: `@-field' +test.y:5.12-18: invalid reference: `@.field' test.y:5.13: syntax error after `@', expecting integer, letter, `_', `@<:@', or `$' -test.y:5.3-8: possibly meant: @[-field] at $1 -test.y:6.12-18: invalid reference: `@.field' -test.y:6.13: syntax error after `@', expecting integer, letter, `_', `@<:@', or `$' -test.y:7.12-18: invalid reference: `$-field' -test.y:7.13: syntax error after `$', expecting integer, letter, `_', `@<:@', or `$' +]]) +AT_DATA([[test.y]], +[[ +%% +start: + 'a' { $-field; } +| 'b' { @-field; } +; +]]) +AT_BISON_CHECK([[test.y]], [[0]], [], +[[test.y:4.9: warning: stray `$' +test.y:5.9: warning: stray `@' ]]) AT_CLEANUP |