| Index: bison/src/bison/2.4.1/bison-2.4.1-src/tests/headers.at
|
| ===================================================================
|
| --- bison/src/bison/2.4.1/bison-2.4.1-src/tests/headers.at (revision 0)
|
| +++ bison/src/bison/2.4.1/bison-2.4.1-src/tests/headers.at (revision 0)
|
| @@ -0,0 +1,135 @@
|
| +# Bison Parser Headers. -*- Autotest -*-
|
| +# Copyright (C) 2001, 2002, 2006, 2007 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
|
| +# 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, see <http://www.gnu.org/licenses/>.
|
| +
|
| +AT_BANNER([[Parser Headers.]])
|
| +
|
| +
|
| +## ---------------------- ##
|
| +## %union and --defines. ##
|
| +## ---------------------- ##
|
| +
|
| +
|
| +AT_SETUP([%union and --defines])
|
| +
|
| +AT_DATA([input.y],
|
| +[%union
|
| +{
|
| + int integer;
|
| + char *string ;
|
| +}
|
| +%%
|
| +exp: {};
|
| +])
|
| +
|
| +AT_BISON_CHECK([--defines input.y])
|
| +
|
| +AT_CLEANUP
|
| +
|
| +
|
| +
|
| +## --------------------- ##
|
| +## Invalid CPP headers. ##
|
| +## --------------------- ##
|
| +
|
| +# AT_TEST_CPP_GUARD_H([INPUT-FILE-BASE)
|
| +# -------------------------------------
|
| +m4_define([AT_TEST_CPP_GUARD_H],
|
| +[AT_SETUP([Invalid CPP guards: $1])
|
| +
|
| +# Possibly create inner directories.
|
| +dirname=`AS_DIRNAME([$1])`
|
| +AS_MKDIR_P([$dirname])
|
| +
|
| +AT_DATA_GRAMMAR([$1.y],
|
| +[%{
|
| +#include <$1.h>
|
| +void yyerror (const char *);
|
| +int yylex (void);
|
| +%}
|
| +%%
|
| +dummy:;
|
| +%%
|
| +#include <$1.h>
|
| +])
|
| +
|
| +AT_BISON_CHECK([--defines=$1.h --output=y.tab.c $1.y])
|
| +
|
| +AT_COMPILE([y.tab.o], [-I. -c y.tab.c])
|
| +
|
| +AT_CLEANUP
|
| +])
|
| +
|
| +AT_TEST_CPP_GUARD_H([input/input])
|
| +AT_TEST_CPP_GUARD_H([9foo])
|
| +
|
| +
|
| +
|
| +## ---------------- ##
|
| +## export YYLTYPE. ##
|
| +## ---------------- ##
|
| +
|
| +
|
| +AT_SETUP([export YYLTYPE])
|
| +
|
| +AT_DATA_GRAMMAR([input.y],
|
| +[%locations
|
| +
|
| +%name-prefix "my_"
|
| +%{
|
| +#include <stdio.h>
|
| +#include <stdlib.h>
|
| +
|
| +static int
|
| +my_lex (void)
|
| +{
|
| + return EOF;
|
| +}
|
| +
|
| +static void
|
| +my_error (const char *msg)
|
| +{
|
| + fprintf (stderr, "%s\n", msg);
|
| +}
|
| +
|
| +%}
|
| +%%
|
| +exp:;
|
| +])
|
| +
|
| +AT_BISON_CHECK([--defines -o input.c input.y])
|
| +
|
| +# YYLTYPE should be defined, and MY_LLOC declared.
|
| +AT_DATA([caller.c],
|
| +[[#include "input.h"
|
| +YYLTYPE *my_llocp = &my_lloc;
|
| +
|
| +int my_parse (void);
|
| +
|
| +int
|
| +main (void)
|
| +{
|
| + return my_parse ();
|
| +}
|
| +]])
|
| +
|
| +# Link and execute, just to make sure everything is fine (and in
|
| +# particular, that MY_LLOC is indeed defined somewhere).
|
| +AT_COMPILE([caller.o], [-c caller.c])
|
| +AT_COMPILE([input.o], [-c input.c])
|
| +AT_COMPILE([caller], [caller.o input.o])
|
| +AT_PARSER_CHECK([./caller])
|
| +
|
| +AT_CLEANUP
|
|
|