Same change for TypeList

release/4.3a0
dellaert 2014-12-02 11:27:41 +01:00
parent f00f62d89f
commit 6bdba5c17f
1 changed files with 9 additions and 8 deletions

View File

@ -222,25 +222,26 @@ struct TypeListGrammar: public classic::grammar<TypeListGrammar<OPEN, CLOSE> > {
typedef std::vector<wrap::Qualified> TypeList; typedef std::vector<wrap::Qualified> TypeList;
TypeList& result_; ///< successful parse will be placed in here TypeList& result_; ///< successful parse will be placed in here
mutable wrap::Qualified type; // temporary type for use during parsing
TypeGrammar type_g;
/// Construct type grammar and specify where result is placed /// Construct type grammar and specify where result is placed
TypeListGrammar(TypeList& result) : TypeListGrammar(TypeList& result) :
result_(result), type_g(type) { result_(result) {
} }
/// Definition of type grammar /// Definition of type grammar
template<typename ScannerT> template<typename ScannerT>
struct definition { struct definition {
mutable wrap::Qualified type; ///< temporary for use during parsing
TypeGrammar type_g; ///< Individual Type grammars
classic::rule<ScannerT> type_p, typeList_p; classic::rule<ScannerT> type_p, typeList_p;
definition(TypeListGrammar const& self) { definition(TypeListGrammar const& self) :
type_g(type) {
using namespace classic; using namespace classic;
type_p = self.type_g //
[push_back_a(self.result_, self.type)] // type_p = type_g[push_back_a(self.result_, type)][clear_a(type)];
[clear_a(self.type)];
typeList_p = OPEN >> !type_p >> *(',' >> type_p) >> CLOSE; typeList_p = OPEN >> !type_p >> *(',' >> type_p) >> CLOSE;
} }