neverparse: Fix parsing of Modella's neverclaims.

Reported by František Blahoudek.

* src/neverparse/neverclaimparse.yy: Fix.
* src/tgbatest/neverclaimread.test: Test it.
* NEWS: Mention the fix.
This commit is contained in:
Alexandre Duret-Lutz 2014-05-29 15:48:31 +02:00
parent a4934c4f71
commit 6c76ba408e
3 changed files with 39 additions and 4 deletions

1
NEWS
View file

@ -3,6 +3,7 @@ New in spot 1.2.4a (not yet released)
* Bug fixes: * Bug fixes:
- Fix simplification of bounded repetition in SERE formulas. - Fix simplification of bounded repetition in SERE formulas.
- Fix parsing of neverclaims produced by Modella.
New in spot 1.2.4 (2014-05-15) New in spot 1.2.4 (2014-05-15)

View file

@ -1,5 +1,5 @@
/* -*- coding: utf-8 -*- /* -*- coding: utf-8 -*-
** Copyright (C) 2010, 2011, 2012, 2013 Laboratoire de Recherche et ** Copyright (C) 2010, 2011, 2012, 2013, 2014 Laboratoire de Recherche et
** Développement de l'Epita (LRDE). ** Développement de l'Epita (LRDE).
** **
** This file is part of Spot, a model checking library. ** This file is part of Spot, a model checking library.
@ -191,7 +191,7 @@ transitions:
} }
formula: FORMULA | "false" { $$ = new std::string("0"); } formula: FORMULA | IDENT | "false" { $$ = new std::string("0"); }
opt_dest: opt_dest:
/* empty */ /* empty */

View file

@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Copyright (C) 2010, 2011, 2012, 2013 Laboratoire de Recherche et # Copyright (C) 2010, 2011, 2012, 2013, 2014 Laboratoire de Recherche
# Développement de l'Epita (LRDE). # et Développement de l'Epita (LRDE).
# #
# This file is part of Spot, a model checking library. # This file is part of Spot, a model checking library.
# #
@ -172,6 +172,40 @@ EOF
grep input: stderr >> stderrfilt grep input: stderr >> stderrfilt
diff stderrfilt expected diff stderrfilt expected
# This output from MoDeLLa was not property parsed by Spot because of
# the missing parentheses around p0. Report from František Blahoudek.
cat >input <<EOF
never{
T0_init:
if
:: true -> goto T1
:: p0 -> goto T2
fi;
T1:
if
:: true -> goto T1
:: p0 -> goto accept_T3
fi;
T2:
if
:: p0 -> goto accept_T3
fi;
accept_T3:
if
:: p0 -> goto T2
fi;
}
EOF
cat >expected<<EOF
transitions: 6
states: 4
EOF
run 0 ../ltl2tgba -ks -XN input > output
diff output expected
cat >formulae<<EOF cat >formulae<<EOF
a a
FG a FG a