Ejemplo n.º 1
0
static void test_chars() {
  CC_Class *cc[CC_BITS], *cc_input, *temp, *all;
  ATerm input, output;
  int i;
 
  input = ATparse("char-class([0,range(9,10),12,23,range(30,50),range(128,256)])");
  cc_input = CC_ClassFromTerm(input);

  temp = CC_makeClassEmpty();
  CC_addATermClass(temp, input);
  assert(CC_isEqual(temp, cc_input));
  CC_free(temp);

  temp = CC_makeClassEmpty();
  assert(CC_isEmpty(temp));
  for (i=0; i<CC_BITS; i++) {
    cc[i] = CC_ClassFromInt(i);
    if (i == CC_EOF) {
      assert(CC_isEOF(cc[i]));
    } else {
      assert(!CC_isEOF(cc[i]));
    }
    CC_union(temp, cc[i], temp);
    assert(!CC_isEOF(temp));
  }
  all = CC_makeClassAllChars();
  assert(!CC_isEmpty(all));

  assert(CC_isEqual(temp, all));
  CC_difference(temp, all, temp);
  assert(CC_isEmpty(temp));

  CC_copy(all, temp);
  CC_difference(temp, cc_input, temp);
  CC_complement(temp, temp);
  assert(CC_isEqual(temp, cc_input));


  CC_copy(all, temp);
  CC_difference(temp, cc_input, temp);
  CC_union(temp, cc_input, temp);
  assert(CC_isEqual(temp, all));

  CC_copy(all, temp);
  CC_intersection(temp, cc_input, temp);
  assert(CC_isEqual(temp, cc_input));

  assert(CC_isSubset(cc_input, all));

  output = CC_ClassToTerm(cc_input);
  /*
  ATwarning("input = %t\noutput = %t\n", input, output);
  assert(ATisEqual(output, input));
  */
}
Ejemplo n.º 2
0
void destroy_first() {
  int i;

  for (i=0; i<max_first_sets; i++) {
    if (first_sets[i] != NULL) {
      CC_free(first_sets[i]);
    }
  }

  free(first_sets);
  first_sets = NULL;
  max_first_sets = 0;
}