Commented out grammar
							parent
							
								
									24f5636d6a
								
							
						
					
					
						commit
						5bcd5d3c89
					
				|  | @ -23,13 +23,13 @@ | |||
| using namespace std; | ||||
| using namespace wrap; | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| //******************************************************************************
 | ||||
| // Constructor
 | ||||
| TEST( Method, Constructor ) { | ||||
|   Method method; | ||||
| } | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| //******************************************************************************
 | ||||
| // addOverload
 | ||||
| TEST( Method, addOverload ) { | ||||
|   Method method; | ||||
|  | @ -42,105 +42,101 @@ TEST( Method, addOverload ) { | |||
|   EXPECT_LONGS_EQUAL(2, method.nrOverloads()); | ||||
| } | ||||
| 
 | ||||
| // http://boost-spirit.com/distrib/spirit_1_8_2/libs/spirit/doc/grammar.html
 | ||||
| struct method_grammar: public classic::grammar<method_grammar> { | ||||
| 
 | ||||
|   wrap::Method& result_; ///< successful parse will be placed in here
 | ||||
| 
 | ||||
|   ArgumentList args; | ||||
|   Argument arg0, arg; | ||||
|   TypeGrammar argument_type_g; | ||||
| 
 | ||||
|   ReturnType retType0, retType; | ||||
|   TypeGrammar returntype_g; | ||||
| 
 | ||||
|   ReturnValue retVal0, retVal; | ||||
| 
 | ||||
|   /// Construct type grammar and specify where result is placed
 | ||||
|   method_grammar(wrap::Method& result) : | ||||
|       result_(result), argument_type_g(arg.type), returntype_g(retType) { | ||||
|   } | ||||
| 
 | ||||
|   /// Definition of type grammar
 | ||||
|   template<typename ScannerT> | ||||
|   struct definition: basic_rules<ScannerT> { | ||||
| 
 | ||||
|     typedef classic::rule<ScannerT> Rule; | ||||
| 
 | ||||
|     Rule templateArgValue_p, templateArgValues_p, argument_p, argumentList_p, | ||||
|         returnType1_p, returnType2_p, pair_p, returnValue_p, methodName_p, | ||||
|         method_p; | ||||
| 
 | ||||
|     definition(method_grammar const& self) { | ||||
| 
 | ||||
|       using namespace wrap; | ||||
|       using namespace classic; | ||||
| 
 | ||||
| //      Rule templateArgValue_p = type_grammar(self.templateArgValue);
 | ||||
| //// http://boost-spirit.com/distrib/spirit_1_8_2/libs/spirit/doc/grammar.html
 | ||||
| //struct method_grammar: public classic::grammar<method_grammar> {
 | ||||
| //
 | ||||
| //      // template<CALIBRATION = {gtsam::Cal3DS2}>
 | ||||
| //      Rule templateArgValues_p = (str_p("template") >> '<' >> name_p >> '='
 | ||||
| //          >> '{' >> !(templateArgValue_p >> *(',' >> templateArgValue_p)) >> '}'
 | ||||
| //          >> '>');
 | ||||
| //  wrap::Method& result_; ///< successful parse will be placed in here
 | ||||
| //
 | ||||
|       // NOTE: allows for pointers to all types
 | ||||
|       // Slightly more permissive than before on basis/eigen type qualification
 | ||||
|       argument_p = //
 | ||||
|           !str_p("const")[assign_a(self.arg.is_const, true)] //
 | ||||
|               >> self.argument_type_g //
 | ||||
|               >> (!ch_p('&')[assign_a(self.arg.is_ref, true)] | ||||
|                   | !ch_p('*')[assign_a(self.arg.is_ptr, true)]) //
 | ||||
|               [push_back_a(self.args, self.arg)] //
 | ||||
|               [assign_a(self.arg, self.arg0)]; | ||||
| 
 | ||||
|       argumentList_p = !argument_p >> *(',' >> argument_p); | ||||
| //  ArgumentList args;
 | ||||
| //  Argument arg0, arg;
 | ||||
| //  TypeGrammar argument_type_g;
 | ||||
| //
 | ||||
|       returnType1_p = self.returntype_g //
 | ||||
|           [assign_a(self.retVal.type1, retType)] //
 | ||||
|           [assign_a(self.retType, self.retType0)]; | ||||
| 
 | ||||
|       returnType2_p = self.returntype_g //
 | ||||
|           [assign_a(self.retVal.type2, retType)] //
 | ||||
|           [assign_a(self.retType, self.retType0)]; | ||||
| 
 | ||||
|       pair_p = (str_p("pair") >> '<' >> returnType1_p >> ',' >> returnType2_p | ||||
|           >> '>')[assign_a(self.retVal.isPair, true)]; | ||||
| 
 | ||||
|       returnValue_p = pair_p | returnType1_p; | ||||
| 
 | ||||
|       methodName_p = lexeme_d[(upper_p | lower_p) >> *(alnum_p | '_')]; | ||||
| 
 | ||||
|       // gtsam::Values retract(const gtsam::VectorValues& delta) const;
 | ||||
|       method_p = | ||||
| //          !templateArgValues_p >>
 | ||||
|           (returnValue_p >> methodName_p >> '(' >> argumentList_p >> ')' | ||||
|               >> !str_p("const") >> ';' >> *basic_rules<ScannerT>::comments_p); | ||||
|     } | ||||
| 
 | ||||
|     Rule const& start() const { | ||||
|       return method_p; | ||||
|     } | ||||
| 
 | ||||
|   }; | ||||
| }; | ||||
| // method_grammar
 | ||||
| //  ReturnType retType0, retType;
 | ||||
| //  TypeGrammar returntype_g;
 | ||||
| //
 | ||||
| //  ReturnValue retVal0, retVal;
 | ||||
| //
 | ||||
| //  /// Construct type grammar and specify where result is placed
 | ||||
| //  method_grammar(wrap::Method& result) :
 | ||||
| //      result_(result), argument_type_g(arg.type), returntype_g(retType) {
 | ||||
| //  }
 | ||||
| //
 | ||||
| //  /// Definition of type grammar
 | ||||
| //  template<typename ScannerT>
 | ||||
| //  struct definition: basic_rules<ScannerT> {
 | ||||
| //
 | ||||
| //    typedef classic::rule<ScannerT> Rule;
 | ||||
| //
 | ||||
| //    Rule templateArgValue_p, templateArgValues_p, argument_p, argumentList_p,
 | ||||
| //        returnType1_p, returnType2_p, pair_p, returnValue_p, methodName_p,
 | ||||
| //        method_p;
 | ||||
| //
 | ||||
| //    definition(method_grammar const& self) {
 | ||||
| //
 | ||||
| //      using namespace wrap;
 | ||||
| //      using namespace classic;
 | ||||
| //
 | ||||
| ////      Rule templateArgValue_p = type_grammar(self.templateArgValue);
 | ||||
| ////
 | ||||
| ////      // template<CALIBRATION = {gtsam::Cal3DS2}>
 | ||||
| ////      Rule templateArgValues_p = (str_p("template") >> '<' >> name_p >> '='
 | ||||
| ////          >> '{' >> !(templateArgValue_p >> *(',' >> templateArgValue_p)) >> '}'
 | ||||
| ////          >> '>');
 | ||||
| ////
 | ||||
| //      // Create type grammar that will place result in actual
 | ||||
| //      ArgumentList actual;
 | ||||
| //      ArgumentListGrammar g(actual);
 | ||||
| //
 | ||||
| //      EXPECT(parse("(const gtsam::Point2& p4)", g, space_p).full);
 | ||||
| //      EXPECT_LONGS_EQUAL(1, actual.size());
 | ||||
| //      actual.clear();
 | ||||
| //
 | ||||
| //      returnType1_p = self.returntype_g //
 | ||||
| //          [assign_a(self.retVal.type1, retType)] //
 | ||||
| //          [assign_a(self.retType, self.retType0)];
 | ||||
| //
 | ||||
| //      returnType2_p = self.returntype_g //
 | ||||
| //          [assign_a(self.retVal.type2, retType)] //
 | ||||
| //          [assign_a(self.retType, self.retType0)];
 | ||||
| //
 | ||||
| //      pair_p = (str_p("pair") >> '<' >> returnType1_p >> ',' >> returnType2_p
 | ||||
| //          >> '>')[assign_a(self.retVal.isPair, true)];
 | ||||
| //
 | ||||
| //      returnValue_p = pair_p | returnType1_p;
 | ||||
| //
 | ||||
| //      methodName_p = lexeme_d[(upper_p | lower_p) >> *(alnum_p | '_')];
 | ||||
| //
 | ||||
| //      // gtsam::Values retract(const gtsam::VectorValues& delta) const;
 | ||||
| //      method_p =
 | ||||
| ////          !templateArgValues_p >>
 | ||||
| //          (returnValue_p >> methodName_p >> '(' >> argumentList_p >> ')'
 | ||||
| //              >> !str_p("const") >> ';' >> *basic_rules<ScannerT>::comments_p);
 | ||||
| //    }
 | ||||
| //
 | ||||
| //    Rule const& start() const {
 | ||||
| //      return method_p;
 | ||||
| //    }
 | ||||
| //
 | ||||
| //  };
 | ||||
| //};
 | ||||
| //// method_grammar
 | ||||
| //
 | ||||
| ////******************************************************************************
 | ||||
| //TEST( Method, grammar ) {
 | ||||
| //
 | ||||
| //  using classic::space_p;
 | ||||
| //
 | ||||
| //  // Create type grammar that will place result in actual
 | ||||
| //  Method actual;
 | ||||
| //  method_grammar method_g(actual);
 | ||||
| //
 | ||||
| //  // a class type with namespaces
 | ||||
| //  EXPECT(parse("double x() const;", method_g, space_p).full);
 | ||||
| //}
 | ||||
| 
 | ||||
| //******************************************************************************
 | ||||
| TEST( Method, grammar ) { | ||||
| 
 | ||||
|   using classic::space_p; | ||||
| 
 | ||||
|   // Create type grammar that will place result in actual
 | ||||
|   Method actual; | ||||
|   method_grammar method_g(actual); | ||||
| 
 | ||||
|   // a class type with namespaces
 | ||||
|   EXPECT(parse("double x() const;", method_g, space_p).full); | ||||
| } | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| int main() { | ||||
|   TestResult tr; | ||||
|   return TestRegistry::runAllTests(tr); | ||||
| } | ||||
| /* ************************************************************************* */ | ||||
| //******************************************************************************
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue