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
This commit is contained in:
Theophile Ranquet
2012-12-06 11:43:02 +01:00
24 changed files with 519 additions and 43 deletions

View File

@@ -9606,6 +9606,56 @@ S/R conflicts as errors.
$ bison -Werror=yacc,conflicts-sr input.y
$ bison -Werror=yacc,error=conflicts-sr input.y
@end example
@item -f [@var{feature}]
@itemx --feature[=@var{feature}]
Activate miscellaneous @var{feature}. @var{feature} can be one of:
@table @code
@item caret
@itemx diagnostics-show-caret
Show caret errors, in a manner similar to GCC's
@option{-fdiagnostics-show-caret}, or Clang's @option{-fcaret-diagnotics}. The
location provided with the message is used to quote the corresponding line of
the source file, underlining the important part of it with carets (^). Here is
an example, using the following file @file{input.y}:
@example
%type <ival> exp
%%
exp: exp '+' exp @{ $exp = $1 + $2; @};
@end example
When invoked with @option{-fcaret}, Bison will report:
@example
@group
input.y:3.20-23: error: ambiguous reference: '$exp'
exp: exp '+' exp @{ $exp = $1 + $2; @};
^^^^
@end group
@group
input.y:3.1-3: refers to: $exp at $$
exp: exp '+' exp @{ $exp = $1 + $2; @};
^^^
@end group
@group
input.y:3.6-8: refers to: $exp at $1
exp: exp '+' exp @{ $exp = $1 + $2; @};
^^^
@end group
@group
input.y:3.14-16: refers to: $exp at $3
exp: exp '+' exp @{ $exp = $1 + $2; @};
^^^
@end group
@group
input.y:3.32-33: error: $2 of 'exp' has no declared type
exp: exp '+' exp @{ $exp = $1 + $2; @};
^^
@end group
@end example
@end table
@end table
@noindent