* origin/branch-2.6:
regen
yacc.c: do not define location support when not using locations
maint: be compilable with GCC 4.0
tests: address a warning from GCC 4.4
tests: don't use options that Clang does not support
tests: restore the tests on -Werror
regen
parse-gram: update the Bison interface
fix comment
The "shadows a global declaration" warning in GCC 4.0 was a bit
annoying. It does not like that a type name be used in a prototype of
a function (not the implementation, just the declaration):
In file included from src/LR0.c:38:
src/reader.h:56: warning: declaration of 'named_ref' shadows a
global declaration
src/named-ref.h:35: warning: shadowed declaration is here
It does not like either when a global variable name is used in a
prototype. Flex 2.5.37 generates this prototype:
void gram_set_debug (int debug_flag );
* src/getargs.h, src/getargs.c (debug_flag): Rename as...
(debug): this.
Adjust dependencies.
* src/reader.h: Don't use "named_ref" as a formal argument name.
Fix the following warning
parse-gram.c:2078:14: error: equality comparison with extraneous parentheses
[-Werror,-Wparentheses-equality]
if (((yyn) == (-91)))
~~~~~~^~~~~~~~
parse-gram.c:2078:14: note: remove extraneous parentheses around the
comparison to silence this warning
if (((yyn) == (-91)))
~ ^ ~
parse-gram.c:2078:14: note: use '=' to turn this equality comparison into
an assignment
if (((yyn) == (-91)))
^~
=
1 error generated.
and the following one:
input.cc:740:1: error: function declared 'noreturn' should not return
[-Werror,-Winvalid-noreturn]
static void yyMemoryExhausted (yyGLRStack* yystackp)
__attribute__ ((__noreturn__));
static void
yyMemoryExhausted (yyGLRStack* yystackp)
{
YYLONGJMP (yystackp->yyexception_buffer, 2);
}
^
1 warning and 1 error generated.
This is Apple clang version 3.1 (tags/Apple/clang-318.0.61).
* data/c.m4 (b4_table_value_equals): Use (!!(A == B)) instead of (A == B)
to avoid this warning.
Any reasonable compiler should generate the same code.
* src/uniqstr.h (UNIQSTR_EQ): Likewise.
* data/glr.c (LONGJMP): abort after longjmp to pacify clang.
Use something similar to the report file.
* src/print_graph.c (print_lhs): New, obstack equivalent of rule_lhs_print.
(print_core): Use here.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
* src/graphviz.c (start_graph): Use courier font.
(conclude_red): Use commas to separate attributes. Show the acceptation
as a special reduction, with a blue color and an "Acc" label. Show the
lookahead tokens between square brackets.
(output_red): No longer label default reductions.
* src/print_graph.c (print_core): Refactor spacing, and print an
additional space between a rule's rhs and its lookahead tokens. Also,
capitalize "State".
(print_actions): Style, move a declaration.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
All disabled reductions should now be shown as such.
* src/graphviz.c (output_red): Here.
(conclude_red): New.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
See
http://lists.gnu.org/archive/html/bison-patches/2012-02/msg00045.html
Note that api.tokens.prefix has not been released, yet.
* NEWS, data/bison.m4, doc/bison.texi, tests/c++.at,
* tests/calc.at, tests/java.at, tests/local.at: Do it.
* src/muscle-tab.c (muscle_percent_variable_update): Ensure
backward compatibility.
Because argv[0] is never used, shift it out from the argument list.
* src/complain.c (complain_args): Here.
* src/scan-skel.l (at_complain): Adjust argv and argc.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
* origin/maint:
tests: check %no-lines
tests: minor simplification
graphs: stylistic changes.
graphs: minor style changes
graphs: show reductions
graphs: style: prefix state number with "state"
graphs: style: use left justification for states
graphs: style: prefix rules and change shapes
obstack: import obstack_finish0 from master
c++: api.location.type
muscles: a function for backward compatibility
maint: more macros
Conflicts:
data/glr.cc
data/java.m4
data/lalr1.cc
doc/bison.texi
src/muscle-tab.c
src/system.h
tests/calc.at
* src/graphviz.c (output_red): New, show reductions on the graph.
(no_reduce_bitset_init): New, initialize a bitset.
(print_token): New, print a lookahead token.
(escape): New, print "foo" as \"foo\" because Dot doesn't like quotes within
a label.
* src/graphviz.h : Adjust.
* src/print_graph.c (print_actions): Call output_red here.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
The label text of nodes is centered "by default" (by the use of '\n' as
a line feed). This gives bad readability to the grammar rules shown in
state nodes, a left justification is much nicer. This is done by using '\l'
as the line feed.
In order to allow \l in the DOT file, changes to the quoting system seem
necessary.
* src/print_graph.c (print_core): Escape tokens here, instead of...
* src/graphviz.c (output_node): Here...
(escape): Using this, new.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
* src/graphviz.c (start_graph): Use box rather than ellipsis.
* src/print_graph.c (print_core): Prefix rules with their number.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
This feature was introduced in 95a2de5695
(which is part of 2.5), but not documented. Give it a proper name, and
make it public.
* data/c++.m4, data/lalr1.cc, data/glr.cc, data/java.m4: Use
api.location.type instead of location_type.
* src/muscle-tab.c (muscle_percent_variable_update): Map the latter to
the former.
* tests/local.at: Adjust.
* tests/calc.at: Use api.location.type.
Leave tests/java.at with location_type, at least for the time being,
to cover both names.
* doc/bison.texi: Document api.location.type.
(User Defined Location Type): New.
* NEWS: Update.
Based on commit 171ad99d64 from master.
* src/muscle-tab.c (muscle_percent_variable_update): New.
(muscle_percent_define_insert): Use it.
Define the variables with their initial value.
Fix the following warning
parse-gram.c:2078:14: error: equality comparison with extraneous parentheses
[-Werror,-Wparentheses-equality]
if (((yyn) == (-91)))
~~~~~~^~~~~~~~
parse-gram.c:2078:14: note: remove extraneous parentheses around the
comparison to silence this warning
if (((yyn) == (-91)))
~ ^ ~
parse-gram.c:2078:14: note: use '=' to turn this equality comparison into
an assignment
if (((yyn) == (-91)))
^~
=
1 error generated.
and the following one:
input.cc:740:1: error: function declared 'noreturn' should not return
[-Werror,-Winvalid-noreturn]
static void yyMemoryExhausted (yyGLRStack* yystackp)
__attribute__ ((__noreturn__));
static void
yyMemoryExhausted (yyGLRStack* yystackp)
{
YYLONGJMP (yystackp->yyexception_buffer, 2);
}
^
1 warning and 1 error generated.
This is Apple clang version 3.1 (tags/Apple/clang-318.0.61).
* data/c.m4 (b4_table_value_equals): Use (!!(A == B)) instead of (A == B)
to avoid this warning.
Any reasonable compiler should generate the same code.
* src/uniqstr.h (UNIQSTR_EQ): Likewise.
* data/glr.c (LONGJMP): abort after longjmp to pacify clang.
* src/scan-skel.l: Use a simpler and more consistent pattern escaping
scheme.
Catch all the invalid directives here by just removing the previous
catch-all-but-alphabetical rule.
* src/scan-skel.l (at_directive, at_init): New.
(at_ptr): New, function pointer used to call the right at_directive
function (at_basename, etc.).
(outname): Rename as...
(out_name): this, for consistency with out_lineno.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
* TODO: Address the issue, so remove it.
* data/bison.m4: Use b4_error with [[note]] rather than a complain_at
for context information.
* src/complain.c (complain_args): Take an additional argument, an
indentation pointer, to allow the dispatching of context information.
* src/complain.h (complain_args): Adjust prototype.
* src/scan-skel.l (at_directive_perform): Recognize the new @note mark.
* tests/input.at: Adjust.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
Instead of @complain, @warn, and @fatal, use a unique @complain
directive. This directive's first argument is "complain", "warn", etc.
* data/bison.m4 (m4_error): Here.
* src/scan-skel.l (at_directive_perform): Adjust.
(flag): Replace the switch by safer and more explicit if branches.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
* src/complain.c (complain_at_indent): Rename as...
(complaint_indent): This, and take the location as a pointer.
* src/complain.h, src/muscle-tab.c, src/reader.c, src/scan-code.l,
src/symtab.c: Adjust.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
This function is now a mere iterator that calls flag_argmatch,
a new function, that matches a single option parameter.
* src/getargs.c (flag_argmatch): New, taken from...
(flags_argmatch): Here.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
The code here was too confusing, this seems more natural.
* src/complain.c (error_message): Move the indentation check and the category
output to complains. Also, no longer take a 'warnings' argument.
(complains): Factor calls to error_message.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
Move the dispatch of variadic complains to complain.c, rather than do
it in a scanner.
* src/complain.h, src/complain.c (complain_args): New.
* src/scan-skel.l (at_directive_perform): Use it.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
Rectify a bug that introduced suffixes out of place.
* src/complainc.c (complains): Handle all three special warning bits.
* src/scan-code.l (show_sub_message): Remove useless argument.
* tests/named-refs.at: Adjust.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
This is the continuation of the work on the readability of errors
context.
* src/symtab.c (user_token_number_redeclaration): Use
complain_at_indent to output with increased indentation level.
* tests/input:at: Apply this change.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
This line doesn't add any meaningful information anymore, the appended
[-Werror=CATEGORY] is enough. It is actually more insightful, as it
allows to distinguish warnings treated as errors from those that
aren't. This line is also removed by gcc 4.8.
* src/complain.c (set_warnings_issued): The only action left was
checking if the error bit corresponding to the warning issued was set,
and that function was only called once. Therefore, remove it, and do
its job directly in the caller...
(complains): here.
* src/complains.h: Adjust.
* tests/input.at: Adjust.
* NEWS: Document this change.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
The prefix of warnings treated as errors is now "error: ". Also, their
suffix now reflects the changes in the Werror option format.
An output for -Werror=other used to be:
bison: warnings being treated as errors
input.y:1.1: warning: stray ',' treated as white space [-Wother]
It is now:
bison: warnings being treated as errors
input.y:1.1: error: stray ',' treated as white space [-Werror=other]
The line "warnings being treated as errors" no longer adds any info,
it will be removed in a forthcoming change.
* NEWS: Add entry "Enhancement of the -Werror"
* doc/bison.texi: Move the warnings-as-error to a new bullet.
* src/complain.c (complains): Refactor, change the prefix of warnings
that are treated as errors.
(warnings_print_categories): Support for [-Werror=CATEGORY] display
* src/getargc.c (getargs): -y implies -Werror=yacc
* tests/input.at: Update expected --yacc output for coherence.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
This new option is a lot more flexible than the previous one. Its
details will be discussed in the NEWS and info file, in a forthcoming
change.
If no category is specified (ie: used as simply "-Werror"), the
functionality is the same as before.
* src/complain.c (errors_flag): New variable.
(set_warning_issued): Accept warning categories as an argument.
* src/complain.h (Wall): Better definition.
* src/getargs.c (flags_argmatch): Support for the new format.
(usage): Update -Werror to -Werror[=CATEGORY] format.
* src/complain.c (errors_flag): New variable.
(set_warning_issued): Accept warning categories as an argument.
* src/complain.h (Wall): Better definition.
* src/getargs.c (flags_argmatch): Support for the new format.
(usage): Update -Werror to -Werror=[CATEGORY] format.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>