mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-21 02:03:03 +00:00
no-lines: avoid leaving an empty line instead of the syncline
Currently, with --no-lines, instead of "#line file line\n", we emit "\n". Let's emit nothing. * data/skeletons/bison.m4 (b4_syncline): Emit at end-of-line when enabled. * data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/glr.cc, * data/skeletons/lalr1.cc, src/output.c: Use dnl after b4_syncline to avoid spurious empty lines. * tests/synclines.at (Sync Lines): Make sure that --no-lines is like grep -v #line. * tests/calc.at: Make sure that a rich grammar file behaves properly with %no-lines.
This commit is contained in:
@@ -448,9 +448,9 @@ m4_define([b4_symbol_action],
|
|||||||
[],
|
[],
|
||||||
[(*yylocationp)])dnl
|
[(*yylocationp)])dnl
|
||||||
_b4_symbol_case([$1])[]dnl
|
_b4_symbol_case([$1])[]dnl
|
||||||
b4_syncline([b4_symbol([$1], [$2_line])], [b4_symbol([$1], [$2_file])])
|
b4_syncline([b4_symbol([$1], [$2_line])], [b4_symbol([$1], [$2_file])])dnl
|
||||||
b4_symbol([$1], [$2])
|
b4_symbol([$1], [$2])
|
||||||
b4_syncline([@oline@], [@ofile@])
|
b4_syncline([@oline@], [@ofile@])dnl
|
||||||
break;
|
break;
|
||||||
|
|
||||||
b4_dollar_popdef[]dnl
|
b4_dollar_popdef[]dnl
|
||||||
@@ -579,13 +579,15 @@ m4_define([b4_basename],
|
|||||||
[m4_bpatsubst([$1], [^.*/\([^/]+\)/*$], [\1])])
|
[m4_bpatsubst([$1], [^.*/\([^/]+\)/*$], [\1])])
|
||||||
|
|
||||||
|
|
||||||
# b4_syncline(LINE, FILE)
|
# b4_syncline(LINE, FILE)dnl
|
||||||
# -----------------------
|
# --------------------------
|
||||||
|
# Should always be following by a dnl.
|
||||||
|
#
|
||||||
# Emit "#line LINE FILE /* __LINE__ __FILE__ */".
|
# Emit "#line LINE FILE /* __LINE__ __FILE__ */".
|
||||||
m4_define([b4_syncline],
|
m4_define([b4_syncline],
|
||||||
[b4_flag_if([synclines],
|
[b4_flag_if([synclines],
|
||||||
[b4_sync_start([$1], [$2])[]dnl
|
[b4_sync_start([$1], [$2])[]dnl
|
||||||
b4_sync_end([__line__], [b4_basename(m4_quote(__file__))])[]dnl
|
b4_sync_end([__line__], [b4_basename(m4_quote(__file__))])
|
||||||
])])
|
])])
|
||||||
|
|
||||||
# b4_sync_start(LINE, FILE)
|
# b4_sync_start(LINE, FILE)
|
||||||
@@ -757,8 +759,10 @@ m4_define([b4_percent_define_get_kind],
|
|||||||
[m4_indir([b4_percent_define_kind(]$1[)])],
|
[m4_indir([b4_percent_define_kind(]$1[)])],
|
||||||
[b4_fatal([[$0: undefined %%define variable '%s']], [$1])])])
|
[b4_fatal([[$0: undefined %%define variable '%s']], [$1])])])
|
||||||
|
|
||||||
# b4_percent_define_get_syncline(VARIABLE)
|
# b4_percent_define_get_syncline(VARIABLE)dnl
|
||||||
# ----------------------------------------
|
# -------------------------------------------
|
||||||
|
# Should always be following by a dnl.
|
||||||
|
#
|
||||||
# Mimic muscle_percent_define_get_syncline in ../src/muscle-tab.h exactly.
|
# Mimic muscle_percent_define_get_syncline in ../src/muscle-tab.h exactly.
|
||||||
# That is, if the %define variable VARIABLE is undefined, complain fatally
|
# That is, if the %define variable VARIABLE is undefined, complain fatally
|
||||||
# since that's a Bison or skeleton error. Otherwise, return its definition
|
# since that's a Bison or skeleton error. Otherwise, return its definition
|
||||||
@@ -974,8 +978,7 @@ m4_ifval([$1], [m4_define([b4_percent_code_bison_qualifiers(]$1[)])])dnl
|
|||||||
m4_ifdef(b4_macro_name,
|
m4_ifdef(b4_macro_name,
|
||||||
[b4_comment([m4_if([$#], [0], [[Unqualified %code]],
|
[b4_comment([m4_if([$#], [0], [[Unqualified %code]],
|
||||||
[["%code ]$1["]])[ blocks.]])
|
[["%code ]$1["]])[ blocks.]])
|
||||||
b4_user_code([m4_indir(b4_macro_name)])
|
b4_user_code([m4_indir(b4_macro_name)])])dnl
|
||||||
])dnl
|
|
||||||
m4_popdef([b4_macro_name])])
|
m4_popdef([b4_macro_name])])
|
||||||
|
|
||||||
# b4_percent_code_ifdef(QUALIFIER, IF-TRUE, [IF-FALSE])
|
# b4_percent_code_ifdef(QUALIFIER, IF-TRUE, [IF-FALSE])
|
||||||
|
|||||||
@@ -147,13 +147,13 @@ m4_if(m4_bregexp(b4_namespace_ref, [::[ ]*$]), [-1], [],
|
|||||||
[[namespace reference has a trailing "::"]])])
|
[[namespace reference has a trailing "::"]])])
|
||||||
|
|
||||||
m4_define([b4_namespace_open],
|
m4_define([b4_namespace_open],
|
||||||
[b4_user_code([b4_percent_define_get_syncline([[api.namespace]])
|
[b4_user_code([b4_percent_define_get_syncline([[api.namespace]])dnl
|
||||||
[namespace ]m4_bpatsubst(m4_dquote(m4_bpatsubst(m4_dquote(b4_namespace_ref),
|
[namespace ]m4_bpatsubst(m4_dquote(m4_bpatsubst(m4_dquote(b4_namespace_ref),
|
||||||
[^\(.\)[ ]*::], [\1])),
|
[^\(.\)[ ]*::], [\1])),
|
||||||
[::], [ { namespace ])[ {]])])
|
[::], [ { namespace ])[ {]])])
|
||||||
|
|
||||||
m4_define([b4_namespace_close],
|
m4_define([b4_namespace_close],
|
||||||
[b4_user_code([b4_percent_define_get_syncline([[api.namespace]])
|
[b4_user_code([b4_percent_define_get_syncline([[api.namespace]])dnl
|
||||||
m4_bpatsubst(m4_dquote(m4_bpatsubst(m4_dquote(b4_namespace_ref[ ]),
|
m4_bpatsubst(m4_dquote(m4_bpatsubst(m4_dquote(b4_namespace_ref[ ]),
|
||||||
[^\(.\)[ ]*\(::\)?\([^][:]\|:[^:]\)*],
|
[^\(.\)[ ]*\(::\)?\([^][:]\|:[^:]\)*],
|
||||||
[\1])),
|
[\1])),
|
||||||
@@ -194,7 +194,7 @@ m4_define([b4_value_type_declare],
|
|||||||
[union\|union-directive],
|
[union\|union-directive],
|
||||||
[[ union semantic_type
|
[[ union semantic_type
|
||||||
{
|
{
|
||||||
]b4_user_union_members[
|
]b4_user_union_members[
|
||||||
};]])])dnl
|
};]])])dnl
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|||||||
@@ -474,7 +474,7 @@ m4_define([b4_sync_start], [[#]line $1 $2])
|
|||||||
m4_define([b4_case],
|
m4_define([b4_case],
|
||||||
[ case $1:
|
[ case $1:
|
||||||
$2
|
$2
|
||||||
b4_syncline([@oline@], [@ofile@])
|
b4_syncline([@oline@], [@ofile@])dnl
|
||||||
break;])
|
break;])
|
||||||
|
|
||||||
|
|
||||||
@@ -484,7 +484,7 @@ m4_define([b4_predicate_case],
|
|||||||
[ case $1:
|
[ case $1:
|
||||||
if (! (
|
if (! (
|
||||||
$2)) YYERROR;
|
$2)) YYERROR;
|
||||||
b4_syncline([@oline@], [@ofile@])
|
b4_syncline([@oline@], [@ofile@])dnl
|
||||||
break;])
|
break;])
|
||||||
|
|
||||||
|
|
||||||
@@ -713,13 +713,13 @@ typedef ]b4_percent_define_get([[api.value.type]])[ ]b4_api_PREFIX[STYPE;
|
|||||||
[m4_bmatch(b4_percent_define_get([[api.value.type]]),
|
[m4_bmatch(b4_percent_define_get([[api.value.type]]),
|
||||||
[union\|union-directive],
|
[union\|union-directive],
|
||||||
[[#if ! defined ]b4_api_PREFIX[STYPE && ! defined ]b4_api_PREFIX[STYPE_IS_DECLARED
|
[[#if ! defined ]b4_api_PREFIX[STYPE && ! defined ]b4_api_PREFIX[STYPE_IS_DECLARED
|
||||||
]b4_percent_define_get_syncline([[api.value.union.name]])[
|
]b4_percent_define_get_syncline([[api.value.union.name]])dnl
|
||||||
union ]b4_percent_define_get([[api.value.union.name]])[
|
[union ]b4_percent_define_get([[api.value.union.name]])[
|
||||||
{
|
{
|
||||||
]b4_user_union_members[
|
]b4_user_union_members[
|
||||||
};
|
};
|
||||||
]b4_percent_define_get_syncline([[api.value.union.name]])[
|
]b4_percent_define_get_syncline([[api.value.union.name]])dnl
|
||||||
typedef union ]b4_percent_define_get([[api.value.union.name]])[ ]b4_api_PREFIX[STYPE;
|
[typedef union ]b4_percent_define_get([[api.value.union.name]])[ ]b4_api_PREFIX[STYPE;
|
||||||
# define ]b4_api_PREFIX[STYPE_IS_TRIVIAL 1
|
# define ]b4_api_PREFIX[STYPE_IS_TRIVIAL 1
|
||||||
# define ]b4_api_PREFIX[STYPE_IS_DECLARED 1
|
# define ]b4_api_PREFIX[STYPE_IS_DECLARED 1
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -202,8 +202,8 @@ b4_copyright([Skeleton interface for Bison GLR parsers in C],
|
|||||||
]b4_cpp_guard_open([b4_spec_header_file])[
|
]b4_cpp_guard_open([b4_spec_header_file])[
|
||||||
]b4_shared_declarations[
|
]b4_shared_declarations[
|
||||||
]b4_cpp_guard_close([b4_spec_header_file])[
|
]b4_cpp_guard_close([b4_spec_header_file])[
|
||||||
]b4_output_end
|
]b4_output_end[
|
||||||
])])
|
]])])
|
||||||
|
|
||||||
|
|
||||||
# ------------------------- #
|
# ------------------------- #
|
||||||
|
|||||||
@@ -100,8 +100,8 @@ m4_defn([b4_initial_action])]))])[
|
|||||||
|
|
||||||
# Hijack the post prologue to declare yyerror.
|
# Hijack the post prologue to declare yyerror.
|
||||||
]m4_append([b4_post_prologue],
|
]m4_append([b4_post_prologue],
|
||||||
[b4_syncline([@oline@], [@ofile@])[
|
[b4_syncline([@oline@], [@ofile@])dnl
|
||||||
]b4_function_declare([yyerror],
|
b4_function_declare([yyerror],
|
||||||
[static void],b4_locations_if([
|
[static void],b4_locations_if([
|
||||||
[[const ]b4_namespace_ref::b4_parser_class[::location_type *yylocationp],
|
[[const ]b4_namespace_ref::b4_parser_class[::location_type *yylocationp],
|
||||||
[yylocationp]],])
|
[yylocationp]],])
|
||||||
@@ -128,8 +128,8 @@ m4_if(b4_prefix, [yy], [],
|
|||||||
# Hijack the epilogue to define implementations (yyerror, parser member
|
# Hijack the epilogue to define implementations (yyerror, parser member
|
||||||
# functions etc.).
|
# functions etc.).
|
||||||
m4_append([b4_epilogue],
|
m4_append([b4_epilogue],
|
||||||
[b4_syncline([@oline@], [@ofile@])[
|
[b4_syncline([@oline@], [@ofile@])dnl
|
||||||
|
[
|
||||||
/*------------------.
|
/*------------------.
|
||||||
| Report an error. |
|
| Report an error. |
|
||||||
`------------------*/
|
`------------------*/
|
||||||
@@ -234,7 +234,7 @@ m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
]m4_popdef([b4_parse_param])dnl
|
]m4_popdef([b4_parse_param])dnl
|
||||||
b4_namespace_close
|
b4_namespace_close[]dnl
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -111,9 +111,9 @@ b4_dollar_pushdef([yysym.value],
|
|||||||
[],
|
[],
|
||||||
[yysym.location])dnl
|
[yysym.location])dnl
|
||||||
_b4_symbol_case([$1])[]dnl
|
_b4_symbol_case([$1])[]dnl
|
||||||
b4_syncline([b4_symbol([$1], [$2_line])], [b4_symbol([$1], [$2_file])])
|
b4_syncline([b4_symbol([$1], [$2_line])], [b4_symbol([$1], [$2_file])])dnl
|
||||||
b4_symbol([$1], [$2])
|
b4_symbol([$1], [$2])
|
||||||
b4_syncline([@oline@], [@ofile@])
|
b4_syncline([@oline@], [@ofile@])dnl
|
||||||
break;
|
break;
|
||||||
|
|
||||||
m4_popdef([b4_symbol_value])[]dnl
|
m4_popdef([b4_symbol_value])[]dnl
|
||||||
@@ -412,9 +412,9 @@ b4_copyright([Skeleton interface for Bison LALR(1) parsers in C++])
|
|||||||
]b4_disclaimer[
|
]b4_disclaimer[
|
||||||
]b4_cpp_guard_open([b4_spec_header_file])[
|
]b4_cpp_guard_open([b4_spec_header_file])[
|
||||||
]b4_shared_declarations(hh)[
|
]b4_shared_declarations(hh)[
|
||||||
]b4_cpp_guard_close([b4_spec_header_file])
|
]b4_cpp_guard_close([b4_spec_header_file])[
|
||||||
b4_output_end
|
]b4_output_end[
|
||||||
])
|
]])
|
||||||
|
|
||||||
|
|
||||||
b4_output_begin([b4_parser_file_name])[
|
b4_output_begin([b4_parser_file_name])[
|
||||||
|
|||||||
@@ -1699,7 +1699,7 @@ yyreduce:
|
|||||||
}]], [[
|
}]], [[
|
||||||
switch (yyn)
|
switch (yyn)
|
||||||
{
|
{
|
||||||
]b4_user_actions[
|
]b4_user_actions[
|
||||||
default: break;
|
default: break;
|
||||||
}]])[
|
}]])[
|
||||||
/* User semantic actions sometimes alter yychar, and that requires
|
/* User semantic actions sometimes alter yychar, and that requires
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ muscle_syncline_grow (char const *key, location loc)
|
|||||||
obstack_printf (&muscle_obstack, "]b4_syncline(%d, ", loc.start.line);
|
obstack_printf (&muscle_obstack, "]b4_syncline(%d, ", loc.start.line);
|
||||||
obstack_quote (&muscle_obstack,
|
obstack_quote (&muscle_obstack,
|
||||||
quotearg_style (c_quoting_style, loc.start.file));
|
quotearg_style (c_quoting_style, loc.start.file));
|
||||||
obstack_sgrow (&muscle_obstack, ")[");
|
obstack_sgrow (&muscle_obstack, ")dnl\n[");
|
||||||
char const *extension = obstack_finish0 (&muscle_obstack);
|
char const *extension = obstack_finish0 (&muscle_obstack);
|
||||||
muscle_grow (key, extension, "", "");
|
muscle_grow (key, extension, "", "");
|
||||||
obstack_free (&muscle_obstack, extension);
|
obstack_free (&muscle_obstack, extension);
|
||||||
@@ -227,7 +227,7 @@ void
|
|||||||
muscle_code_grow (const char *key, const char *val, location loc)
|
muscle_code_grow (const char *key, const char *val, location loc)
|
||||||
{
|
{
|
||||||
muscle_syncline_grow (key, loc);
|
muscle_syncline_grow (key, loc);
|
||||||
muscle_grow (key, val, "\n", "\n");
|
muscle_grow (key, val, "", "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -374,7 +374,7 @@ user_actions_output (FILE *out)
|
|||||||
rules[r].is_predicate ? "b4_predicate_case" : "b4_case",
|
rules[r].is_predicate ? "b4_predicate_case" : "b4_case",
|
||||||
r + 1, rules[r].action_location.start.line);
|
r + 1, rules[r].action_location.start.line);
|
||||||
string_output (out, rules[r].action_location.start.file);
|
string_output (out, rules[r].action_location.start.file);
|
||||||
fprintf (out, ")\n[ %s]])\n\n", rules[r].action);
|
fprintf (out, ")dnl\n[ %s]])\n\n", rules[r].action);
|
||||||
}
|
}
|
||||||
fputs ("])\n\n", out);
|
fputs ("])\n\n", out);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -714,6 +714,7 @@ AT_CHECK_CALC_LALR([%define api.push-pull both %define api.pure full %define par
|
|||||||
|
|
||||||
AT_CHECK_CALC_LALR([%define api.pure %define parse.error verbose %debug %locations %defines %define api.prefix {calc} %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
|
AT_CHECK_CALC_LALR([%define api.pure %define parse.error verbose %debug %locations %defines %define api.prefix {calc} %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
|
||||||
|
|
||||||
|
AT_CHECK_CALC_LALR([%no-lines %define api.pure %define parse.error verbose %debug %locations %defines %define api.prefix {calc} %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
|
||||||
|
|
||||||
# ----------------------- #
|
# ----------------------- #
|
||||||
# Simple GLR Calculator. #
|
# Simple GLR Calculator. #
|
||||||
@@ -753,6 +754,8 @@ AT_CHECK_CALC_GLR([%define api.pure %define parse.error verbose %debug %location
|
|||||||
AT_CHECK_CALC_GLR([%define api.pure %define parse.error verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
|
AT_CHECK_CALC_GLR([%define api.pure %define parse.error verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
|
||||||
AT_CHECK_CALC_GLR([%define api.pure %define parse.error verbose %debug %locations %defines %define api.prefix {calc} %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
|
AT_CHECK_CALC_GLR([%define api.pure %define parse.error verbose %debug %locations %defines %define api.prefix {calc} %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
|
||||||
|
|
||||||
|
AT_CHECK_CALC_GLR([%no-lines %define api.pure %define parse.error verbose %debug %locations %defines %define api.prefix {calc} %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------- #
|
# ----------------------------- #
|
||||||
# Simple LALR1 C++ Calculator. #
|
# Simple LALR1 C++ Calculator. #
|
||||||
@@ -790,6 +793,8 @@ AT_CHECK_CALC_LALR1_CC([%defines %locations %define parse.error verbose %debug %
|
|||||||
AT_CHECK_CALC_LALR1_CC([%defines %locations %define api.location.file none])
|
AT_CHECK_CALC_LALR1_CC([%defines %locations %define api.location.file none])
|
||||||
AT_CHECK_CALC_LALR1_CC([%defines %locations %define api.location.file "my-location.hh"])
|
AT_CHECK_CALC_LALR1_CC([%defines %locations %define api.location.file "my-location.hh"])
|
||||||
|
|
||||||
|
AT_CHECK_CALC_LALR1_CC([%no-lines %defines %locations %define api.location.file "my-location.hh"])
|
||||||
|
|
||||||
|
|
||||||
# --------------------------- #
|
# --------------------------- #
|
||||||
# Simple GLR C++ Calculator. #
|
# Simple GLR C++ Calculator. #
|
||||||
@@ -821,6 +826,7 @@ AT_CHECK_CALC_GLR_CC([%define parse.error verbose %debug %name-prefix "calc" %de
|
|||||||
AT_CHECK_CALC_GLR_CC([%locations %defines %define parse.error verbose %debug %name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
|
AT_CHECK_CALC_GLR_CC([%locations %defines %define parse.error verbose %debug %name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
|
||||||
AT_CHECK_CALC_GLR_CC([%locations %defines %define parse.error verbose %debug %define api.prefix {calc} %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
|
AT_CHECK_CALC_GLR_CC([%locations %defines %define parse.error verbose %debug %define api.prefix {calc} %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
|
||||||
|
|
||||||
|
AT_CHECK_CALC_GLR_CC([%no-lines %locations %defines %define parse.error verbose %debug %define api.prefix {calc} %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
|
||||||
|
|
||||||
|
|
||||||
# --------------------------- #
|
# --------------------------- #
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ AT_BANNER([[Sync Lines.]])
|
|||||||
m4_define([_AT_SYNCLINES_COMPILE],
|
m4_define([_AT_SYNCLINES_COMPILE],
|
||||||
[AT_CHECK([$CC $CFLAGS $CPPFLAGS -c $1], [ignore], [], [stderr])
|
[AT_CHECK([$CC $CFLAGS $CPPFLAGS -c $1], [ignore], [], [stderr])
|
||||||
|
|
||||||
# Transform stderr into something like this:
|
# Transform the file 'stderr' into something like this:
|
||||||
#
|
#
|
||||||
# input.y:4: #error "4"
|
# input.y:4: #error "4"
|
||||||
#
|
#
|
||||||
@@ -121,7 +121,7 @@ EOF
|
|||||||
|
|
||||||
# AT_SYNCLINES_COMPILE(FILE)
|
# AT_SYNCLINES_COMPILE(FILE)
|
||||||
# --------------------------
|
# --------------------------
|
||||||
# Compile FILE expecting an error, and save in the file stdout the
|
# Compile FILE expecting an error, and save in the file 'stdout' the
|
||||||
# normalized output. If we can't get a trustable location
|
# normalized output. If we can't get a trustable location
|
||||||
# from the compiler, just skip the test.
|
# from the compiler, just skip the test.
|
||||||
#
|
#
|
||||||
@@ -449,11 +449,36 @@ AT_DATA_GRAMMAR([input.y],
|
|||||||
]AT_YYERROR_DECLARE_EXTERN[
|
]AT_YYERROR_DECLARE_EXTERN[
|
||||||
]AT_YYLEX_DECLARE_EXTERN[
|
]AT_YYLEX_DECLARE_EXTERN[
|
||||||
%}
|
%}
|
||||||
|
%union {
|
||||||
|
int ival;
|
||||||
|
}
|
||||||
%%
|
%%
|
||||||
exp: '0'
|
exp: '0'
|
||||||
]])
|
]])
|
||||||
|
|
||||||
|
# Generate without.* without the #line. Don't use -o without.c which
|
||||||
|
# would change the content (e.g., CPP guard depend on the output file
|
||||||
|
# name).
|
||||||
AT_BISON_CHECK([--no-lines -o input.AT_LANG_EXT -d input.y])
|
AT_BISON_CHECK([--no-lines -o input.AT_LANG_EXT -d input.y])
|
||||||
AT_CHECK([[grep '#line'] *.AT_LANG_EXT *.AT_LANG_HDR], 1)
|
AT_CHECK([mv input.]AT_LANG_EXT[ without.]AT_LANG_EXT[])
|
||||||
|
AT_CHECK([mv input.]AT_LANG_HDR[ without.]AT_LANG_HDR[])
|
||||||
|
# There is no #line at all.
|
||||||
|
AT_CHECK([grep '#line' *.]AT_LANG_EXT[ *.]AT_LANG_HDR[], 1)
|
||||||
|
|
||||||
|
# Generate with.* without the #line.
|
||||||
|
AT_BISON_CHECK([-o input.AT_LANG_EXT -d input.y])
|
||||||
|
AT_CHECK([mv input.]AT_LANG_EXT[ with.]AT_LANG_EXT[])
|
||||||
|
AT_CHECK([mv input.]AT_LANG_HDR[ with.]AT_LANG_HDR[])
|
||||||
|
|
||||||
|
# The implementation file with --no-line is exactly the
|
||||||
|
# original one with #lines removed.
|
||||||
|
AT_CHECK([grep -v '#line' with.]AT_LANG_EXT[ >expout])
|
||||||
|
AT_CHECK([cat without.AT_LANG_EXT], 0, [expout])
|
||||||
|
|
||||||
|
# Likewise for the header.
|
||||||
|
AT_CHECK([grep -v '#line' with.]AT_LANG_HDR[ >expout])
|
||||||
|
AT_CHECK([cat without.AT_LANG_HDR], 0, [expout])
|
||||||
|
|
||||||
AT_BISON_OPTION_POPDEFS
|
AT_BISON_OPTION_POPDEFS
|
||||||
|
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|||||||
Reference in New Issue
Block a user