hoaparse: improve reporting of errors in LBTT guards

* src/hoaparse/hoaparse.yy: forward the error messages
from lbt_parse().
* src/hoaparse/hoascan.ll: Minor cleanups.
* src/tgbatest/lbttparse.test: Test it.
This commit is contained in:
Alexandre Duret-Lutz 2014-12-11 21:43:39 +01:00
parent f9e859d765
commit 1a022c8093
3 changed files with 34 additions and 9 deletions

View file

@ -991,11 +991,20 @@ lbtt-guard: STRING
spot::ltl::parse_error_list pel;
auto* f = spot::ltl::parse_lbt(*$1, pel, *res.env);
if (!f || !pel.empty())
error(@$, "failed to parse guard");
if (!pel.empty())
for (auto& j: pel)
{
// Adjust the diagnostic to the current position.
spot::location here = @1;
here.end.line = here.begin.line + j.first.end.line - 1;
here.end.column = here.begin.column + j.first.end.column - 1;
here.begin.line += j.first.begin.line - 1;
here.begin.column += j.first.begin.column - 1;
error_list.emplace_back(here, j.second);
}
if (!f)
{
// FIXME: show pel.
error(@$, "failed to parse guard");
if (f)
f->destroy();
res.cur_label = bddtrue;
}
else

View file

@ -34,7 +34,6 @@ typedef hoayy::parser::token token;
static unsigned comment_level = 0;
static unsigned parent_level = 0;
static int orig_cond = 0;
static bool missing_parent = false;
static bool lbtt_s = false;
static bool lbtt_t = false;
static unsigned lbtt_states = 0;
@ -249,9 +248,9 @@ identifier [[:alpha:]_][[:alnum:]_-]*
<in_COMMENT>{
"/""*"+ ++comment_level;
[^*/\n]* continue;
"/"[^*\n]* continue;
"*"+[^*/\n]* continue;
[^*/\n\r]* continue;
"/"[^*\n\r]* continue;
"*"+[^*/\n\r]* continue;
{eol} yylloc->lines(yyleng); yylloc->end.column = 1;
{eol2} yylloc->lines(yyleng / 2); yylloc->end.column = 1;
"*"+"/" if (--comment_level == 0) BEGIN(orig_cond);
@ -352,7 +351,6 @@ namespace spot
BEGIN(INITIAL);
comment_level = 0;
parent_level = 0;
missing_parent = false;
}
int