int main(int argc, char *argv[]) { ATerm in_term, out_term; int i; /* ATfprintf(stderr, "This is %s\n", argv[0]); */ ATinit(argc, argv, &in_term); ATprotectArray(term_stack, TSIZE); ATprotectArray(environment, ESIZE); in_term = ATmake("Nil"); for(i = argc - 1; i >= 0; i--) { /* ATfprintf(stderr, " %s", argv[i]); */ in_term = App2("Cons", ATmakeString(argv[i]), in_term); } /* ATfprintf(stderr, "\n", argv[i]); */ out_term = doit(in_term); ATfprintf(stderr, "**** rewriting terminated abnormally\n"); exit(3); }
static ATerm CaseRewrite(ATerm t) { AFun f = ATgetAFun(t); int n = ATgetArity(f); ATerm u; // ATwarning("%t", t); if (n==0) return tasks->RWrewrite(t); u = ATtableGet(norm, t); if (u) return u; { int i; ATerm *a = calloc(n, sizeof(ATerm)); ATbool changed = ATfalse; ATprotectArray(a, n); for (i=0; i<n; i++) { ATerm arg = ATgetArgument((ATermAppl) t, i); a[i] = CaseRewrite(arg); if (!ATisEqual(a[i], arg)) changed = ATtrue; } u = CaseRewriteStep(changed?(ATerm) ATmakeApplArray(f, a):t); ATtablePut(norm, t, u); ATunprotect(a); free(a); return u; } }
int main(int argc, char *argv[]) { double duration; struct tms start, end; ATerm in_term, out_term; ATinit(argc, argv, &in_term); ATprotectArray(term_stack, TSIZE); ATprotectArray(environment, ESIZE); process_options(argc, argv); /* Open input file */ if (input_file == NULL) infile = stdin; else infile = fopen(input_file, "r"); /* Push term to be reduced on term stack */ if ((in_term = ATreadFromFile(infile)) == NULL) { ATfprintf(stderr, "not a valid term\n"); exit(1); } in_term = /*list_to_consnil*/(in_term); debugs(ATfprintf(stderr, "in_term (b) = %t\n", in_term)); /* Execute the strategy */ times(&start); out_term = doit(in_term); times(&end); duration = ((double)(end.tms_utime - start.tms_utime))/((double)CLK_TCK); if(out_term != NULL) { /* Open output file */ if (output_file == NULL) outfile = stdout; else outfile = fopen(output_file, "w"); /* ATfprintf(stdout, "%t\n", out_term); */ if(binary_output) ATwriteToBinaryFile(/*consnil_to_list*/(out_term), outfile); else ATwriteToTextFile(/*consnil_to_list*/(out_term), outfile); } print_profile(duration); if (!failed) { ATfprintf(stderr, " rewriting succeeded\n"); exit(0); } else { ATfprintf(stderr, " rewriting failed\n"); exit(1); } }