]> git.saurik.com Git - bison.git/commitdiff
tests: check the use of dashes and periods in symbols.
authorAkim Demaille <demaille@gostai.com>
Tue, 21 Apr 2009 20:17:25 +0000 (22:17 +0200)
committerAkim Demaille <demaille@gostai.com>
Tue, 21 Apr 2009 20:19:35 +0000 (22:19 +0200)
* tests/input.at (Symbol): New test group.

ChangeLog
tests/input.at

index f763ca3646f92810fd243c05c5e0e1ac46f66884..8adc86ce262475066735454561b63e48581b8c7a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-04-21  Akim Demaille  <demaille@gostai.com>
+
+       tests: check the use of dashes and periods in symbols.
+       * tests/input.at (Symbol): New test group.
+
 2009-04-21  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        Document %define lr.type and lr.default_rules.
 2009-04-21  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        Document %define lr.type and lr.default_rules.
index ec227df392e48cf6a36b8ff1286bf1d23e6f8be3..71adf0b7b49fbbcea1fd045e452cf19e8911497d 100644 (file)
@@ -610,6 +610,65 @@ AT_BISON_CHECK([-o input.c input.y])
 AT_CLEANUP
 
 
 AT_CLEANUP
 
 
+## -------------- ##
+## Symbol names.  ##
+## -------------- ##
+
+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"
+%token WITH.PERIOD
+%token WITHOUT_PERIOD "WITHOUT.PERIOD"
+%%
+start: with-dash without_dash with.period without_period;
+with-dash: WITH-DASH;
+without_dash: "WITHOUT-DASH";
+with.period: WITH.PERIOD;
+without_period: "WITHOUT.PERIOD";
+%%
+]])
+
+# POSIX Yacc accept periods, but not dashes.
+AT_BISON_CHECK([--yacc input.y], [1], [],
+[[input.y:9.8-16: POSIX Yacc forbids dashes in symbol names: WITH-DASH
+input.y:14.8-16: POSIX Yacc forbids dashes in symbol names: with-dash
+]])
+
+# So warn about them.
+AT_BISON_CHECK([-Wyacc input.y], [], [],
+[[input.y:9.8-16: warning: POSIX Yacc forbids dashes in symbol names: WITH-DASH
+input.y:14.8-16: warning: POSIX Yacc forbids dashes in symbol names: with-dash
+]])
+
+# Dashes are fine for GNU Bison.
+AT_BISON_CHECK([-o input.c input.y])
+
+# Make sure we don't export silly token identifiers with periods or dashes.
+AT_COMPILE([input.o], [-c input.c])
+
+
+# Period are genuine letters, they can start identifiers.  Dashes
+# and digits can't.
+AT_DATA_GRAMMAR([input.y],
+[[%token .good
+%token -wrong
+%token 1nv4l1d
+%%
+start: .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>
+]])
+
+AT_CLEANUP
+
+
 ## --------------------- ##
 ## Unclosed constructs.  ##
 ## --------------------- ##
 ## --------------------- ##
 ## Unclosed constructs.  ##
 ## --------------------- ##