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.
This commit is contained in:
Akim Demaille
2009-05-04 21:15:17 +02:00
parent 98a345a219
commit cdf3f11338
6 changed files with 33 additions and 18 deletions

View File

@@ -616,9 +616,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"
@@ -656,18 +653,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 <tag>
[[input.y:11.8: syntax error, unexpected integer, expecting char or identifier or <tag>
]])
AT_CLEANUP

View 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 %{...%}
]])