snap::Expression::Expression(const std::string &e) { if (e.length() == 0) { throw ExpressionSyntaxError(e, "Expression cannot be empty."); } this -> operator_precedence["!@"] = std::make_pair(2, false); this -> operator_precedence["@"] = std::make_pair(2, false); this -> operator_precedence["!&"] = std::make_pair(2, false); this -> operator_precedence["&"] = std::make_pair(2, false); this -> operator_precedence["+"] = std::make_pair(2, false); this -> raw_expression = e; this -> tokenized_expression = tokenize(e); for (auto it = (this -> tokenized_expression).begin(); it != (this -> tokenized_expression).end(); ++it) { if (it -> second == snap::TokenType::STRING) { (this -> patterns).push_back(it -> first); } } this -> rpn_expression = convert_to_rpn(this -> tokenized_expression); }
int main(void) { char expression[100][400]; char rpn[100][400]; int i, num_expressions; scanf("%d", &num_expressions); for (i=0; i<num_expressions; i++) { scanf("%s", expression[i]); convert_to_rpn(expression[i], rpn[i]); } for (i=0; i<num_expressions; i++) { printf("%s\n", rpn[i]); } return 0; }