From cd7116b8cb3e77cf49cd30cb244f25d7c958e5f6 Mon Sep 17 00:00:00 2001 From: fche Date: Tue, 3 Apr 2007 18:35:28 +0000 Subject: 2007-04-03 Frank Ch. Eigler Improve error messages for underprivileged scripts. * parse.h (parse_error): Add skip_some member, true default. * parse.cxx (parse_embedded_code): Send false on missing -g. * parse.cxx (parser::parse): Respect flag during parse error recovery. --- parse.cxx | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) (limited to 'parse.cxx') diff --git a/parse.cxx b/parse.cxx index 41784430..74cb72d0 100644 --- a/parse.cxx +++ b/parse.cxx @@ -803,24 +803,25 @@ parser::parse () catch (parse_error& pe) { print_error (pe); - try - { - // Quietly swallow all tokens until the next '}'. - while (1) - { - const token* t = peek (); - if (! t) - break; - next (); - if (t->type == tok_operator && t->content == "}") - break; - } - } - catch (parse_error& pe2) - { - // parse error during recovery ... ugh - print_error (pe2); - } + if (pe.skip_some) // for recovery + try + { + // Quietly swallow all tokens until the next '}'. + while (1) + { + const token* t = peek (); + if (! t) + break; + next (); + if (t->type == tok_operator && t->content == "}") + break; + } + } + catch (parse_error& pe2) + { + // parse error during recovery ... ugh + print_error (pe2); + } } } @@ -927,7 +928,8 @@ parser::parse_embeddedcode () throw parse_error ("expected '%{'"); if (! privileged) - throw parse_error ("embedded code in unprivileged script"); + throw parse_error ("embedded code in unprivileged script", + false /* don't skip tokens for parse resumption */); e->tok = t; e->code = t->content; -- cgit