for ELTL. This is a new version of the work started in 2008 with LTL and ELTL formulae now sharing the same class hierarchy. * configure.ac: Adjust for src/eltlparse/ and src/eltltest/ directories, and call AX_BOOST_BASE. * m4/boost.m4: New file defining AX_BOOST_BASE([MINIMUM-VERSION]). * src/Makefile.am: Add eltlparse and eltltest. * src/eltlparse/: New directory. Contains the ELTL parser. * src/eltltest/: New directory. Contains tests related to ELTL (parser and AST). * src/ltlast/Makefile.am: Adjust for ELTL AST files. * src/ltlast/automatop.cc, src/ltlast/automatop.hh: New files. Represent automaton operators nodes used in ELTL ASTs. * src/ltlast/nfa.cc, src/ltlast/nfa.hh: New files. Represent simple NFAs used internally by automatop nodes. * src/ltlast/allnode.hh, src/ltlast/predecl.hh, src/ltlast/visitor.hh: Adjust for automatop. * src/ltlvisit/basicreduce.cc, src/ltlvisit/clone.cc, src/ltlvisit/clone.hh, src/ltlvisit/contain.cc, src/ltlvisit/dotty.cc, src/ltlvisit/nenoform.cc, src/ltlvisit/postfix.cc, src/ltlvisit/postfix.hh, src/ltlvisit/reduce.cc, src/ltlvisit/syntimpl.cc, src/ltlvisit/tostring.cc: Because LTL and ELTL formulae share the same class hierarchy, LTL visitors need to handle automatop nodes to compile. When it's meaningful the visitor applies on automatop nodes or simply assert(0) otherwise. * src/tgba/tgbabddconcretefactory.cc (create_anonymous_state), src/tgba/tgbabddconcretefactory.hh (create_anonymous_state): New function used by the LaCIM translation algorithm for ELTL. * src/tgbaalgos/Makefile.am: Adjust for eltl2tgba_lacim* files. * src/tgbaalgos/eltl2tgba_lacim.cc, src/tgbaalgos/eltl2tgba_lacim.hh: New files. Implementation of the LaCIM translation algorithm for ELTL. * src/tgbaalgos/ltl2tgba_fm.cc, src/tgbaalgos/ltl2tgba_lacim.cc: Handle automatop nodes in the translation by an assert(0). * src/tgbatest/Makefile.am: Adjust for eltl2tgba.* files. * src/src/tgbatest/eltl2tgba.cc, src/tgbatest/eltl2tgba.test: New files
76 lines
2.5 KiB
C++
76 lines
2.5 KiB
C++
// Copyright (C) 2003, 2004, 2005 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.
|
|
|
|
/// \file ltlast/visitor.hh
|
|
/// \brief LTL visitor interface
|
|
#ifndef SPOT_LTLAST_VISITOR_HH
|
|
# define SPOT_LTLAST_VISITOR_HH
|
|
|
|
#include "predecl.hh"
|
|
|
|
namespace spot
|
|
{
|
|
namespace ltl
|
|
{
|
|
/// \brief Formula visitor that can modify the formula.
|
|
/// \ingroup ltl_essential
|
|
///
|
|
/// Writing visitors is the prefered way
|
|
/// to traverse a formula, since it doesn't
|
|
/// involve any cast.
|
|
///
|
|
/// If you do not need to modify the visited formula, inherit from
|
|
/// spot::ltl:const_visitor instead.
|
|
struct visitor
|
|
{
|
|
virtual ~visitor() {}
|
|
virtual void visit(atomic_prop* node) = 0;
|
|
virtual void visit(constant* node) = 0;
|
|
virtual void visit(binop* node) = 0;
|
|
virtual void visit(unop* node) = 0;
|
|
virtual void visit(multop* node) = 0;
|
|
virtual void visit(automatop* node) = 0;
|
|
};
|
|
|
|
/// \brief Formula visitor that cannot modify the formula.
|
|
///
|
|
/// Writing visitors is the prefered way
|
|
/// to traverse a formula, since it doesn't
|
|
/// involve any cast.
|
|
///
|
|
/// If you want to modify the visited formula, inherit from
|
|
/// spot::ltl:visitor instead.
|
|
struct const_visitor
|
|
{
|
|
virtual ~const_visitor() {}
|
|
virtual void visit(const atomic_prop* node) = 0;
|
|
virtual void visit(const constant* node) = 0;
|
|
virtual void visit(const binop* node) = 0;
|
|
virtual void visit(const unop* node) = 0;
|
|
virtual void visit(const multop* node) = 0;
|
|
virtual void visit(const automatop* node) = 0;
|
|
};
|
|
|
|
|
|
}
|
|
}
|
|
|
|
#endif // SPOT_LTLAST_VISITOR_HH
|