diff --git a/wrap/Module.cpp b/wrap/Module.cpp index e492a9ed0..b31ea2b12 100644 --- a/wrap/Module.cpp +++ b/wrap/Module.cpp @@ -23,7 +23,7 @@ #include "utilities.h" //#define BOOST_SPIRIT_DEBUG -#include "spirit_actors.h" +#include "spirit.h" #ifdef __GNUC__ #pragma GCC diagnostic push diff --git a/wrap/Qualified.h b/wrap/Qualified.h index 6a5a3e9ce..0466b10f3 100644 --- a/wrap/Qualified.h +++ b/wrap/Qualified.h @@ -18,14 +18,7 @@ #pragma once -#include -#include -#include -#include -#include - -namespace classic = BOOST_SPIRIT_CLASSIC_NS; - +#include #include #include @@ -161,41 +154,6 @@ public: }; -/* ************************************************************************* */ -/// Som basic rules used by all parsers -template -struct basic_rules { - - typedef classic::rule Rule; - - Rule comments_p, basisType_p, eigenType_p, keywords_p, stlType_p, name_p, - className_p, namespace_p; - - basic_rules() { - - using namespace classic; - - comments_p = comment_p("/*", "*/") | comment_p("//", eol_p); - - basisType_p = (str_p("string") | "bool" | "size_t" | "int" | "double" - | "char" | "unsigned char"); - - eigenType_p = (str_p("Vector") | "Matrix"); - - keywords_p = - (str_p("const") | "static" | "namespace" | "void" | basisType_p); - - stlType_p = (str_p("vector") | "list"); - - name_p = lexeme_d[alpha_p >> *(alnum_p | '_')]; - - className_p = (lexeme_d[upper_p >> *(alnum_p | '_')] - eigenType_p - - keywords_p) | stlType_p; - - namespace_p = lexeme_d[lower_p >> *(alnum_p | '_')] - keywords_p; - } -}; - /* ************************************************************************* */ // http://boost-spirit.com/distrib/spirit_1_8_2/libs/spirit/doc/grammar.html class TypeGrammar: public classic::grammar { @@ -284,7 +242,7 @@ struct TypeListGrammar: public classic::grammar { definition(TypeListGrammar const& self) { using namespace classic; type_p = self.type_g // - [classic::push_back_a(self.result_, self.type)] // + [push_back_a(self.result_, self.type)] // [clear_a(self.type)]; typeList_p = '{' >> !type_p >> *(',' >> type_p) >> '}'; } diff --git a/wrap/spirit_actors.h b/wrap/spirit.h similarity index 69% rename from wrap/spirit_actors.h rename to wrap/spirit.h index ed7558b78..4a18b53e8 100644 --- a/wrap/spirit_actors.h +++ b/wrap/spirit.h @@ -1,16 +1,20 @@ /** * @file spirit_actors.h * - * @brief Additional actors for the wrap parser + * @brief Additional utilities and actors for the wrap parser * * @date Dec 8, 2011 * @author Alex Cunningham + * @author Frank Dellaert */ #pragma once #include -#include +#include +#include +#include +#include namespace boost { namespace spirit { @@ -121,3 +125,40 @@ BOOST_SPIRIT_CLASSIC_NAMESPACE_END } } +namespace classic = BOOST_SPIRIT_CLASSIC_NS; + +/// Some basic rules used by all parsers +template +struct basic_rules { + + typedef BOOST_SPIRIT_CLASSIC_NS::rule Rule; + + Rule comments_p, basisType_p, eigenType_p, keywords_p, stlType_p, name_p, + className_p, namespace_p; + + basic_rules() { + + using namespace BOOST_SPIRIT_CLASSIC_NS; + + comments_p = comment_p("/*", "*/") | comment_p("//", eol_p); + + basisType_p = (str_p("string") | "bool" | "size_t" | "int" | "double" + | "char" | "unsigned char"); + + eigenType_p = (str_p("Vector") | "Matrix"); + + keywords_p = + (str_p("const") | "static" | "namespace" | "void" | basisType_p); + + stlType_p = (str_p("vector") | "list"); + + name_p = lexeme_d[alpha_p >> *(alnum_p | '_')]; + + className_p = (lexeme_d[upper_p >> *(alnum_p | '_')] - eigenType_p + - keywords_p) | stlType_p; + + namespace_p = lexeme_d[lower_p >> *(alnum_p | '_')] - keywords_p; + } +}; + +