Le 1 nov. 2012 à 14:48, Paul Eggert a écrit : > On 10/31/2012 10:04 AM, Akim Demaille wrote: >> How about this? > > Thanks, I pushed that into gnulib, > with a minor tweak to the ChangeLog entry.
Thanks! I installed the following patch in branch-2.6 (and a few uninteresting minor changes). commit 95066e92087dfe296b74d637cab4dfb8d8fc253b Author: Akim Demaille <a...@lrde.epita.fr> Date: Thu Nov 1 13:47:12 2012 +0100 grammars: fix display of nul character in error message Reported by Marc Mendiola. http://lists.gnu.org/archive/html/help-bison/2012-10/msg00017.html * gnulib: Update to get quote_mem. * src/scan-gram.l: Use it. * tests/input.at (Invalid inputs): Additional checks. * tests/named-refs.at: Likewise. diff --git a/NEWS b/NEWS index 8c5bf59..37b8e2c 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,8 @@ GNU Bison NEWS Other issues in the test suite have been addressed. + Nul characters are correctly displayed in error messages. + * Noteworthy changes in release 2.6.4 (2012-10-23) [stable] Bison 2.6.3's --version was incorrect. This release fixes this issue. diff --git a/THANKS b/THANKS index ee05b56..77d35be 100644 --- a/THANKS +++ b/THANKS @@ -64,6 +64,7 @@ Laurent Mascherpa laurent.masche...@epita.fr Lie Yan lie....@kaust.edu.sa Magnus Fromreide ma...@lysator.liu.se Marc Autret autre...@epita.fr +Marc Mendiola mmend...@usc.edu Martin Jacobs martin.jac...@arcor.de Martin Mokrejs mmokr...@natur.cuni.cz Martin Nylin martin.ny...@linuxmail.org diff --git a/src/scan-gram.l b/src/scan-gram.l index dbea2a1..ad061cc 100644 --- a/src/scan-gram.l +++ b/src/scan-gram.l @@ -291,7 +291,7 @@ splice (\\[ \f\t\v]*\n)* } . { - complain_at (*loc, _("invalid character: %s"), quote (yytext)); + complain_at (*loc, _("invalid character: %s"), quote_mem (yytext, yyleng)); } <<EOF>> { @@ -375,7 +375,7 @@ splice (\\[ \f\t\v]*\n)* } . { complain_at (*loc, _("invalid character in bracketed name: %s"), - quote (yytext)); + quote_mem (yytext, yyleng)); } <<EOF>> { BEGIN bracketed_id_context_state; diff --git a/tests/input.at b/tests/input.at index cd1d6d6..2848562 100644 --- a/tests/input.at +++ b/tests/input.at @@ -27,7 +27,8 @@ AT_BANNER([[Input Processing.]]) AT_SETUP([Invalid inputs]) AT_DATA([input.y], -[[%% +[[\000\001\002\377? +%% ? default: 'a' } %& @@ -35,17 +36,23 @@ default: 'a' } %- %{ ]]) +AT_CHECK([[$PERL -pi -e 's/\\(\d{3})/chr(oct($1))/ge' input.y || exit 77]]) AT_BISON_CHECK([input.y], [1], [], -[[input.y:2.1: invalid character: '?' -input.y:3.14: invalid character: '}' -input.y:4.1: invalid character: '%' -input.y:4.2: invalid character: '&' -input.y:5.1-17: invalid directive: '%a-does-not-exist' -input.y:6.1: invalid character: '%' -input.y:6.2: invalid character: '-' -input.y:7.1-8.0: missing '%}' at end of file -input.y:7.1-8.0: syntax error, unexpected %{...%} +[[input.y:1.1: invalid character: '\0' +input.y:1.1: invalid character: '\001' +input.y:1.1: invalid character: '\002' +input.y:1.1: invalid character: '\377' +input.y:1.2: invalid character: '?' +input.y:3.1: invalid character: '?' +input.y:4.14: invalid character: '}' +input.y:5.1: invalid character: '%' +input.y:5.2: invalid character: '&' +input.y:6.1-17: invalid directive: '%a-does-not-exist' +input.y:7.1: invalid character: '%' +input.y:7.2: invalid character: '-' +input.y:8.1-9.0: missing '%}' at end of file +input.y:8.1-9.0: syntax error, unexpected %{...%} ]]) AT_CLEANUP diff --git a/tests/named-refs.at b/tests/named-refs.at index 3ccf1f6..744eab8 100644 --- a/tests/named-refs.at +++ b/tests/named-refs.at @@ -443,14 +443,19 @@ AT_SETUP([Stray symbols in brackets]) AT_DATA_GRAMMAR([test.y], [[ %% -start: foo[ /* aaa */ *&-.+ ] bar +start: foo[ /* aaa */ *&-.+\000\001\002\377 ] bar { s = $foo; } ]]) +AT_CHECK([[$PERL -pi -e 's/\\(\d{3})/chr(oct($1))/ge' test.y || exit 77]]) AT_BISON_CHECK([-o test.c test.y], 1, [], [[test.y:11.23: invalid character in bracketed name: '*' test.y:11.24: invalid character in bracketed name: '&' test.y:11.25: invalid character in bracketed name: '-' test.y:11.27: invalid character in bracketed name: '+' +test.y:11.28: invalid character in bracketed name: '\0' +test.y:11.28: invalid character in bracketed name: '\001' +test.y:11.28: invalid character in bracketed name: '\002' +test.y:11.28: invalid character in bracketed name: '\377' ]]) AT_CLEANUP _______________________________________________ help-bison@gnu.org https://lists.gnu.org/mailman/listinfo/help-bison