Commit Graph
44 Commits
Author SHA1 Message Date
Theophile Ranquet f3ead217b8 Merge remote-tracking branch 'origin/maint'
* origin/maint:
  misc: pacify the Tiny C Compiler
  cpp: make the check of Flex version portable
  misc: require getline
  c++: support wide strings for file names
  doc: document carets
  tests: enhance existing tests with carets
  errors: show carets
  getargs: add support for --flags/-f

Conflicts:
	doc/bison.texi
	m4/.gitignore
	src/complain.c
	src/flex-scanner.h
	src/getargs.c
	src/getargs.h
	src/gram.c
	src/main.c
	tests/headers.at
2012-12-06 13:38:43 +01:00
Theophile Ranquet 9960a6ae75 misc: pacify the Tiny C Compiler
* src/graphviz.c (conclude_red): Remove a useless return.
2012-12-06 10:53:30 +01:00
Theophile Ranquet b56484a5d3 cpp: make the check of Flex version portable
This was problematic with tcc 0.9.25

* src/flex-scanner.h (FLEX_VERSION_GT): Rewrite and rename as...
(FLEX_VERSION): This.
2012-12-05 19:14:23 +01:00
Theophile Ranquet e35cd6def7 misc: require getline
* bootstrap.conf: Here, used by src/location.c.
* src/getargs.c (long_options): Rename --flags to --feature.
2012-12-05 15:39:52 +01:00
Theophile Ranquet 7bada5355e doc: document carets
* NEWS: Announce it.
* doc/bison.texi (Bison Options):  Here.
2012-12-05 13:46:01 +01:00
Theophile Ranquet 505ece5171 tests: enhance existing tests with carets
* tests/actions.at: Unset value.
* tests/conflicts.at: Rule useless due to conflicts.
* tests/input.at: Missing terminator, unexpected end of file, command line
redefinition of variable.
* tests/named-refs.at: Many errors.
* tests/reduce.at: Useless nonterminals and rules.
* tests/regression.at: Large token.
2012-12-05 13:46:01 +01:00
Theophile Ranquet 3f5d1b2c67 errors: show carets
* src/locations.c (caret_info): New, persistant information useful
for...
(location_caret): New, print a caret.
(cleanup_caret): Release caret_info cleanly, call it...
* src/main.c (main): Here.
* src/complain.c (error_message): Call location_caret here.
2012-12-05 13:46:01 +01:00
Theophile Ranquet 0db2648930 getargs: add support for --flags/-f
Introduce -fdiagnostics-show-caret

* src/getargs.c (flag_flag): New global.
* src/getargs.h (flag): New enum.
2012-12-05 12:10:51 +01:00
Theophile Ranquet effd30c08d getargs: don't label --language/-l as experimental
* NEWS: Announce it.
* doc/bison.texi, src/getargs.c (usage): Here.
2012-12-04 15:54:43 +01:00
Theophile Ranquet a37131cc63 getargs: fix the locations of command-line input
* src/getargs.c (command_line_location): Here.
* tests/input.at: Adjust.
2012-12-03 17:21:15 +01:00
Theophile Ranquet d4e985d587 errors: indent missing action code semicolon warning
Also, remove a duplicate #define.

* src/scan-code.l (SC_RULE_ACTION): Here.
* tests/actions.at: Adjust.
2012-12-03 17:21:15 +01:00
Theophile Ranquet 1f1bd57297 doc: introduce api.pure full, rearrange some examples
* NEWS: Add entry.
* doc/bison.texi (%define Summary): Show the old Yacc behaviour.
(Parser Function): Move parse-param examples here.
(Pure Calling): Remove parse-param examples.
(Error Reporting): Don't show the old behavior, stick to 'full'.
2012-11-29 11:08:58 +01:00
Theophile Ranquet 6428a8a4a5 yacc.c: support "%define api.pure full"
This makes the interface for yyerror() pure without the need for a spurious
parse_param.

* data/yacc.c (b4_pure_if, b4_pure_flag): New definition, accept three states.
(b4_yacc_pure_if): Rename as...
(b4_yyerror_arg_loc_if): This, and use b4_pure_flag.
* tests/actions.at (%define api.pure): Modernize.
* test/calc.at (Simple LALR Calculator): Modernize.
* tests/local.at (AT_YYERROR_ARG_LOC_IF): Adjust.
2012-11-29 11:08:36 +01:00
Theophile Ranquet dbb998364f local.at: improvements
* tests/local.at (AT_YYERROR_FORMALS): Make llocp const.
(AT_PURE_AND_LOC_IF, AT_GLR_OR_PARAM_IF): Remove, expand...
(AT_YYERROR_ARG_LOC_IF): Here, and use m4_join for readability.
2012-11-26 12:00:14 +00:00
Theophile RanquetandAkim Demaille fb4c8a7cb9 yacc.c: always initialize yylloc
The initial location might be used if the parser starts by an empty
reduction, so really ensure proper initialization of the initial
location.  The previous approach fails for PostgreSQL, which uses
Reported by Peter Eisentraut.
http://lists.gnu.org/archive/html/bug-bison/2012-11/msg00023.html
With help from Théophile Ranquet.

* data/yacc.c (b4_declare_scanner_communication_variables): Be sure
to initialize yylloc, even when its structure is unknown.
(yyparse): Simplify the call to b4_dollar_pushdef.
* tests/actions.at (Initial location): Check of similar pattern
as in the case of PostgreSQL.
2012-11-23 15:44:19 +01:00
Theophile RanquetandAkim Demaille 05c93b7d84 tests: close files in glr-regression
* tests/glr-regression.at: Here.
2012-11-12 16:46:57 +01:00
Theophile RanquetandAkim Demaille be3517b007 xml: match DOT output and xml2dot.xsl processing
Make the DOT produced by XSLT processing equivalent to the one made with the
--graph option.

* data/xslt/xml2dot.xsl: Stylistic changes, and add support for reductions.
* doc/bison.texi (Xml): Update.
* src/graphviz.c (conclude_red): Minor stylistic changes to DOT internals.
(output_red): Swap enabled and disabled reductions output, for coherence
with XSLT output.
* src/print_graph.c (print_core): Minor stylistic change to States' output.
(print_actions): Swap order of output for reductions and transitions.
* tests/local.at (AT_BISON_CHECK_XML): Ignore differences in order.
* tests/output.at: Adjust to changes in DOT internals.
2012-11-12 16:46:55 +01:00
Theophile RanquetandAkim Demaille 489b320d4a xml: factor xslt space template
* data/xslt/bison.xsl (space): New, import from...
* data/xslt/xml2text.xsl: Here.
2012-11-12 16:45:09 +01:00
Theophile RanquetandAkim Demaille ccda5c9eac graph: fix a memory leak
* src/graphviz.c (output_red): Here.
2012-11-12 16:45:09 +01:00
Theophile RanquetandAkim Demaille 9c16d39944 xml: documentation
The XML output combined with the XSL Transformations provided in data/ are
incredibly useful, they should be documented.

* doc/bison.texi (Xml): New node.
2012-11-12 16:44:54 +01:00
Theophile Ranquet d42fe46ec3 output: capitalize State
* src/print.c (print_state): Here.
* tests/conflicts.at, tests/existing.at, tests/local.at, tests/reduce.at,
tests/regression.at, tests/sets.at: Adjust.
2012-11-12 10:25:13 +00:00
Theophile Ranquet 32288c8cbd graphs: fix spacing refactoring
* src/print_graph.c (print_lhs, print_core): Here.
2012-10-26 18:28:37 +00:00
Theophile Ranquet ed91d427fe tests: make deprecation tests more specific
* tests/input.at (Deprecated directives): Here, don't generate unrelated errors
or warnings.
2012-10-26 18:28:37 +00:00
Theophile Ranquet e89d8806ea tests: fix AT_BISON_CHECK_WARNINGS_ stderr rewriting
* tests/input.at (Deprecated directives): Avoid spurious error.
* tests/locat.at (AT_BISON_CHECK_WARNINGS): Adjust for recent changes.
2012-10-26 18:28:37 +00:00
Theophile Ranquet 23ac665d21 scan-skel.l: consider m4 notes as related to "complaint" errors
* src/scan-skel.l (flag): Here.
2012-10-26 18:28:37 +00:00
Theophile Ranquet ac0eca3ccb warnings: distinguish context information based on warning type
* src/scan-code.l (show_sub_message, show_sub_messages): Take a new warnings
argument.
2012-10-26 18:28:37 +00:00
Theophile Ranquet 697a8022c6 warnings: fix early exit of warnings treated as errors
Treating warnings as errors caused Bison to exit earlier than needed, making it
hide warnings that would have been printed had -Werror not been set.

Also, fix a bug that caused some context information of errors to not be
shown.

* src/complain.c (complaint_issued): Rename as...
(complaint_status): This, and change its type from boolean to
* src/complain.h (err_status): This, new enumeration.
* src/main.c (main): Adjust (only finish early if an actual complaint was
risen, not a mere warning treated an error).
* src/reader.c: Adjust.
2012-10-26 18:28:37 +00:00
Theophile RanquetandAkim Demaille 8f6bbe0c10 tests: reindent for legibility
* tests/local.at (AT_BISON_CHECK_WARNINGS_): Here.
2012-10-26 17:55:03 +02:00
Theophile RanquetandAkim Demaille 6b1cbda1b9 misc: document TESTSUITEFLAGS in README-hacking
* README-hacking: Document -j and -k flags.
2012-10-26 11:50:48 +02:00
Theophile RanquetandAkim Demaille 0f92546f47 deprecation: add tests
* tests/input.at (Deprecated directives warn, Non-deprecated
directives don't, Unput doesn't mess up locations): New tests.
2012-10-26 11:50:13 +02:00
Theophile Ranquet 25b27513d9 regen 2012-10-24 14:50:21 +00:00
Theophile Ranquet 2062d72deb deprecation: issue warnings in scanner
* src/parse-gram.y: Move the handling of (three) deprecated constructs ...
* src/scan-gram.l: ...Here, and issue warnings.
(DEPRECATED): New.
2012-10-24 14:49:21 +00:00
Theophile RanquetandAkim Demaille d79683fa95 graphs: minor style changes
* src/graphviz.c (output_red): Fix C90 issues.
Reduce variable scopes.

Signed-off-by: Akim Demaille <[email protected]>
2012-10-11 16:50:37 +02:00
Theophile RanquetandAkim Demaille 83bae26d3f graphs: show reductions
* 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 <[email protected]>
2012-10-11 15:59:55 +02:00
Theophile RanquetandAkim Demaille a13121f759 graphs: style: use left justification for states
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 <[email protected]>
2012-10-11 15:46:43 +02:00
Theophile RanquetandAkim Demaille bd52638008 warnings: introduce -Wdeprecated in the usage info
The deprecated warning, introduced some time ago, was not displayed in
the usage message. This patch addresses the issue.

* src/getargs.c (usage): Insert here.

Signed-off-by: Akim Demaille <[email protected]>
2012-09-26 12:28:10 +02:00
Theophile RanquetandAkim Demaille b8e7ad5887 errors: prefix the output with "error: "
This improves readability. This is also what gcc does.

* NEWS: Document this change.
* src/complain.c (complain_at): Prefix all errors with "error: ".
(complain_at_indent, warn_at_indent): Do not prefix the context
information of errors, which are basically just indented errors.
* tests/conflicts.at, tests/glr-regression.at, tests/input.at,
tests/named-refs.at, tests/output.at, tests/push.at,
tests/regression.at, tests/skeletons.at: Apply this change.

Signed-off-by: Akim Demaille <[email protected]>
2012-09-26 12:11:51 +02:00
Theophile RanquetandAkim Demaille a974c1ec26 errors: indent "invalid value for %define" context
This is the continuation of the work on the readability of errors
    context.

For example, what used to be:
  input.y:1.9-29: invalid value for %define variable 'foo' : 'bar'
  input.y:1.9-29: accepted value: 'most'

is now:
  input.y:1.9-29: invalid value for %define variable 'foo' : 'bar'
  input.y:1.9-29:     accepted value: 'most'

* src/muscle-tab.c (muscle_percent_define_check_values): Use
complain_at_indent to output with increased indentation level.
* tests/input:at: Apply this change.

Signed-off-by: Akim Demaille <[email protected]>
2012-09-26 12:08:55 +02:00
Theophile RanquetandAkim Demaille 6b1e1872d4 errors: indent "%define var" redefinition context
This is the continuation of the work on the readability of errors
context.

For example, what used to be:
  input.y:2.9-11: %define variable 'var' redefined
  input.y:1.9-11: previous definition

is now:
  input.y:2.9-11: %define variable 'var' redefined
  input.y:1.9-11:     previous definition

* src/muscle-tab.c (muscle_percent_define_insert): Use
complain_at_indent to output with increased indentation level.
* tests/input.at: Apply this change.

Signed-off-by: Akim Demaille <[email protected]>
2012-09-26 12:06:03 +02:00
Theophile RanquetandAkim Demaille cbaea0106d errors: indent "symbol redeclaration" context
This is the continuation of the work on the readability of errors
context.

For example, what used to be:
  input.y:5.10-24: %printer redeclaration for <field2>
  input.y:3.11-25: previous declaration

is now:
  input.y:5.10-24: %printer redeclaration for <field2>
  input.y:3.11-25:     previous declaration

* NEWS: Document this change.
* src/symtab.c (symbol_redeclaration, semantic_type_redeclaration,
user_token_number_redeclaration, default_tagged_destructor_set,
default_tagless_destructor_set, default_tagged_printer_set,
default_tagless_printer_set): Use complain_at_indent to
output with increased indentation level.
* tests/input.at: Apply this change.

Signed-off-by: Akim Demaille <[email protected]>
2012-09-26 12:03:57 +02:00
Theophile RanquetandAkim Demaille 24d96dd3eb errors: indent "result type clash" error context
This used to be the format of the error report:

  input.y:6.5-10: result type clash on merge function 'merge': [...]
  input.y:2.4-9: previous declaration

In order to distinguish the actual error from the context provided, we
rather this new output:

  input.y:6.5-10: result type clash on merge function 'merge': [...]
  input.y:2.4-9:     previous declaration

Another patch will introduce an "error: " prefix to all non-indented
lines, giving yet better readability to the reports.

* src/complain.h (SUB_INDENT): Move to here.
* src/reader.c (record_merge_function_type): Use complain_at_indent to
output with increased indentation level.
* src/scan-code.l (SUB_INDENT): Remove from here.
* tests/glr-regression.at: Apply this change.

Signed-off-by: Akim Demaille <[email protected]>
2012-09-26 12:00:29 +02:00
Theophile Ranquetandyro3ht 41511178a7 new Werror report format fixed in a test
* tests/input.at : replaced [-Wyacc] with [-Werror=yacc]

todo: fix the other failed test of the suite, tests/conflicts.at:1554
2012-09-21 05:08:47 +02:00
Theophile Ranquetandyro3ht fd01e1d05e made previous commit less hairy
* src/getargs.c : here
2012-09-21 05:03:08 +02:00
Theophile Ranquetandyro3ht 981c53e257 introduced a GCC-like -Werror=type
* src/complain.h : errors_flag variable
* src/complain.c : actual stuff happens here
* src/conflits.c : differentiated SR and RR conflicts
* src/getargs.c : flags_argmatch recognizes the new -Werror format
2012-09-20 12:27:14 +02:00