summaryrefslogtreecommitdiff
path: root/i/marvin/src/config/config_parser.cc
diff options
context:
space:
mode:
Diffstat (limited to 'i/marvin/src/config/config_parser.cc')
-rw-r--r--i/marvin/src/config/config_parser.cc142
1 files changed, 0 insertions, 142 deletions
diff --git a/i/marvin/src/config/config_parser.cc b/i/marvin/src/config/config_parser.cc
deleted file mode 100644
index ee0a6e3..0000000
--- a/i/marvin/src/config/config_parser.cc
+++ /dev/null
@@ -1,142 +0,0 @@
-// config_parser.cc
-// marvin - programme du robot 2006. {{{
-//
-// Copyright (C) 2006 Nicolas Schodet
-//
-// Robot APB Team/Efrei 2006.
-// Web: http://assos.efrei.fr/robot/
-// Email: robot AT efrei DOT fr
-//
-// This program 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.
-//
-// This program 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 this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-// }}}
-#include "config_parser.hh"
-#include "config.hh"
-
-#include "parser.hh"
-#include "lexer.hh"
-
-#include <stdexcept>
-#include <sstream>
-
-int yyparse (void *);
-
-/// Constructeur.
-ConfigParser::ConfigParser (ConfigData &configData)
- : configData_ (configData)
-{
-}
-
-/// Lance le parseur sur un fichier.
-void
-ConfigParser::parseFile (const std::string &file)
-{
- FILE *f;
- f = fopen (file.c_str (), "r");
- if (!f)
- throw std::runtime_error ("can not open file \"" + file + "\"");
- try
- {
- // Crée un scanner, initialise son tampon d'entré, puis parse.
- yyscan_t scanner;
- YY_BUFFER_STATE buf;
- Extra e (configData_, *this, true);
- yylex_init (&scanner);
- yyset_extra (&e, scanner);
- buf = yy_create_buffer (f, YY_READ_BUF_SIZE, scanner);
- yy_switch_to_buffer (buf, scanner);
- int ret = yyparse (scanner);
- yy_delete_buffer (buf, scanner);
- yylex_destroy (scanner);
- if (ret)
- {
- if (e.errorValid_)
- throw std::runtime_error (e.error_);
- else
- throw std::runtime_error ("parse error");
- }
- }
- catch (const std::runtime_error &e)
- {
- fclose (f);
- throw std::runtime_error ("in file \"" + file + "\": " + e.what ());
- }
- fclose (f);
-}
-
-/// Lance le parseur sur une chaîne.
-void
-ConfigParser::parseString (const std::string &s)
-{
- try
- {
- // Crée un scanner, initialise son tampon d'entré, puis parse.
- yyscan_t scanner;
- YY_BUFFER_STATE buf;
- Extra e (configData_, *this, false);
- yylex_init (&scanner);
- yyset_extra (&e, scanner);
- buf = yy_scan_bytes (s.data (), s.size (), scanner);
- int ret = yyparse (scanner);
- yy_delete_buffer (buf, scanner);
- yylex_destroy (scanner);
- if (ret)
- {
- if (e.errorValid_)
- throw std::runtime_error (e.error_);
- else
- throw std::runtime_error ("parse error");
- }
- }
- catch (const std::runtime_error &e)
- {
- throw std::runtime_error ("in config string \"" + s + "\": "
- + e.what ());
- }
-}
-
-/// Constructeur pour initialiser les références.
-ConfigParser::Extra::Extra (ConfigData &configData_, ConfigParser
- &configParser_, bool useLine)
- : configData (configData_), configParser (configParser_),
- line (1), errorValid_ (false), useLine_ (useLine)
-{
-}
-
-/// Recueille l'erreur de bison.
-void
-ConfigParser::Extra::error (const std::string &e)
-{
- if (!errorValid_)
- {
- error_ = e;
- errorValid_ = true;
- if (useLine_)
- {
- std::stringstream os;
- os << line;
- error_ += ", line ";
- error_ += os.str ();
- }
- }
-}
-
-/* Shut up warning for this wrongly declared static function. */
-static int
-yy_init_globals (yyscan_t yyscanner)
-{
- return yy_init_globals (yyscanner);
-}
-