mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
tests: generalize default main for api.namespace
* tests/local.at (AT_NAME_PREFIX): Also match api.namespace. (AT_MAIN_DEFINE): Take it into account. * tests/c++.at, tests/headers.at: Use AT_NAME_PREFIX. (AT_CHECK_NAMESPACE): Rename as... (AT_TEST): this.
This commit is contained in:
47
tests/c++.at
47
tests/c++.at
@@ -274,14 +274,13 @@ AT_CHECK_DOXYGEN([Private])
|
|||||||
## Namespaces. ##
|
## Namespaces. ##
|
||||||
## ------------ ##
|
## ------------ ##
|
||||||
|
|
||||||
# AT_CHECK_NAMESPACE(NAMESPACE-DECL, [COMPILE-ERROR])
|
# AT_TEST(NAMESPACE-DECL, [COMPILE-ERROR])
|
||||||
# ---------------------------------------------------
|
# ----------------------------------------
|
||||||
# See if Bison can handle %define namespace "NAMESPACE-DECL". If COMPILE-ERROR
|
# See if Bison can handle %define namespace "NAMESPACE-DECL". If COMPILE-ERROR
|
||||||
# is specified, then Bison should accept the input, but compilation will fail,
|
# is specified, then Bison should accept the input, but compilation will fail,
|
||||||
# so don't check compilation.
|
# so don't check compilation.
|
||||||
m4_define([AT_CHECK_NAMESPACE],
|
m4_pushdef([AT_TEST],
|
||||||
[
|
[AT_BISON_OPTION_PUSHDEFS([%language "C++" %define api.namespace "$1"])
|
||||||
|
|
||||||
AT_DATA_GRAMMAR([[input.y]],
|
AT_DATA_GRAMMAR([[input.y]],
|
||||||
[[%language "C++"
|
[[%language "C++"
|
||||||
%defines
|
%defines
|
||||||
@@ -311,12 +310,7 @@ void
|
|||||||
std::cerr << "At " << loc << ": " << msg << std::endl;
|
std::cerr << "At " << loc << ": " << msg << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
]AT_MAIN_DEFINE[
|
||||||
main ()
|
|
||||||
{
|
|
||||||
]$1[::parser p;
|
|
||||||
return p.parse ();
|
|
||||||
}
|
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_BISON_CHECK([[-o input.cc input.y]])
|
AT_BISON_CHECK([[-o input.cc input.y]])
|
||||||
@@ -324,34 +318,35 @@ AT_BISON_CHECK([[-o input.cc input.y]])
|
|||||||
m4_if([$#], [1],
|
m4_if([$#], [1],
|
||||||
[AT_COMPILE_CXX([[input]], [[input.cc]])
|
[AT_COMPILE_CXX([[input]], [[input.cc]])
|
||||||
AT_PARSER_CHECK([[./input]])])
|
AT_PARSER_CHECK([[./input]])])
|
||||||
|
AT_BISON_OPTION_POPDEFS
|
||||||
])
|
])
|
||||||
|
|
||||||
AT_SETUP([[Relative namespace references]])
|
AT_SETUP([[Relative namespace references]])
|
||||||
AT_CHECK_NAMESPACE([[foo]])
|
AT_TEST([[foo]])
|
||||||
AT_CHECK_NAMESPACE([[foo::bar]])
|
AT_TEST([[foo::bar]])
|
||||||
AT_CHECK_NAMESPACE([[foo::bar::baz]])
|
AT_TEST([[foo::bar::baz]])
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
AT_SETUP([[Absolute namespace references]])
|
AT_SETUP([[Absolute namespace references]])
|
||||||
AT_CHECK_NAMESPACE([[::foo]])
|
AT_TEST([[::foo]])
|
||||||
AT_CHECK_NAMESPACE([[::foo::bar]])
|
AT_TEST([[::foo::bar]])
|
||||||
AT_CHECK_NAMESPACE([[::foo::bar::baz]])
|
AT_TEST([[::foo::bar::baz]])
|
||||||
AT_CHECK_NAMESPACE([[ ::foo]])
|
AT_TEST([[ ::foo]])
|
||||||
AT_CHECK_NAMESPACE([[ ::foo::bar]])
|
AT_TEST([[ ::foo::bar]])
|
||||||
AT_CHECK_NAMESPACE([[ ::foo::bar::baz]])
|
AT_TEST([[ ::foo::bar::baz]])
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
AT_SETUP([[Syntactically invalid namespace references]])
|
AT_SETUP([[Syntactically invalid namespace references]])
|
||||||
AT_CHECK_NAMESPACE([[:foo:bar]], [[-]])
|
AT_TEST([[:foo:bar]], [[-]])
|
||||||
AT_CHECK_NAMESPACE([[foo: :bar]], [[-]])
|
AT_TEST([[foo: :bar]], [[-]])
|
||||||
# This one is interesting because `[3]' is encoded as `@<:@3@:>@', which
|
# This one is interesting because `[3]' is encoded as `@<:@3@:>@', which
|
||||||
# contains single occurrences of `:'.
|
# contains single occurrences of `:'.
|
||||||
AT_CHECK_NAMESPACE([[foo[3]::bar::baz]], [[-]])
|
AT_TEST([[foo[3]::bar::baz]], [[-]])
|
||||||
AT_CHECK_NAMESPACE([[foo::bar,baz]], [[-]])
|
AT_TEST([[foo::bar,baz]], [[-]])
|
||||||
AT_CHECK_NAMESPACE([[foo::bar::(baz /* Pacify Emacs ) */]], [[-]])
|
AT_TEST([[foo::bar::(baz /* Pacify Emacs ) */]], [[-]])
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
|
m4_popdef([AT_TEST])
|
||||||
|
|
||||||
## -------------------------------------- ##
|
## -------------------------------------- ##
|
||||||
## Syntax error discarding no lookahead. ##
|
## Syntax error discarding no lookahead. ##
|
||||||
|
|||||||
@@ -68,30 +68,21 @@ AT_TEST_CPP_GUARD_H([9foo], [%glr-parser])
|
|||||||
|
|
||||||
AT_SETUP([export YYLTYPE])
|
AT_SETUP([export YYLTYPE])
|
||||||
|
|
||||||
|
AT_BISON_OPTION_PUSHDEFS([%name-prefix "my_"])
|
||||||
AT_DATA_GRAMMAR([input.y],
|
AT_DATA_GRAMMAR([input.y],
|
||||||
[%locations
|
[[%locations
|
||||||
|
|
||||||
%name-prefix "my_"
|
%name-prefix "my_"
|
||||||
%{
|
%{
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
static int
|
]AT_YYERROR_DEFINE[
|
||||||
my_lex (void)
|
]AT_YYLEX_DEFINE[
|
||||||
{
|
|
||||||
return EOF;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
my_error (const char *msg)
|
|
||||||
{
|
|
||||||
fprintf (stderr, "%s\n", msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
%}
|
%}
|
||||||
%%
|
%%
|
||||||
exp:;
|
exp:;
|
||||||
])
|
]])
|
||||||
|
|
||||||
AT_BISON_CHECK([--defines -o input.c input.y])
|
AT_BISON_CHECK([--defines -o input.c input.y])
|
||||||
|
|
||||||
@@ -102,11 +93,7 @@ YYLTYPE *my_llocp = &my_lloc;
|
|||||||
|
|
||||||
int my_parse (void);
|
int my_parse (void);
|
||||||
|
|
||||||
int
|
]AT_MAIN_DEFINE[
|
||||||
main (void)
|
|
||||||
{
|
|
||||||
return my_parse ();
|
|
||||||
}
|
|
||||||
]])
|
]])
|
||||||
|
|
||||||
# Link and execute, just to make sure everything is fine (and in
|
# Link and execute, just to make sure everything is fine (and in
|
||||||
@@ -115,7 +102,7 @@ AT_COMPILE([caller.o])
|
|||||||
AT_COMPILE([input.o])
|
AT_COMPILE([input.o])
|
||||||
AT_COMPILE([caller], [caller.o input.o])
|
AT_COMPILE([caller], [caller.o input.o])
|
||||||
AT_PARSER_CHECK([./caller])
|
AT_PARSER_CHECK([./caller])
|
||||||
|
AT_BISON_OPTION_POPDEFS
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
## ----------------- ##
|
## ----------------- ##
|
||||||
|
|||||||
@@ -168,9 +168,10 @@ m4_pushdef([AT_PURE_IF],
|
|||||||
[m4_bmatch([$3], [%define *api\.pure\|%pure-parser],
|
[m4_bmatch([$3], [%define *api\.pure\|%pure-parser],
|
||||||
[m4_bmatch([$3], [%define *api\.pure *"?false"?], [$2], [$1])],
|
[m4_bmatch([$3], [%define *api\.pure *"?false"?], [$2], [$1])],
|
||||||
[$2])])
|
[$2])])
|
||||||
|
# AT_NAME_PREFIX: also consider api.namespace.
|
||||||
m4_pushdef([AT_NAME_PREFIX],
|
m4_pushdef([AT_NAME_PREFIX],
|
||||||
[m4_bmatch([$3], [\(%define api\.prefix\|%name-prefix\) ".*"],
|
[m4_bmatch([$3], [\(%define api\.\(namespace\|prefix\)\|%name-prefix\) ".*"],
|
||||||
[m4_bregexp([$3], [\(%define api\.prefix\|%name-prefix\) "\([^""]*\)"], [\2])],
|
[m4_bregexp([$3], [\(%define api\.\(namespace\|prefix\)\|%name-prefix\) "\([^""]*\)"], [\3])],
|
||||||
[yy])])
|
[yy])])
|
||||||
m4_pushdef([AT_TOKEN_CTOR_IF],
|
m4_pushdef([AT_TOKEN_CTOR_IF],
|
||||||
[m4_bmatch([$3], [%define api.token.constructor], [$1], [$2])])
|
[m4_bmatch([$3], [%define api.token.constructor], [$1], [$2])])
|
||||||
@@ -462,7 +463,7 @@ main (int argc, char const* argv[])
|
|||||||
yydebug |= 1;]], [[
|
yydebug |= 1;]], [[
|
||||||
(void) argc;
|
(void) argc;
|
||||||
(void) argv;]])[
|
(void) argv;]])[
|
||||||
return yyparse ();
|
return ]AT_NAME_PREFIX[parse ();
|
||||||
}]],
|
}]],
|
||||||
[c++],
|
[c++],
|
||||||
[[#include <cstdlib> // getenv.
|
[[#include <cstdlib> // getenv.
|
||||||
@@ -470,7 +471,7 @@ main (int argc, char const* argv[])
|
|||||||
int
|
int
|
||||||
main (int argc, char const* argv[])
|
main (int argc, char const* argv[])
|
||||||
{
|
{
|
||||||
yy::parser p;]AT_DEBUG_IF([[
|
]AT_NAME_PREFIX[::parser p;]AT_DEBUG_IF([[
|
||||||
if (getenv("YYDEBUG")
|
if (getenv("YYDEBUG")
|
||||||
|| (argc == 2
|
|| (argc == 2
|
||||||
&& (!strcmp (argv[1], "-d") || !strcmp (argv[1], "--debug"))))
|
&& (!strcmp (argv[1], "-d") || !strcmp (argv[1], "--debug"))))
|
||||||
|
|||||||
Reference in New Issue
Block a user