Esempio n. 1
0
void test_char_rnn(char *cfgfile, char *weightfile, int num, char *seed, float temp, int rseed, char *token_file)
{
    char **tokens = 0;
    if(token_file){
        size_t n;
        tokens = read_tokens(token_file, &n);
    }

    srand(rseed);
    char *base = basecfg(cfgfile);
    fprintf(stderr, "%s\n", base);

    network net = parse_network_cfg(cfgfile);
    if(weightfile){
        load_weights(&net, weightfile);
    }
    int inputs = get_network_input_size(net);

    int i, j;
    for(i = 0; i < net.n; ++i) net.layers[i].temperature = temp;
    int c = 0;
    int len = strlen(seed);
    float *input = calloc(inputs, sizeof(float));

    /*
       fill_cpu(inputs, 0, input, 1);
       for(i = 0; i < 10; ++i){
       network_predict(net, input);
       }
       fill_cpu(inputs, 0, input, 1);
     */

    for(i = 0; i < len-1; ++i){
        c = seed[i];
        input[c] = 1;
        network_predict(net, input);
        input[c] = 0;
        print_symbol(c, tokens);
    }
    if(len) c = seed[len-1];
    print_symbol(c, tokens);
    for(i = 0; i < num; ++i){
        input[c] = 1;
        float *out = network_predict(net, input);
        input[c] = 0;
        for(j = 32; j < 127; ++j){
            //printf("%d %c %f\n",j, j, out[j]);
        }
        for(j = 0; j < inputs; ++j){
            if (out[j] < .0001) out[j] = 0;
        }
        c = sample_array(out, inputs);
        print_symbol(c, tokens);
    }
    printf("\n");
}
Esempio n. 2
0
bool test_cond()
{
   list *l;
   environment *env = new_env();
   macro *m;
   
   l = read_tokens(expand_readmacro(
         tokenize("(cond ((+ 1 2) (+ 2 3)) (else 0))")));
   m = eval(eval(l, env), env);
   
   assert(integer_to_int(m) == 5);

   l = read_tokens(expand_readmacro(
         tokenize("(cond (#f (+ 2 3)) (#f (+ 2 3))(else 0))")));
   m = eval(eval(l, env), env);
   assert(integer_to_int(m) == 0);

   return true;
}
Esempio n. 3
0
void test_tactic_rnn_multi(char *cfgfile, char *weightfile, int num,
		real_t temp, int rseed, char *token_file) {
	char **tokens = 0;
	if (token_file) {
		size_t n;
		tokens = read_tokens(token_file, &n);
	}

	srand(rseed);
	char *base = basecfg(cfgfile);
	fprintf(stderr, "%s\n", base);

	network *net = load_network(cfgfile, weightfile, 0);
	int inputs = net->inputs;

	int i, j;
	for (i = 0; i < net->n; ++i)
		net->layers[i].temperature = temp;
	int c = 0;
	real_t *input = calloc(inputs, sizeof(real_t));
	real_t *out = 0;

	while (1) {
		reset_network_state(net, 0);
		while ((c = getc(stdin)) != EOF && c != 0) {
			input[c] = 1;
			out = network_predict(net, input);
			input[c] = 0;
		}
		for (i = 0; i < num; ++i) {
			for (j = 0; j < inputs; ++j) {
				if (out[j] < .0001)
					out[j] = 0;
			}
			int next = sample_array(out, inputs);
			if (c == '.' && next == '\n')
				break;
			c = next;
			print_symbol(c, tokens);

			input[c] = 1;
			out = network_predict(net, input);
			input[c] = 0;
		}
		printf("\n");
	}
}
Esempio n. 4
0
bool test_macro()
{
   list *l;
   environment *env = new_env();
   macro *m;
   list *arg;
   list *body;

   l = read_tokens(expand_readmacro(
         tokenize("(defmacro m (x) `(,x ,x))")));
   m = eval(eval(l, env), env);
   
   arg = car(m);
   body = cdr(m);
   assert(equal_symbol(car(arg), new_symbol("x")));
   assert(equal_symbol(car(body), new_symbol("quasiquote")));
   return true;
}
Esempio n. 5
0
void test_tactic_rnn(char *cfgfile, char *weightfile, int num, float temp, int rseed, char *token_file)
{
    char **tokens = 0;
    if(token_file){
        size_t n;
        tokens = read_tokens(token_file, &n);
    }

    srand(rseed);
    char *base = basecfg(cfgfile);
    fprintf(stderr, "%s\n", base);

    network net = parse_network_cfg(cfgfile);
    if(weightfile){
        load_weights(&net, weightfile);
    }
    int inputs = get_network_input_size(net);

    int i, j;
    for(i = 0; i < net.n; ++i) net.layers[i].temperature = temp;
    int c = 0;
    float *input = calloc(inputs, sizeof(float));
    float *out = 0;

    while((c = getc(stdin)) != EOF){
        input[c] = 1;
        out = network_predict(net, input);
        input[c] = 0;
    }
    for(i = 0; i < num; ++i){
        for(j = 0; j < inputs; ++j){
            if (out[j] < .0001) out[j] = 0;
        }
        int next = sample_array(out, inputs);
        if(c == '.' && next == '\n') break;
        c = next;
        print_symbol(c, tokens);

        input[c] = 1;
        out = network_predict(net, input);
        input[c] = 0;
    }
    printf("\n");
}
Esempio n. 6
0
int main(int argc, char *argv[])
{
    struct state_machine *sm;
    char *filename;

    int nstates;
    int i;
    int use_goto;

    use_goto = is_goto(argc, argv);

    sm = sm_make();

    sm->tokens = read_tokens();

    if (sm->tokens == NULL)
        panic("Invalid token input");

    read_nstates(sm);
    read_initial_state(sm);
    read_final_states(sm);

    setup_transitions(sm);

    printf("Output filename: ");
    fflush(stdout);

    filename = read_line();

    if (use_goto)
        write_output_goto(sm, filename);
    else
        write_output_func(sm, filename);

    sm_free(sm);

    return 0;
}
Esempio n. 7
0
int test_read_tokens()
{
   environment *env = new_env();
   integer *i;
   list *l;
   list *r;

   l = tokenize("10");
   r = read_tokens(l);
   r = expand_readmacro(r);
   i = eval(r, env);
   assert(integer_to_int(i) == 10);

   l = tokenize("(+ 5 5)");
   r = read_tokens(l);
   r = expand_readmacro(r);
   i = eval(r, env);
   assert(integer_to_int(i) == 10);

   l = tokenize("(+ (+ 1 4) (+ 2 3))");
   r = read_tokens(l);
   r = expand_readmacro(r);
   i = eval(r, env);
   assert(integer_to_int(i) == 10);

   l = tokenize("(+ (+ 1 2) (+ 2 3) (+ 3 4))");
   r = read_tokens(l);
   r = expand_readmacro(r);
   i = eval(r, env);
   assert(integer_to_int(i) == 15);

   l = tokenize("(+ (+ (+ 1 2) (+ 2 3)) (+ 3 4))");
   r = read_tokens(l);
   r = expand_readmacro(r);
   i = eval(r, env);
   assert(integer_to_int(i) == 15);

   l = tokenize("((lambda (x) (+ x 1)) 10)");
   r = read_tokens(l);
   r = expand_readmacro(r);
   i = eval(r, env);
   assert(integer_to_int(i) == 11);

   l = tokenize("(define x 10)");
   r = read_tokens(l);
   r = expand_readmacro(r);
   i = eval(r, env);

   l = tokenize("x");
   r = read_tokens(l);
   r = expand_readmacro(r);
   i = eval(r, env);
   assert(integer_to_int(i) == 10);

   l = tokenize("(define y (lambda (a) (+ a x)))");
   r = read_tokens(l);
   r = expand_readmacro(r);
   i = eval(r, env);
   l = tokenize("(y 1)");
   r = expand_readmacro(r);
   r = read_tokens(l);
   i = eval(r, env);
   assert(integer_to_int(i) == 11);

   l = tokenize("'(1 . 2)");
   l = expand_readmacro(l);
   r = read_tokens(l);
   i = eval(r, env);
   assert(integer_to_int(car(i)) == 1);
   assert(integer_to_int(cdr(i)) == 2);

   l = tokenize("`(1 2)");
   l = expand_readmacro(l);
   r = read_tokens(l);
   i = eval(r, env);
   assert(integer_to_int(car(i)) == 1);
   assert(integer_to_int(car(cdr(i))) == 2);

   l = tokenize("`(,x ,x)");
   l = expand_readmacro(l);
   r = read_tokens(l);
   i = eval(r, env);
   assert(integer_to_int(car(i)) == 10);
   assert(integer_to_int(car(cdr(i))) == 10);

   l = tokenize("`(,(+ 5 5) ,(+ 5 5))");
   l = expand_readmacro(l);
   r = read_tokens(l);
   i = eval(r, env);
   assert(integer_to_int(car(i)) == 10);
   assert(integer_to_int(car(cdr(i))) == 10);


   
   l = tokenize("(define y `(,x ,x))");
   l = expand_readmacro(l);
   r = read_tokens(l);
   i = eval(r, env);

   l = tokenize("`(,@y)");
   l = expand_readmacro(l);
   r = read_tokens(l);
   i = eval(r, env);
   assert(integer_to_int(car(i)) == 10);
   assert(integer_to_int(car(cdr(i))) == 10);

   l = tokenize("`(1 ,@y 3)");
   l = expand_readmacro(l);
   r = read_tokens(l);
   i = eval(r, env);
   assert(integer_to_int(car(i)) == 1);
   assert(integer_to_int(car(cdr(i))) == 10);
   assert(integer_to_int(car(cdr(cdr(i)))) == 10);
   assert(integer_to_int(car(cdr(cdr(cdr(i))))) == 3);

   l = tokenize("()");
   l = expand_readmacro(l);
   r = read_tokens(l);
   i = eval(r, env);
   assert(i == NULL);

   l = tokenize("'(   ) ");
   l = expand_readmacro(l);
   r = read_tokens(l);
   i = eval(r, env);
   assert(i == NULL);


   return 1;
}
int taint_debug(int argc, char** argv)
{
    int infd = 0;
    struct taint_op top;
    long taint_ops = 0;
    struct stat buf;
    int rc;
    loff_t bytes_read = 0;

    char* group_dir;
    char taint_structures_filename[256];
    char results_filename[256];
    char filenames_filename[256];
    char options_filename[256];
    char tokens_filename[256];
    char debug_filename[256];

    if (argc < 2) {
        usage();
    }

    group_dir = argv[1];
    snprintf(taint_structures_filename, 256, "%s/taint_structures", group_dir);
    snprintf(results_filename, 256, "%s/dataflow.result", group_dir);
    snprintf(filenames_filename, 256, "%s/filenames", group_dir);
    snprintf(options_filename, 256, "%s/options", group_dir);
    snprintf(tokens_filename, 256, "%s/tokens", group_dir);
    snprintf(debug_filename, 256, "%s/trace_taint_ops", group_dir);

    leaf_node_table = g_hash_table_new(g_direct_hash, g_direct_equal);
    merge_node_table = g_hash_table_new(g_direct_hash, g_direct_equal);
    merge_index_table = g_hash_table_new(g_int64_hash, g_int64_equal);

    option_info_table = g_hash_table_new(g_direct_hash, g_direct_equal);
    filename_table = g_hash_table_new(g_direct_hash, g_direct_equal);

    taint_operations_table = g_hash_table_new(g_direct_hash, g_direct_equal);

    read_tokens(tokens_filename, option_info_table);
    read_filename_mappings(filenames_filename, filename_table);

    parse_taint_structures(taint_structures_filename,
                            leaf_node_table,
                            merge_node_table,
                            merge_index_table);


    infd = open(debug_filename, O_RDONLY | O_LARGEFILE);
    if (infd < 0) {
        fprintf(stderr, "could not open %s, rc %d, errno %d\n", debug_filename, infd, errno);
        exit(-1);
    }
    rc = fstat(infd, &buf);
    if (rc == -1) {
        fprintf(stderr, "could not stat debug file: %s, errno %d\n", debug_filename, errno);
        exit(-1);
    }

    while(bytes_read < buf.st_size) {
        bytes_read += read_taint_op_extended(infd, &top, 0);

        g_hash_table_insert(taint_operations_table,
                                GINT_TO_POINTER(top.taint_op),
                                GINT_TO_POINTER(1));

        taint_ops++;
        if (taint_ops % 1000000 == 0) {
            fprintf(stdout, "num taint ops %ld\n", taint_ops);
        }
    }
    fprintf(stdout, "debug done\n");

    print_unique_taint_ops(taint_operations_table);   

    return 0;
}