Esempio n. 1
0
int main(int argc, char **argv) {

  AST_node *expr1, *expr2, *expr3;
  
  Eval_return ret_status;
  Value val;

  expr1= create_variable_node("x");

  expr2= create_operator_node(ASSIGN,
            create_variable_node("x"),
            create_int_constant_node(3));

  expr3= create_operator_node(TIMES,
            create_double_constant_node(2.01),
            create_variable_node("x"));

  ret_status= evaluate(expr1, &val);
  if(ret_status != NOT_EVALUATED)
    test_failed(__LINE__);

  ret_status= evaluate(expr2, &val);
  if(ret_status != EVALUATED || val.value_type != IS_INT_VALUE ||
      val.number.int_value != 3)
    test_failed(__LINE__);

  ret_status= evaluate(expr1, &val);
  if(ret_status != EVALUATED || val.value_type != IS_INT_VALUE ||
      val.number.int_value != 3)
    test_failed(__LINE__);

  ret_status= evaluate(expr3, &val);
  if(ret_status != EVALUATED || val.value_type != IS_DOUBLE_VALUE ||
      val.number.double_value - 6.03 > 0.0001)
    test_failed(__LINE__);

  clear(&expr1);
  clear(&expr2);
  clear(&expr3);
  
  printf("Test passed!\n");

  return 0;
}
Esempio n. 2
0
struct node *create_random_node()
{
	struct node *n_node;
	int node_type = (rand() % 3) + 1;
	int key_val = 0;

	switch(node_type)
	{
		case 1:
			n_node = create_operator_node();
			if (rand()%2 == 0)
			{
				n_node -> left = create_feature_node();
			}
			else
			{
				n_node -> left = create_constant_node();
			}

			key_val = (int)n_node -> key_value;
			if (operator_req[key_val-1]==2)
			{
				if (rand()%2 == 0)
				{
					n_node -> right = create_feature_node();
				}
				else
				{
					n_node -> right = create_constant_node();
				}
			}
			break;

		case 2:
			n_node = create_feature_node();
			break;

		case 3:
			n_node = create_constant_node();
			break;
	}
	return n_node;
}
Esempio n. 3
0
int main(int argc, char **argv) {

  AST_node *expr1, *expr2, *expr3;

  expr1= create_operator_node(PLUS,
          create_operator_node(PLUS,
            create_operator_node(PLUS,
              create_operator_node(PLUS,
                create_int_constant_node(5),
                create_int_constant_node(4)),
              create_int_constant_node(3)),
            create_int_constant_node(2)),
          create_int_constant_node(1));

  print_expr(expr1);

  expr2= create_operator_node(EQUALS,
          create_operator_node(MODULUS,
            create_operator_node(PLUS,
              create_int_constant_node(3),
              create_int_constant_node(1)),
            create_int_constant_node(2)),
          create_operator_node(MODULUS,
            create_operator_node(MINUS,
              create_int_constant_node(3),
              create_int_constant_node(1)),
            create_int_constant_node(2)));
  print_expr(expr2);

  expr3= create_operator_node(ASSIGN_DIVIDE,
          create_variable_node("x"),
          create_operator_node(PLUS,
            create_operator_node(TIMES,
              create_double_constant_node(2.001),
              create_int_constant_node(4)),
            create_operator_node(MINUS,
              create_variable_node("z"),
              create_variable_node("q"))));
  print_expr(expr3);

  clear(&expr1);
  clear(&expr2);
  clear(&expr3);

  return 0;
}