# Bison Regressions. -*- Autotest -*-
-# Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
# 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
# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
AT_BANNER([[Regression tests.]])
# Bison managed, when fed with `%token 'f' "f"' to #define 'f'!
AT_DATA_GRAMMAR([input.y],
[%{
+#include <stdio.h>
void yyerror (const char *s);
int yylex (void);
%}
-[%token MYEOF 0 "end of file"
+[%error-verbose
+%token MYEOF 0 "end of file"
%token 'a' "a"
-%token b "b"
-%token c 'c'
-%token 'd' d
+%token B_TOKEN "b"
+%token C_TOKEN 'c'
+%token 'd' D_TOKEN
+%token SPECIAL "\\\'\?\"\n\t??!"
%%
-exp: "a";
+exp: "a" "\\\'\?\"\n\t??!";
+%%
+void
+yyerror (char const *s)
+{
+ fprintf (stderr, "%s\n", s);
+}
+
+int
+yylex (void)
+{
+ return SPECIAL;
+}
+
+int
+main (void)
+{
+ return yyparse ();
+}
]])
AT_CHECK([bison -o input.c input.y])
-AT_COMPILE([input.o], [-c input.c])
+AT_COMPILE([input])
+AT_PARSER_CHECK([./input], 1, [],
+[syntax error, unexpected \'?"
+ ??!, expecting a
+])
AT_CLEANUP
};
static const char *const yytname[] =
{
- "$end", "error", "$undefined", "\"if\"", "\"const\"", "\"then\"",
- "\"else\"", "$accept", "statement", "struct_stat", "if", "else", 0
+ "$end", "error", "$undefined", "if", "const", "then", "else", "$accept",
+ "statement", "struct_stat", "if", "else", 0
};
static const unsigned short int yytoknum[] =
{
AT_LALR1_CC_IF(
[/* A C++ error reporting function. */
void
-yy::Parser::error_ ()
+yy::parser::error (const location&, const std::string& m)
{
- std::cerr << message << std::endl;
+ std::cerr << m << std::endl;
}
int
-yyparse (void)
+yyparse ()
{
- yy::Parser parser (!!YYDEBUG);
+ yy::parser parser;
+ parser.set_debug_level (!!YYDEBUG);
return parser.parse ();
}
],