Replace spot::ltl_file by a rewritten spot::ltl::ltl_file.

* src/tgba/tgbafromfile.cc, src/tgba/tgbafromfile.hh: Delete these
files.
* src/tgba/Makefile.am: Remove them.
* src/ltl/ltlparse/ltlfile.hh, src/ltl/ltlparse/ltlfile.cc: New
files.
* src/ltl/ltlparse/Makefile.am: Add them.
* bench/scc-stats/stats.cc, bench/split-product/cutscc.cc: Rewrite
using the new class.
This commit is contained in:
Alexandre Duret-Lutz 2010-01-30 17:31:34 +01:00
parent dd3ac6b4f3
commit 4ff875f402
9 changed files with 167 additions and 183 deletions

View file

@ -1,4 +1,4 @@
## Copyright (C) 2008, 2009 Laboratoire de Recherche et Développement
## Copyright (C) 2008, 2009, 2010 Laboratoire de Recherche et Développement
## de l'Epita (LRDE).
## Copyright (C) 2003, 2004 Laboratoire d'Informatique de Paris
## 6 (LIP6), département Systèmes Répartis Coopératifs (SRC),
@ -56,10 +56,12 @@ EXTRA_DIST = $(LTLPARSE_YY)
libltlparse_la_SOURCES = \
fmterror.cc \
$(FROM_LTLPARSE_YY) \
ltlfile.cc \
ltlscan.ll \
parsedecl.hh
ltlparse_HEADERS = \
public.hh \
ltlfile.hh \
location.hh \
public.hh \
position.hh

71
src/ltlparse/ltlfile.cc Normal file
View file

@ -0,0 +1,71 @@
// Copyright (C) 2010 Laboratoire de Recherche et Développement
// de l'Epita (LRDE).
//
// 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 "ltlfile.hh"
#include "public.hh"
namespace spot
{
namespace ltl
{
ltl_file::ltl_file(const std::string& filename)
: in(filename.c_str())
{
if (!in)
{
std::cerr << "Cannot open " << filename << std::endl;
exit(2);
}
}
ltl_file::ltl_file(const char* filename)
: in(filename)
{
if (!in)
{
std::cerr << "Cannot open " << filename << std::endl;
exit(2);
}
}
formula* ltl_file::next()
{
if (!in.good())
return 0;
std::string input;
do
{
if (!std::getline(in, input))
return 0;
}
while (input == "");
spot::ltl::parse_error_list pel;
formula* f = parse(input, pel);
int ret = spot::ltl::format_parse_errors(std::cerr, input, pel);
if (ret)
exit(ret);
return f;
}
}
}

48
src/ltlparse/ltlfile.hh Normal file
View file

@ -0,0 +1,48 @@
// Copyright (C) 2010 Laboratoire de Recherche et Développement
// de l'Epita (LRDE).
//
// 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.
#ifndef SPOT_LTLPARSE_LTLFILE_HH
# define SPOT_LTLPARSE_LTLFILE_HH
#include <fstream>
#include "ltlast/formula.hh"
namespace spot
{
namespace ltl
{
/// \brief Read LTL formulae from a file, one by one
/// \ingroup ltl_io
class ltl_file
{
public:
ltl_file(const std::string& filename);
ltl_file(const char* filename);
/// Return the next parsed LTL formula, and 0 at end of file.
formula* next();
private:
std::ifstream in;
};
}
}
#endif