CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_2_9_HLT1_bphpatch4/src/CommonTools/Utils/src/expressionParser.cc

Go to the documentation of this file.
00001 #include "CommonTools/Utils/src/Grammar.h"
00002 #include "FWCore/Utilities/interface/EDMException.h"
00003 #include "CommonTools/Utils/interface/expressionParser.h"
00004 
00005 using namespace reco::parser;
00006 
00007 bool reco::parser::expressionParser(const Reflex::Type &t, const std::string & value, ExpressionPtr & expr, bool lazy) {
00008     using namespace boost::spirit::classic;
00009     Grammar grammar(expr, t, lazy);
00010     bool returnValue = false;
00011     const char* startingFrom = value.c_str();
00012     try {
00013         returnValue=parse(startingFrom, grammar.use_parser<1>() >> end_p, space_p).full;
00014     } catch(BaseException&e){
00015         throw edm::Exception(edm::errors::Configuration)<<"Expression parser error:"<<baseExceptionWhat(e)<<" (char "<<e.where-startingFrom<<")\n";
00016     }
00017     return returnValue;
00018 }