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 }