Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:18:23

0001 #include <string>
0002 
0003 #include "HLTrigger/HLTcore/interface/TriggerExpressionParser.h"
0004 
0005 int parseExpression(std::string const& expression) {
0006   std::cout << "Input expression: \"" << expression << "\"\n";
0007 
0008   auto const* eval = triggerExpression::parse(expression);
0009 
0010   auto ret = 0;
0011   if (not eval) {
0012     std::cout << "Parsing failed.\n";
0013     ++ret;
0014   } else {
0015     std::cout << "Parsing output:   \"" << *eval << "\"\n";
0016   }
0017 
0018   std::cout << "--------------------------------------------------------\n";
0019 
0020   return ret;
0021 }
0022 
0023 void showHelpMessage() {
0024   std::cout << "\n"
0025             << "Purpose:\n"
0026             << "  test parsing of N expressions with the triggerExpression::Parser\n\n"
0027             << "Input:\n"
0028             << "  N command-line arguments, each parsed as a separate expression\n"
0029             << "  (if no arguments are given, or \"-h\" or \"--help\" is specified,"
0030             << " this help message is shown)\n\n"
0031             << "Exit code:\n"
0032             << "  number of expressions for which parsing failed\n\n"
0033             << "Example:\n"
0034             << "  > hltParseTriggerExpressions \"EXPR1\" \"EXPR2\" [..]\n\n";
0035 }
0036 
0037 int main(int argc, char** argv) {
0038   std::cout << "===             hltParseTriggerExpressions           ===\n";
0039   std::cout << "=== parse expressions with triggerExpression::Parser ===\n";
0040   std::cout << "--------------------------------------------------------\n";
0041 
0042   if (argc < 2) {
0043     std::cout << "No expressions specified for parsing. See help message below.\n";
0044     showHelpMessage();
0045     return 0;
0046   }
0047 
0048   std::vector<std::string> v_exprs;
0049   v_exprs.reserve(argc - 1);
0050   for (auto idx = 1; idx < argc; ++idx) {
0051     v_exprs.emplace_back(argv[idx]);
0052     if (v_exprs.back() == "-h" or v_exprs.back() == "--help") {
0053       showHelpMessage();
0054       v_exprs.clear();
0055       break;
0056     }
0057   }
0058 
0059   auto ret = 0;
0060   for (auto const& expr : v_exprs) {
0061     ret += parseExpression(expr);
0062   }
0063 
0064   return ret;
0065 }