]> git.saurik.com Git - bison.git/blobdiff - tests/conflicts.at
c++: support wide strings for file names
[bison.git] / tests / conflicts.at
index 1fcd69b5e757d50f955176ac6d0a875eeade9096..5653b481f4f93248a176c332074385dcc4c45862 100644 (file)
@@ -1,6 +1,6 @@
 # Exercising Bison on conflicts.                         -*- Autotest -*-
 
 # Exercising Bison on conflicts.                         -*- Autotest -*-
 
-# Copyright (C) 2002-2005, 2007, 2009-2011 Free Software Foundation,
+# Copyright (C) 2002-2005, 2007, 2009-2012 Free Software Foundation,
 # Inc.
 
 # This program is free software: you can redistribute it and/or modify
 # Inc.
 
 # This program is free software: you can redistribute it and/or modify
@@ -41,6 +41,12 @@ AT_BISON_CHECK([-o input.c input.y], 0, [],
 [[input.y:4.9: warning: rule useless in parser due to conflicts: e: /* empty */
 ]])
 
 [[input.y:4.9: warning: rule useless in parser due to conflicts: e: /* empty */
 ]])
 
+AT_BISON_CHECK([-fcaret -o input.c input.y], 0, [],
+[[input.y:4.9: warning: rule useless in parser due to conflicts
+ e: 'e' | /* Nothing. */;
+         ^
+]])
+
 AT_CLEANUP
 
 
 AT_CLEANUP
 
 
@@ -50,20 +56,17 @@ AT_CLEANUP
 
 AT_SETUP([%nonassoc and eof])
 
 
 AT_SETUP([%nonassoc and eof])
 
+AT_BISON_OPTION_PUSHDEFS
 AT_DATA_GRAMMAR([input.y],
 [[
 %{
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 AT_DATA_GRAMMAR([input.y],
 [[
 %{
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <assert.h>
 
 #define YYERROR_VERBOSE 1
 
 #define YYERROR_VERBOSE 1
-static void
-yyerror (const char *msg)
-{
-  fprintf (stderr, "%s\n", msg);
-}
-
+]AT_YYERROR_DEFINE[
 /* The current argument. */
 static const char *input;
 
 /* The current argument. */
 static const char *input;
 
@@ -71,8 +74,7 @@ static int
 yylex (void)
 {
   static size_t toknum;
 yylex (void)
 {
   static size_t toknum;
-  if (! (toknum <= strlen (input)))
-    abort ();
+  assert (toknum <= strlen (input));
   return input[toknum++];
 }
 
   return input[toknum++];
 }
 
@@ -93,6 +95,7 @@ main (int argc, const char *argv[])
   return yyparse ();
 }
 ]])
   return yyparse ();
 }
 ]])
+AT_BISON_OPTION_POPDEFS
 
 m4_pushdef([AT_NONASSOC_AND_EOF_CHECK],
 [AT_BISON_CHECK([$1[ -o input.c input.y]])
 
 m4_pushdef([AT_NONASSOC_AND_EOF_CHECK],
 [AT_BISON_CHECK([$1[ -o input.c input.y]])
@@ -171,7 +174,7 @@ AT_SKEL_JAVA_IF([AT_DATA], [AT_DATA_GRAMMAR])([input.y],
   #include <string>]], [[
   #include <assert.h>
   #include <stdio.h>
   #include <string>]], [[
   #include <assert.h>
   #include <stdio.h>
-  void yyerror (char const *msg);]])[
+  ]AT_YYERROR_DECLARE])[
   ]AT_YYLEX_PROTOTYPE[;
   #define USE(Var)
 }
   ]AT_YYLEX_PROTOTYPE[;
   #define USE(Var)
 }
@@ -212,31 +215,11 @@ public Object getLVal ()
   *lvalp = 1;
   return *input++;
 }]])[
   *lvalp = 1;
   return *input++;
 }]])[
-
-/*----------.
-| yyerror.  |
-`----------*/]AT_SKEL_JAVA_IF([[
-
-public void yyerror (String msg)
-{
-  System.err.println (msg);
-}
-
+]AT_YYERROR_DEFINE[
+]AT_SKEL_JAVA_IF([[
 };
 
 };
 
-%%]], [AT_SKEL_CC_IF([[
-
-void
-yy::parser::error (const yy::location &, std::string const &msg)
-{
-  std::cerr << msg << std::endl;
-}]], [[
-
-void
-yyerror (char const *msg)
-{
-  fprintf (stderr, "%s\n", msg);
-}]])])[
+%%]])[
 
 /*-------.
 | main.  |
 
 /*-------.
 | main.  |
@@ -471,12 +454,12 @@ AT_CLEANUP
 # with minimal LR parser tables.
 
 AT_SETUP([[LAC: %nonassoc requires splitting canonical LR states]])
 # with minimal LR parser tables.
 
 AT_SETUP([[LAC: %nonassoc requires splitting canonical LR states]])
-
+AT_BISON_OPTION_PUSHDEFS
 AT_DATA_GRAMMAR([[input.y]],
 [[%code {
   #include <stdio.h>
 AT_DATA_GRAMMAR([[input.y]],
 [[%code {
   #include <stdio.h>
-  void yyerror (char const *);
-  int yylex (void);
+  ]AT_YYERROR_DECLARE[
+  ]AT_YYLEX_DECLARE[
 }
 
 %error-verbose
 }
 
 %error-verbose
@@ -513,19 +496,8 @@ look:
 reduce-nonassoc: %prec 'a';
 
 %%
 reduce-nonassoc: %prec 'a';
 
 %%
-
-void
-yyerror (char const *msg)
-{
-  fprintf (stderr, "%s\n", msg);
-}
-
-int
-yylex (void)
-{
-  char const *input = "aaa";
-  return *input++;
-}
+]AT_YYERROR_DEFINE[
+]AT_YYLEX_DEFINE(["aaa"])[
 
 int
 main (void)
 
 int
 main (void)
@@ -533,6 +505,7 @@ main (void)
   return yyparse ();
 }
 ]])
   return yyparse ();
 }
 ]])
+AT_BISON_OPTION_POPDEFS
 
 # Show canonical LR's failure.
 AT_BISON_CHECK([[-Dlr.type=canonical-lr -o input.c input.y]],
 
 # Show canonical LR's failure.
 AT_BISON_CHECK([[-Dlr.type=canonical-lr -o input.c input.y]],
@@ -613,7 +586,7 @@ exp (6)
     on left: 1 2, on right: 0 1
 
 
     on left: 1 2, on right: 0 1
 
 
-state 0
+State 0
 
     0 $accept: . exp $end
     1 exp: . exp OP exp
 
     0 $accept: . exp $end
     1 exp: . exp OP exp
@@ -624,14 +597,14 @@ state 0
     exp  go to state 2
 
 
     exp  go to state 2
 
 
-state 1
+State 1
 
     2 exp: NUM .
 
     $default  reduce using rule 2 (exp)
 
 
 
     2 exp: NUM .
 
     $default  reduce using rule 2 (exp)
 
 
-state 2
+State 2
 
     0 $accept: exp . $end
     1 exp: exp . OP exp
 
     0 $accept: exp . $end
     1 exp: exp . OP exp
@@ -640,14 +613,14 @@ state 2
     OP    shift, and go to state 4
 
 
     OP    shift, and go to state 4
 
 
-state 3
+State 3
 
     0 $accept: exp $end .
 
     $default  accept
 
 
 
     0 $accept: exp $end .
 
     $default  accept
 
 
-state 4
+State 4
 
     1 exp: . exp OP exp
     1    | exp OP . exp
 
     1 exp: . exp OP exp
     1    | exp OP . exp
@@ -658,7 +631,7 @@ state 4
     exp  go to state 5
 
 
     exp  go to state 5
 
 
-state 5
+State 5
 
     1 exp: exp . OP exp
     1    | exp OP exp .  [$end, OP]
 
     1 exp: exp . OP exp
     1    | exp OP exp .  [$end, OP]
@@ -716,7 +689,7 @@ exp (6)
     on left: 1 2, on right: 0 1
 
 
     on left: 1 2, on right: 0 1
 
 
-state 0
+State 0
 
     0 $accept: . exp $end
     1 exp: . exp OP exp
 
     0 $accept: . exp $end
     1 exp: . exp OP exp
@@ -727,14 +700,14 @@ state 0
     exp  go to state 2
 
 
     exp  go to state 2
 
 
-state 1
+State 1
 
     2 exp: NUM .
 
     $default  reduce using rule 2 (exp)
 
 
 
     2 exp: NUM .
 
     $default  reduce using rule 2 (exp)
 
 
-state 2
+State 2
 
     0 $accept: exp . $end
     1 exp: exp . OP exp
 
     0 $accept: exp . $end
     1 exp: exp . OP exp
@@ -743,14 +716,14 @@ state 2
     OP    shift, and go to state 4
 
 
     OP    shift, and go to state 4
 
 
-state 3
+State 3
 
     0 $accept: exp $end .
 
     $default  accept
 
 
 
     0 $accept: exp $end .
 
     $default  accept
 
 
-state 4
+State 4
 
     1 exp: . exp OP exp
     1    | exp OP . exp
 
     1 exp: . exp OP exp
     1    | exp OP . exp
@@ -761,7 +734,7 @@ state 4
     exp  go to state 5
 
 
     exp  go to state 5
 
 
-state 5
+State 5
 
     1 exp: exp . OP exp
     1    | exp OP exp .  [$end, OP]
 
     1 exp: exp . OP exp
     1    | exp OP exp .  [$end, OP]
@@ -856,7 +829,7 @@ id (7)
     on left: 4, on right: 2
 
 
     on left: 4, on right: 2
 
 
-state 0
+State 0
 
     0 $accept: . exp $end
     1 exp: . num
 
     0 $accept: . exp $end
     1 exp: . num
@@ -871,7 +844,7 @@ state 0
     id   go to state 4
 
 
     id   go to state 4
 
 
-state 1
+State 1
 
     3 num: '0' .  [$end]
     4 id: '0' .  [$end]
 
     3 num: '0' .  [$end]
     4 id: '0' .  [$end]
@@ -881,28 +854,28 @@ state 1
     $default  reduce using rule 3 (num)
 
 
     $default  reduce using rule 3 (num)
 
 
-state 2
+State 2
 
     0 $accept: exp . $end
 
     $end  shift, and go to state 5
 
 
 
     0 $accept: exp . $end
 
     $end  shift, and go to state 5
 
 
-state 3
+State 3
 
     1 exp: num .
 
     $default  reduce using rule 1 (exp)
 
 
 
     1 exp: num .
 
     $default  reduce using rule 1 (exp)
 
 
-state 4
+State 4
 
     2 exp: id .
 
     $default  reduce using rule 2 (exp)
 
 
 
     2 exp: id .
 
     $default  reduce using rule 2 (exp)
 
 
-state 5
+State 5
 
     0 $accept: exp $end .
 
 
     0 $accept: exp $end .
 
@@ -929,7 +902,7 @@ exp: exp OP exp | NUM;
 
 AT_BISON_CHECK([-o input.c input.y], 1, [],
 [input.y: conflicts: 1 shift/reduce
 
 AT_BISON_CHECK([-o input.c input.y], 1, [],
 [input.y: conflicts: 1 shift/reduce
-input.y: expected 0 shift/reduce conflicts
+input.y: error: expected 0 shift/reduce conflicts
 ])
 AT_CLEANUP
 
 ])
 AT_CLEANUP
 
@@ -966,7 +939,7 @@ exp: exp OP exp | NUM;
 
 AT_BISON_CHECK([-o input.c input.y], 1, [],
 [input.y: conflicts: 1 shift/reduce
 
 AT_BISON_CHECK([-o input.c input.y], 1, [],
 [input.y: conflicts: 1 shift/reduce
-input.y: expected 2 shift/reduce conflicts
+input.y: error: expected 2 shift/reduce conflicts
 ])
 AT_CLEANUP
 
 ])
 AT_CLEANUP
 
@@ -986,7 +959,7 @@ a: 'a';
 
 AT_BISON_CHECK([-o input.c input.y], 1, [],
 [input.y: conflicts: 1 reduce/reduce
 
 AT_BISON_CHECK([-o input.c input.y], 1, [],
 [input.y: conflicts: 1 reduce/reduce
-input.y: expected 0 reduce/reduce conflicts
+input.y: error: expected 0 reduce/reduce conflicts
 ])
 AT_CLEANUP
 
 ])
 AT_CLEANUP
 
@@ -1203,7 +1176,7 @@ reported_conflicts (9)
     on left: 8 9 10, on right: 1
 
 
     on left: 8 9 10, on right: 1
 
 
-state 0
+State 0
 
     0 $accept: . start $end
     1 start: . resolved_conflict 'a' reported_conflicts 'a'
 
     0 $accept: . start $end
     1 start: . resolved_conflict 'a' reported_conflicts 'a'
@@ -1218,28 +1191,28 @@ state 0
     Conflict between rule 3 and token 'a' resolved as reduce (%left 'a').
 
 
     Conflict between rule 3 and token 'a' resolved as reduce (%left 'a').
 
 
-state 1
+State 1
 
     0 $accept: start . $end
 
     $end  shift, and go to state 3
 
 
 
     0 $accept: start . $end
 
     $end  shift, and go to state 3
 
 
-state 2
+State 2
 
     1 start: resolved_conflict . 'a' reported_conflicts 'a'
 
     'a'  shift, and go to state 4
 
 
 
     1 start: resolved_conflict . 'a' reported_conflicts 'a'
 
     'a'  shift, and go to state 4
 
 
-state 3
+State 3
 
     0 $accept: start $end .
 
     $default  accept
 
 
 
     0 $accept: start $end .
 
     $default  accept
 
 
-state 4
+State 4
 
     1 start: resolved_conflict 'a' . reported_conflicts 'a'
     8 reported_conflicts: . 'a'
 
     1 start: resolved_conflict 'a' . reported_conflicts 'a'
     8 reported_conflicts: . 'a'
@@ -1253,7 +1226,7 @@ state 4
     reported_conflicts  go to state 6
 
 
     reported_conflicts  go to state 6
 
 
-state 5
+State 5
 
     8 reported_conflicts: 'a' .  ['a']
     9                   | 'a' .  ['a']
 
     8 reported_conflicts: 'a' .  ['a']
     9                   | 'a' .  ['a']
@@ -1263,14 +1236,14 @@ state 5
     $default  reduce using rule 8 (reported_conflicts)
 
 
     $default  reduce using rule 8 (reported_conflicts)
 
 
-state 6
+State 6
 
     1 start: resolved_conflict 'a' reported_conflicts . 'a'
 
     'a'  shift, and go to state 7
 
 
 
     1 start: resolved_conflict 'a' reported_conflicts . 'a'
 
     'a'  shift, and go to state 7
 
 
-state 7
+State 7
 
     1 start: resolved_conflict 'a' reported_conflicts 'a' .
 
 
     1 start: resolved_conflict 'a' reported_conflicts 'a' .
 
@@ -1324,8 +1297,8 @@ empty_c2: %prec 'c' ;
 empty_c3: %prec 'd' ;
 ]])
 AT_BISON_CHECK([[--report=all -o input.c input.y]], 0, [], [ignore])
 empty_c3: %prec 'd' ;
 ]])
 AT_BISON_CHECK([[--report=all -o input.c input.y]], 0, [], [ignore])
-AT_CHECK([[cat input.output | sed -n '/^state 0$/,/^state 1$/p']], 0,
-[[state 0
+AT_CHECK([[cat input.output | sed -n '/^State 0$/,/^State 1$/p']], 0,
+[[State 0
 
     0 $accept: . start $end
     1 start: . 'a'
 
     0 $accept: . start $end
     1 start: . 'a'
@@ -1343,7 +1316,7 @@ AT_CHECK([[cat input.output | sed -n '/^state 0$/,/^state 1$/p']], 0,
    13 empty_c3: .  ['c']
 
     'b'  shift, and go to state 1
    13 empty_c3: .  ['c']
 
     'b'  shift, and go to state 1
+
     'c'       reduce using rule 13 (empty_c3)
     $default  reduce using rule 9 (empty_a)
 
     'c'       reduce using rule 13 (empty_c3)
     $default  reduce using rule 9 (empty_a)
 
@@ -1361,7 +1334,7 @@ AT_CHECK([[cat input.output | sed -n '/^state 0$/,/^state 1$/p']], 0,
     Conflict between rule 13 and token 'c' resolved as reduce ('c' < 'd').
 
 
     Conflict between rule 13 and token 'c' resolved as reduce ('c' < 'd').
 
 
-state 1
+State 1
 ]])
 
 AT_CLEANUP
 ]])
 
 AT_CLEANUP
@@ -1400,8 +1373,8 @@ empty_c3: %prec 'c' ;
 ]])
 
 AT_BISON_CHECK([[--report=all -o input.c input.y]], 0, [], [ignore])
 ]])
 
 AT_BISON_CHECK([[--report=all -o input.c input.y]], 0, [], [ignore])
-AT_CHECK([[cat input.output | sed -n '/^state 0$/,/^state 1$/p']], 0,
-[[state 0
+AT_CHECK([[cat input.output | sed -n '/^State 0$/,/^State 1$/p']], 0,
+[[State 0
 
     0 $accept: . start $end
     1 start: . 'a'
 
     0 $accept: . start $end
     1 start: . 'a'
@@ -1437,7 +1410,7 @@ AT_CHECK([[cat input.output | sed -n '/^state 0$/,/^state 1$/p']], 0,
     Conflict between rule 11 and token 'c' resolved as an error (%nonassoc 'c').
 
 
     Conflict between rule 11 and token 'c' resolved as an error (%nonassoc 'c').
 
 
-state 1
+State 1
 ]])
 AT_CLEANUP
 
 ]])
 AT_CLEANUP
 
@@ -1527,11 +1500,11 @@ AT_BISON_CHECK([[-Wno-conflicts-rr sr-rr.y]], [[0]], [[]],
         echo "$file: conflicts: $conflicts" > experr
         if test $sr_count -ne $sr_exp; then
           if test $sr_exp -ne 1; then s=s; else s= ; fi
         echo "$file: conflicts: $conflicts" > experr
         if test $sr_count -ne $sr_exp; then
           if test $sr_exp -ne 1; then s=s; else s= ; fi
-          echo "$file: expected $sr_exp shift/reduce conflict$s" >> experr
+          echo "$file: error: expected $sr_exp shift/reduce conflict$s" >> experr
         fi
         if test $rr_count -ne $rr_exp; then
           if test $rr_exp -ne 1; then s=s; else s= ; fi
         fi
         if test $rr_count -ne $rr_exp; then
           if test $rr_exp -ne 1; then s=s; else s= ; fi
-          echo "$file: expected $rr_exp reduce/reduce conflict$s" >> experr
+          echo "$file: error: expected $rr_exp reduce/reduce conflict$s" >> experr
         fi
         ]AT_BISON_CHECK([[-Wnone $file]], [[1]], [[]], [[experr]])[
         ]AT_BISON_CHECK([[-Werror $file]], [[1]], [[]], [[experr]])[
         fi
         ]AT_BISON_CHECK([[-Wnone $file]], [[1]], [[]], [[experr]])[
         ]AT_BISON_CHECK([[-Werror $file]], [[1]], [[]], [[experr]])[