mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-18 16:53:02 +00:00
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:
12
ChangeLog
12
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>
|
2009-05-01 Joel E. Denny <jdenny@ces.clemson.edu>
|
||||||
|
|
||||||
Declare %code to be a permanent feature.
|
Declare %code to be a permanent feature.
|
||||||
|
|||||||
8
NEWS
8
NEWS
@@ -70,6 +70,14 @@ Bison News
|
|||||||
The old names are now deprecated but will be maintained indefinitely
|
The old names are now deprecated but will be maintained indefinitely
|
||||||
for backward compatibility.
|
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.
|
** Temporary hack for adding a semicolon to the user action.
|
||||||
|
|
||||||
Previously, Bison appended a semicolon to every user action for
|
Previously, Bison appended a semicolon to every user action for
|
||||||
|
|||||||
@@ -3050,8 +3050,8 @@ A @dfn{nonterminal symbol} stands for a class of syntactically
|
|||||||
equivalent groupings. The symbol name is used in writing grammar rules.
|
equivalent groupings. The symbol name is used in writing grammar rules.
|
||||||
By convention, it should be all lower case.
|
By convention, it should be all lower case.
|
||||||
|
|
||||||
Symbol names can contain letters, underscores, period, and (not at the
|
Symbol names can contain letters, underscores, periods, dashes, and (not
|
||||||
beginning) digits and dashes. Dashes in symbol names are a GNU
|
at the beginning) digits. Dashes in symbol names are a GNU
|
||||||
extension, incompatible with @acronym{POSIX} Yacc. Terminal symbols
|
extension, incompatible with @acronym{POSIX} Yacc. Terminal symbols
|
||||||
that contain periods or dashes make little sense: since they are not
|
that contain periods or dashes make little sense: since they are not
|
||||||
valid symbols (in most programming languages) they are not exported as
|
valid symbols (in most programming languages) they are not exported as
|
||||||
|
|||||||
@@ -98,8 +98,8 @@ static void unexpected_newline (boundary, char const *);
|
|||||||
/* Strings and characters in code. */
|
/* Strings and characters in code. */
|
||||||
%x SC_STRING SC_CHARACTER
|
%x SC_STRING SC_CHARACTER
|
||||||
|
|
||||||
letter [.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]
|
letter [-.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]
|
||||||
id {letter}({letter}|[0-9]|-)*
|
id {letter}({letter}|[0-9])*
|
||||||
directive %{id}
|
directive %{id}
|
||||||
int [0-9]+
|
int [0-9]+
|
||||||
|
|
||||||
|
|||||||
@@ -616,9 +616,6 @@ AT_CLEANUP
|
|||||||
|
|
||||||
AT_SETUP([Symbols])
|
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],
|
AT_DATA_GRAMMAR([input.y],
|
||||||
[[%token WITH-DASH
|
[[%token WITH-DASH
|
||||||
%token WITHOUT_DASH "WITHOUT-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])
|
AT_COMPILE([input.o], [-c input.c])
|
||||||
|
|
||||||
|
|
||||||
# Period are genuine letters, they can start identifiers. Dashes
|
# Periods and dashes are genuine letters, they can start identifiers.
|
||||||
# and digits can't.
|
# Digits cannot.
|
||||||
AT_DATA_GRAMMAR([input.y],
|
AT_DATA_GRAMMAR([input.y],
|
||||||
[[%token .good
|
[[%token .GOOD
|
||||||
%token -wrong
|
%token -GOOD
|
||||||
%token 1nv4l1d
|
%token 1NV4L1D
|
||||||
%%
|
%%
|
||||||
start: .good
|
start: .GOOD -GOOD
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([-o input.c input.y], [1], [],
|
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
|
AT_CLEANUP
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Bison Regressions. -*- Autotest -*-
|
# 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.
|
# Foundation, Inc.
|
||||||
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# 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.1: invalid character: `%'
|
||||||
input.y:4.2: invalid character: `&'
|
input.y:4.2: invalid character: `&'
|
||||||
input.y:5.1-17: invalid directive: `%a-does-not-exist'
|
input.y:5.1-17: invalid directive: `%a-does-not-exist'
|
||||||
input.y:6.1: invalid character: `%'
|
input.y:6.1-2: invalid directive: `%-'
|
||||||
input.y:6.2: invalid character: `-'
|
|
||||||
input.y:7.1-8.0: missing `%}' at end of file
|
input.y:7.1-8.0: missing `%}' at end of file
|
||||||
input.y:7.1-8.0: syntax error, unexpected %{...%}
|
input.y:7.1-8.0: syntax error, unexpected %{...%}
|
||||||
]])
|
]])
|
||||||
|
|||||||
Reference in New Issue
Block a user