Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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;
}