summaryrefslogtreecommitdiff
path: root/tests/named-refs.at
diff options
context:
space:
mode:
authorJoel E. Denny <joeldenny@joeldenny.org>2011-01-29 12:54:28 -0500
committerJoel E. Denny <joeldenny@joeldenny.org>2011-01-29 14:57:53 -0500
commit82f3355eaf8d5988391021262dc9acfa6485c098 (patch)
tree647d67f92023898e19261e8d075ba7c01c40e9f2 /tests/named-refs.at
parent676997e53bf9e8d364302bd1f90d812e50b1477a (diff)
downloadbison-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.at27
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