summaryrefslogtreecommitdiff
path: root/i/marvin/src/config/parser.yy
diff options
context:
space:
mode:
authorschodet2006-04-09 13:48:55 +0000
committerschodet2006-04-09 13:48:55 +0000
commit1cb15048a3da2076ea3d41b53b2791cbb8925eec (patch)
tree076208c18525b3c43699294064b1b6ea5bdb9ac2 /i/marvin/src/config/parser.yy
parent8943c165faa72b9fc141d2244be0bf7118179043 (diff)
Ajout du parser générique.
Voila, j'ai résolu mes problèmes éthiques comme dit djerem.
Diffstat (limited to 'i/marvin/src/config/parser.yy')
-rw-r--r--i/marvin/src/config/parser.yy173
1 files changed, 0 insertions, 173 deletions
diff --git a/i/marvin/src/config/parser.yy b/i/marvin/src/config/parser.yy
deleted file mode 100644
index dc2be24..0000000
--- a/i/marvin/src/config/parser.yy
+++ /dev/null
@@ -1,173 +0,0 @@
-%{
-// 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/config.hh"
-#include "config/config_data.hh"
-#include "config/config_parser.hh"
-
-// Fichiers d'en-tête générés.
-#include "parser.hh"
-#include "lexer.hh"
-
-#undef yyextra
-#define yyextra (yyget_extra (scanner))
-
-void yyerror (void *scanner, const char *e);
-
-%}
-
-%error-verbose
-%pure-parser
-%lex-param {void *scanner}
-%parse-param {void *scanner}
-%defines
-%union {
- char c;
- int i;
- double f;
- bool b;
- std::string *s;
- struct {
- any *a;
- Config::IntList *il;
- Config::FloatList *fl;
- Config::StringList *sl;
- } a;
-}
-
-%token<c> UNKNOWN
-%token<i> INT
-%token<f> FLOAT
-%token<s> ID STRING
-%token<b> BOOLEAN
-
-%type<a> int_list
-%type<a> float_list
-%type<a> string_list
-
-%destructor { delete $$; } ID STRING
-%destructor { delete $$.a; } int_list
-%destructor { delete $$.a; } float_list
-%destructor { delete $$.a; } string_list
-
-%%
-
-input:
- /* Nothing. */
- | confitem
- | input '\n' confitem
- | input '\n'
-;
-
-confitem:
- ID '=' BOOLEAN {
- yyextra->configData.add (*$1, $3);
- delete $1;
- }
- | ID '=' INT {
- yyextra->configData.add (*$1, $3);
- delete $1;
- }
- | ID '=' FLOAT {
- yyextra->configData.add (*$1, $3);
- delete $1;
- }
- | ID '=' STRING {
- yyextra->configData.add (*$1, *$3);
- delete $1;
- delete $3;
- }
- | ID '=' '(' int_list ')' {
- yyextra->configData.add (*$1, *$4.a);
- delete $1;
- delete $4.a;
- }
- | ID '=' '(' float_list ')' {
- yyextra->configData.add (*$1, *$4.a);
- delete $1;
- delete $4.a;
- }
- | ID '=' '(' string_list ')' {
- yyextra->configData.add (*$1, *$4.a);
- delete $1;
- delete $4.a;
- }
-;
-
-int_list:
- INT {
- $$.a = new any (Config::IntList ());
- $$.il = any_cast<Config::IntList> ($$.a);
- $$.il->push_back ($1);
- }
- | int_list INT {
- $1.il->push_back ($2);
- $$ = $1;
- }
-;
-
-float_list:
- FLOAT {
- $$.a = new any (Config::FloatList ());
- $$.fl = any_cast<Config::FloatList> ($$.a);
- $$.fl->push_back ($1);
- }
- | float_list FLOAT {
- $1.fl->push_back ($2);
- $$ = $1;
- }
-;
-
-string_list:
- STRING {
- $$.a = new any (Config::StringList ());
- $$.sl = any_cast<Config::StringList> ($$.a);
- $$.sl->push_back (*$1);
- delete $1;
- }
- | string_list STRING {
- $1.sl->push_back (*$2);
- $$ = $1;
- delete $2;
- }
-;
-
-%%
-
-/// Traite une erreur de Bison.
-void
-yyerror (void *scanner, const char *e)
-{
- yyextra->error (e);
-}
-
-/* Shut up warning for this wrongly declared static function. */
-static int
-yy_init_globals (yyscan_t yyscanner)
-{
- return yy_init_globals (yyscanner);
-}
-
-/* vim:ft=yacc:
-*/