#include #include #include #include #include #include <_aterm.h> #define MAX_SYMBOLS 1024; static int nr_symbols = 5; static int nr_terms = 100; static int open; static int term_count; static int magic_perc = 40; static ATbool unique_leaves = ATtrue; static ATbool binary = ATfalse; static AFun *symbols; ATerm genterm(ATerm t) { ATerm args[MAX_ARITY]; int i, arity, index, maxarity, todo; static int next_leave = 0; maxarity = nr_terms-(term_count+open); if(nr_symbols < maxarity) maxarity = nr_symbols; /*arity = lrand48() % (maxarity);*/ if(maxarity == 1) { term_count++; if(t) return (ATerm)ATmakeAppl1(symbols[1], t); else { if(unique_leaves) return (ATerm)ATmakeInt(next_leave++); else return (ATerm)ATmakeAppl0(symbols[0]); } } arity = 1+(lrand48() % (maxarity-1)); /*arity = lrand48() % nr_symbols;*/ for(i=0; i] [-terms ] [-wb|-wt] " "[-seed ] [-magic ] [-unique-leaves] [-help]\n", prg); exit(1); } int main(int argc, char *argv[]) { int i; ATbool help = ATfalse; long seed = (long)time(NULL); ATerm stack, t; for(i=1; i 100) magic_perc = 100; } else if(streq(argv[i], "-help")) { usage(argv[0]); help = ATtrue; } } ATinit(argc, argv, &stack); if(!silent) fprintf(stderr, "seed = %ld\n", seed); srand48(seed); if(help) exit(0); t = randgen(); if(binary) ATwriteToBinaryFile(t, stdout); else { ATfprintf(stdout, "%t\n", t); } return 0; }