Template ltlast/ & ltlenv/ classes in internal/ & Add ELTL parser.
This commit is contained in:
parent
21c98c0a01
commit
543190f2bc
74 changed files with 4299 additions and 468 deletions
44
src/eltltest/Makefile.am
Normal file
44
src/eltltest/Makefile.am
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
## Copyright (C) 2003, 2004, 2005, 2006 Laboratoire d'Informatique de
|
||||
## Paris 6 (LIP6), département Systèmes Répartis Coopératifs (SRC),
|
||||
## Université Pierre et Marie Curie.
|
||||
##
|
||||
## This file is part of Spot, a model checking library.
|
||||
##
|
||||
## Spot is free software; you can redistribute it and/or modify it
|
||||
## under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation; either version 2 of the License, or
|
||||
## (at your option) any later version.
|
||||
##
|
||||
## Spot is distributed in the hope that it will be useful, but WITHOUT
|
||||
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
## License for more details.
|
||||
##
|
||||
## You should have received a copy of the GNU General Public License
|
||||
## along with Spot; see the file COPYING. If not, write to the Free
|
||||
## Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
## 02111-1307, USA.
|
||||
|
||||
AM_CPPFLAGS = -I$(srcdir)/.. $(BUDDY_CPPFLAGS)
|
||||
AM_CXXFLAGS = $(WARNING_CXXFLAGS)
|
||||
LDADD = ../libspot.la
|
||||
|
||||
check_SCRIPTS = defs
|
||||
# Keep this sorted alphabetically.
|
||||
check_PROGRAMS = \
|
||||
acc \
|
||||
nfa
|
||||
|
||||
acc_SOURCES = acc.cc
|
||||
nfa_SOURCES = nfa.cc
|
||||
|
||||
EXTRA_DIST = $(TESTS)
|
||||
|
||||
# Ordered by strength of the test. Test basic features first.
|
||||
TESTS = \
|
||||
acc.test \
|
||||
nfa.test
|
||||
|
||||
CLEANFILES = \
|
||||
input \
|
||||
prelude
|
||||
42
src/eltltest/acc.cc
Normal file
42
src/eltltest/acc.cc
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
// Copyright (C) 2008 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
// et Marie Curie.
|
||||
//
|
||||
// This file is part of Spot, a model checking library.
|
||||
//
|
||||
// Spot is free software; you can redistribute it and/or modify it
|
||||
// under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Spot is distributed in the hope that it will be useful, but WITHOUT
|
||||
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
// License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Spot; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
// 02111-1307, USA.
|
||||
|
||||
#include <iostream>
|
||||
#include <cassert>
|
||||
#include "eltlparse/public.hh"
|
||||
|
||||
int
|
||||
main(int argc, char** argv)
|
||||
{
|
||||
spot::eltl::parse_error_list p;
|
||||
const spot::eltl::formula* f = spot::eltl::parse(
|
||||
argv[1], p, spot::eltl::default_environment::instance(), argc > 2);
|
||||
|
||||
if (spot::eltl::format_parse_errors(std::cerr, p))
|
||||
{
|
||||
if (f != 0)
|
||||
std::cout << f->dump() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
assert(f != 0);
|
||||
std::cout << f->dump() << std::endl;
|
||||
}
|
||||
31
src/eltltest/acc.test
Executable file
31
src/eltltest/acc.test
Executable file
|
|
@ -0,0 +1,31 @@
|
|||
#!/bin/sh
|
||||
|
||||
. ./defs || exit 1
|
||||
|
||||
set -e
|
||||
cat >prelude <<EOF
|
||||
S=(
|
||||
0 1 \$0
|
||||
= 1
|
||||
)
|
||||
EOF
|
||||
|
||||
cat >input <<EOF
|
||||
include prelude
|
||||
A=(
|
||||
0 1 \$2
|
||||
1 2 \$0
|
||||
= 0
|
||||
)
|
||||
%
|
||||
A(1,a,a|b)&S(1)
|
||||
EOF
|
||||
run 0 ./acc input || exit 1
|
||||
|
||||
cat >input <<EOF
|
||||
A=(
|
||||
)
|
||||
%
|
||||
1
|
||||
EOF
|
||||
run 0 ./acc input || exit 1
|
||||
75
src/eltltest/defs.in
Normal file
75
src/eltltest/defs.in
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
# -*- shell-script -*-
|
||||
# Copyright (C) 2003, 2004, 2006 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
# département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
# et Marie Curie.
|
||||
#
|
||||
# This file is part of Spot, a model checking library.
|
||||
#
|
||||
# Spot is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Spot is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
# License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Spot; see the file COPYING. If not, write to the Free
|
||||
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# Ensure we are running from the right directory.
|
||||
test -f ./defs || {
|
||||
echo "defs: not found in current directory" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# If srcdir is not set, then we are not running from `make check', be verbose.
|
||||
if test -z "$srcdir"; then
|
||||
test -z "$VERBOSE" && VERBOSE=x
|
||||
# compute $srcdir.
|
||||
srcdir=`echo "$0" | sed -e 's,/[^\\/]*$,,'`
|
||||
test $srcdir = $0 && srcdir=.
|
||||
fi
|
||||
|
||||
# Ensure $srcdir is set correctly.
|
||||
test -f $srcdir/defs.in || {
|
||||
echo "$srcdir/defs.in not found, check \$srcdir" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# User can set VERBOSE to see all output.
|
||||
test -z "$VERBOSE" && exec >/dev/null 2>&1
|
||||
|
||||
echo "== Running test $0"
|
||||
|
||||
DOT='@DOT@'
|
||||
VALGRIND='@VALGRIND@'
|
||||
|
||||
run()
|
||||
{
|
||||
expected_exitcode=$1
|
||||
shift
|
||||
exitcode=0
|
||||
if test -n "$VALGRIND"; then
|
||||
exec 6>valgrind.err
|
||||
GLIBCPP_FORCE_NEW=1 \
|
||||
$VALGRIND --tool=memcheck --leak-check=yes --log-fd=6 -q "$@" ||
|
||||
exitcode=$?
|
||||
cat valgrind.err 1>&2
|
||||
test -z "`sed 1q valgrind.err`" || exit 50
|
||||
rm -f valgrind.err
|
||||
else
|
||||
"$@" || exitcode=$?
|
||||
fi
|
||||
test $exitcode = $expected_exitcode || exit 1
|
||||
}
|
||||
|
||||
# Turn on shell traces when VERBOSE=x.
|
||||
if test "x$VERBOSE" = xx; then
|
||||
set -x
|
||||
else
|
||||
:
|
||||
fi
|
||||
57
src/eltltest/nfa.cc
Normal file
57
src/eltltest/nfa.cc
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
// Copyright (C) 2008 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
// et Marie Curie.
|
||||
//
|
||||
// This file is part of Spot, a model checking library.
|
||||
//
|
||||
// Spot is free software; you can redistribute it and/or modify it
|
||||
// under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Spot is distributed in the hope that it will be useful, but WITHOUT
|
||||
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
// License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Spot; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
// 02111-1307, USA.
|
||||
|
||||
#include <string>
|
||||
#include <set>
|
||||
#include <iostream>
|
||||
#include "eltlast/nfa.hh"
|
||||
|
||||
using namespace spot::eltl;
|
||||
|
||||
typedef std::set<const nfa::state*> mset;
|
||||
|
||||
void
|
||||
dfs(nfa& a, const nfa::state* s, mset& m)
|
||||
{
|
||||
if (m.find(s) != m.end())
|
||||
return;
|
||||
m.insert(s);
|
||||
|
||||
for (nfa::iterator i = a.begin(s); i != a.end(s); ++i)
|
||||
{
|
||||
std::cout << a.format_state((*i)->dest) << std::endl;
|
||||
dfs(a, (*i)->dest, m);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
nfa a;
|
||||
|
||||
a.add_transition("0", "1", 1);
|
||||
a.add_transition("1", "2", 2);
|
||||
|
||||
std::cout << "init: " << a.format_state(a.get_init_state()) << std::endl;
|
||||
|
||||
mset m;
|
||||
dfs(a, a.get_init_state(), m);
|
||||
}
|
||||
6
src/eltltest/nfa.test
Executable file
6
src/eltltest/nfa.test
Executable file
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/sh
|
||||
|
||||
. ./defs || exit 1
|
||||
|
||||
set -e
|
||||
run 0 ./nfa || exit 1
|
||||
Loading…
Add table
Add a link
Reference in a new issue