]> git.saurik.com Git - bison.git/blobdiff - tests/regression.at
* doc/yacc.1.in: New.
[bison.git] / tests / regression.at
index 761e1bedbfd17e4ae92fd382de5d4bbdf5fee4e1..3b3272f37009eb932dbdfc539584b0324fa21609 100644 (file)
@@ -3,20 +3,18 @@
 # Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software
 # 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
 # it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
-
+#
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 AT_BANNER([[Regression tests.]])
 
@@ -252,13 +250,13 @@ AT_CHECK([cat input.output], [],
 
     0 $accept: expr $end
 
-    1 @1: /* empty */
+    1 $@1: /* empty */
 
-    2 expr: 'a' @1 'b'
+    2 expr: 'a' $@1 'b'
 
-    3 @2: /* empty */
+    3 $@2: /* empty */
 
-    4 expr: @2 'c'
+    4 expr: $@2 'c'
 
 
 Terminals, with rules where they appear
@@ -276,9 +274,9 @@ $accept (6)
     on left: 0
 expr (7)
     on left: 2 4, on right: 0
-@1 (8)
+$@1 (8)
     on left: 1, on right: 2
-@2 (9)
+$@2 (9)
     on left: 3, on right: 4
 
 
@@ -288,19 +286,19 @@ state 0
 
     'a'  shift, and go to state 1
 
-    $default  reduce using rule 3 (@2)
+    $default  reduce using rule 3 ($@2)
 
     expr  go to state 2
-    @2    go to state 3
+    $@2   go to state 3
 
 
 state 1
 
-    2 expr: 'a' . @1 'b'
+    2 expr: 'a' . $@1 'b'
 
-    $default  reduce using rule 1 (@1)
+    $default  reduce using rule 1 ($@1)
 
-    @1  go to state 4
+    $@1  go to state 4
 
 
 state 2
@@ -312,14 +310,14 @@ state 2
 
 state 3
 
-    4 expr: @2 . 'c'
+    4 expr: $@2 . 'c'
 
     'c'  shift, and go to state 6
 
 
 state 4
 
-    2 expr: 'a' @1 . 'b'
+    2 expr: 'a' $@1 . 'b'
 
     'b'  shift, and go to state 7
 
@@ -333,14 +331,14 @@ state 5
 
 state 6
 
-    4 expr: @2 'c' .
+    4 expr: $@2 'c' .
 
     $default  reduce using rule 4 (expr)
 
 
 state 7
 
-    2 expr: 'a' @1 'b' .
+    2 expr: 'a' $@1 'b' .
 
     $default  reduce using rule 2 (expr)
 ]])
@@ -553,9 +551,9 @@ AT_CHECK([cat input.output], 0,
     2 CONST_DEC_LIST: CONST_DEC
     3               | CONST_DEC_LIST CONST_DEC
 
-    4 @1: /* empty */
+    4 $@1: /* empty */
 
-    5 CONST_DEC: @1 undef_id_tok '=' const_id_tok ';'
+    5 CONST_DEC: $@1 undef_id_tok '=' const_id_tok ';'
 
 
 Terminals, with rules where they appear
@@ -578,7 +576,7 @@ CONST_DEC_LIST (9)
     on left: 2 3, on right: 1 3
 CONST_DEC (10)
     on left: 5, on right: 2 3
-@1 (11)
+$@1 (11)
     on left: 4, on right: 5
 
 
@@ -586,12 +584,12 @@ state 0
 
     0 $accept: . CONST_DEC_PART $end
 
-    $default  reduce using rule 4 (@1)
+    $default  reduce using rule 4 ($@1)
 
     CONST_DEC_PART  go to state 1
     CONST_DEC_LIST  go to state 2
     CONST_DEC       go to state 3
-    @1              go to state 4
+    $@1             go to state 4
 
 
 state 1
@@ -606,11 +604,11 @@ state 2
     1 CONST_DEC_PART: CONST_DEC_LIST .
     3 CONST_DEC_LIST: CONST_DEC_LIST . CONST_DEC
 
-    undef_id_tok  reduce using rule 4 (@1)
+    undef_id_tok  reduce using rule 4 ($@1)
     $default      reduce using rule 1 (CONST_DEC_PART)
 
     CONST_DEC  go to state 6
-    @1         go to state 4
+    $@1        go to state 4
 
 
 state 3
@@ -622,7 +620,7 @@ state 3
 
 state 4
 
-    5 CONST_DEC: @1 . undef_id_tok '=' const_id_tok ';'
+    5 CONST_DEC: $@1 . undef_id_tok '=' const_id_tok ';'
 
     undef_id_tok  shift, and go to state 7
 
@@ -643,28 +641,28 @@ state 6
 
 state 7
 
-    5 CONST_DEC: @1 undef_id_tok . '=' const_id_tok ';'
+    5 CONST_DEC: $@1 undef_id_tok . '=' const_id_tok ';'
 
     '='  shift, and go to state 8
 
 
 state 8
 
-    5 CONST_DEC: @1 undef_id_tok '=' . const_id_tok ';'
+    5 CONST_DEC: $@1 undef_id_tok '=' . const_id_tok ';'
 
     const_id_tok  shift, and go to state 9
 
 
 state 9
 
-    5 CONST_DEC: @1 undef_id_tok '=' const_id_tok . ';'
+    5 CONST_DEC: $@1 undef_id_tok '=' const_id_tok . ';'
 
     ';'  shift, and go to state 10
 
 
 state 10
 
-    5 CONST_DEC: @1 undef_id_tok '=' const_id_tok ';' .
+    5 CONST_DEC: $@1 undef_id_tok '=' const_id_tok ';' .
 
     $default  reduce using rule 5 (CONST_DEC)
 ]])
@@ -709,8 +707,7 @@ else: "else" statement;
 
 AT_CHECK([bison -v -o input.c input.y])
 
-# Check only the tables.  We don't use --no-parser, because it is
-# still to be implemented in the experimental branch of Bison.
+# Check only the tables.
 [sed -n 's/  *$//;/^static const.*\[\] =/,/^}/p' input.c >tables.c]
 
 AT_CHECK([[cat tables.c]], 0,
@@ -1143,3 +1140,44 @@ start: 'a' "A" 'b';
 AT_CHECK([bison -t -o input.c input.y])
 
 AT_CLEANUP
+
+
+
+## -------------------------------- ##
+## Extra lookahead sets in report.  ##
+## -------------------------------- ##
+
+AT_SETUP([[Extra lookahead sets in report]])
+
+# Bison prints each reduction's lookahead set only next to the associated
+# state's one item that (1) is associated with the same rule as the reduction
+# and (2) has its dot at the end of its RHS.  Previously, Bison also
+# erroneously printed the lookahead set next to all of the state's other items
+# associated with the same rule.  This bug affected only the `.output' file and
+# not the generated parser source code.
+
+AT_DATA([[input.y]],
+[[%%
+start: a | 'a' a 'a' ;
+a: 'a' ;
+]])
+
+AT_CHECK([[bison --report=all input.y]])
+AT_CHECK([[sed -n '/^state 1$/,/^state 2$/p' input.output]], [[0]],
+[[state 1
+
+    2 start: 'a' . a 'a'
+    3 a: . 'a'
+    3  | 'a' .  [$end]
+
+    'a'  shift, and go to state 4
+
+    $default  reduce using rule 3 (a)
+
+    a  go to state 5
+
+
+state 2
+]])
+
+AT_CLEANUP