예제 #1
0
void output(void)
{
    const_array = jflag ? "private final static " : "";
    free_itemsets();
    free_shifts();
    free_reductions();
    output_prefix();
    output_stored_text();
    output_defines();
    output_rule_data();
    output_yydefred();
    output_actions();
    free_parser();
    output_debug();
    if (!jflag) {
	output_stype();
	if (rflag) write_section(tables);
	write_section(header);
	output_trailing_text();
    }
    write_section(jflag ? jbody : body);
    output_semantic_actions();
    write_section(jflag ? jtrailer : trailer);
    if (jflag)
	output_trailing_text();
}
예제 #2
0
/* --------------------------------
 * Execute query cache look up
 * --------------------------------
 */
POOL_STATUS pool_execute_query_cache_lookup(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *backend, Node *node)
{
	SelectStmt *select = (SelectStmt *)node;
	POOL_STATUS status = POOL_END;	/* cache not found */

	if (! (select->intoClause || select->lockingClause))
	{
		parsed_query = strdup(nodeToString(node));
		if (parsed_query == NULL)
		{
			pool_error("pool_execute_query_cache_lookup: malloc failed");
			return POOL_ERROR;
		}

		status = pool_query_cache_lookup(frontend, parsed_query, backend->info->database, TSTATE(backend, MASTER_NODE_ID));
		if (status == POOL_CONTINUE)
		{
			free(parsed_query);
			parsed_query = NULL;
			free_parser();
		}
	}

	return status;
}
예제 #3
0
void output()
#endif
{
    free_itemsets();
    free_shifts();
    free_reductions();
    output_stored_text();
    output_defines();
    output_rule_data();
    output_yydefred();
    output_actions();
    free_parser();
    output_debug();
    output_stype();
    if (rflag) write_section(tables);
    write_section(header);
    if (language == C)
	output_trailing_text();
    write_section(body);
    output_semantic_actions();
    write_section(trailer);
    if ((language == PERL) || (language == PYTHON))
	output_trailing_text();
    free_derives();
    free_nullable();
}
예제 #4
0
파일: output.c 프로젝트: ombt/ombt
void output(void)
{
    free_itemsets();
    free_shifts();
    free_reductions();
    output_stored_text();
    if (jflag)    /*rwj*/
      {
      write_section(jheader);
      output_stype();
      }
    output_defines();
    output_rule_data();
    output_yydefred();
    output_actions();
    free_parser();
    output_debug();
    if (!jflag)    /*rwj*/
      output_stype();
    if (rflag) write_section(tables);
    if (!jflag)    /*rwj*/
      write_section(header);
    output_trailing_text();
    if (jflag)   /*rwj*/
      write_section(jbody);
    else
      write_section(body);
    output_semantic_actions();
    if (jflag)   /*rwj*/
      write_section(jtrailer);
    else
      write_section(trailer);
}
예제 #5
0
int main(int argc, const char * argv[])
{
   int err;
   parser_t parser;

   if (argc != 2) {
      fprintf(stderr, "Usage: %s <filename>\n", argv[0]);
      return EXIT_FAILURE;
   }

   if (init_parser(&parser, argv[1])) {
      return EXIT_FAILURE;
   }

   err = parse_expression(&parser);

   // TODO: if (!err) print_expr(parser.state->current->root);

   free_parser(&parser);

   // TODO: malloc_stats(); /* TODO: remove ! */

#ifdef PERFTEST_USE_MALLOC
   printf("nrmalloc called = %d\n", s_nrmalloc);
#endif
   return err ? EXIT_FAILURE : EXIT_SUCCESS;
}
예제 #6
0
파일: my_error.c 프로젝트: Ankirama/Epitech
/*
** brief: it will try if quote = 0, else we will free it
** @str: our message
** @quote: count our "
** @lst: our parser list
** return: return NULL if problem, else our lst
*/
t_parser	*my_parserror(char *str, char quote, t_parser *lst)
{
  if (quote)
    {
      (void)write(2, str, my_strlen(str));
      free_parser(lst);
      return (NULL);
    }
  return (lst);
}
예제 #7
0
파일: output.c 프로젝트: akshaisarma/MIPL
void output(void)
{
    free_itemsets();
    free_shifts();
    free_reductions();
    output_stored_text();
    if (jflag)    /*rwj*/
      {
      write_section(jheader);
      output_stype();
      }
    output_defines();
    output_rule_data();
    output_yydefred();
    output_actions();
    free_parser();
    output_debug();
    if (!jflag)    /*rwj*/
      output_stype();
    if (rflag) write_section(tables);
    if (!jflag)    /*rwj*/
      write_section(header);
    output_trailing_text();
    if (jflag)  { /*rwj*/
		/* yio 20020304: nodebug and throws options */
		if (jdebug == TRUE) {
			write_section(jbody_a);
			if (strlen(jyyparse_throws)>0)
				fprintf(code_file,"throws %s\n",jyyparse_throws);
			write_section(jbody_b);
		}
		else {
			write_section(jbody_nodebug_a);
			if (strlen(jyyparse_throws)>0)
				fprintf(code_file,"throws %s\n",jyyparse_throws);
			write_section(jbody_nodebug_b);
		}
	}
    else
		write_section(body);

    output_semantic_actions();
    if (jflag) {  /*rwj*/
		/* yio 20020304: nodebug option */
		if (jdebug == TRUE)
			write_section(jtrailer);
		else
			write_section(jtrailer_nodebug);
	}
    else
		write_section(trailer);
}
예제 #8
0
파일: output.c 프로젝트: sunfirefox/btyacc
void output()
{
    free_itemsets();
    free_shifts();
    free_reductions();
    output_stored_text();
    output_defines();
    output_rule_data();
    output_yydefred();
    output_actions();
    free_parser();
    output_debug();
    output_stype();
    if (rflag) write_section("tables");
    write_section("header");
    output_trailing_text();
    write_section("body");
    output_semantic_actions();
    write_section("trailer");
}
예제 #9
0
파일: main.c 프로젝트: lofaldli/my-own-lisp
int main(int argc, char** argv) {

    init_parser();

    /* initialize environment */
    lenv* e = lenv_new();
    lenv_add_builtins(e);

    /* load standard library functions */
    lval* x = builtin_load(e, lval_add(lval_sexpr(), lval_str("prelude.lsp")));
    if (x->type == LVAL_ERR) { lval_println(x); }
    lval_del(x);

    if (argc >= 2) {

        /* read from command line */
        parse_args(e, argc, argv);

    } else {

        /* interactive prompt */
        say_hello();
        while (1) {
            char* input = prompt();
            lval* x = parse(input);
            if (x != NULL) {
                x = lval_eval(e, x);
                lval_println(x);
                lval_del(x);
            }
            free(input);
        }

    }

    /* cleanup */
    lenv_del(e);
    free_parser();

    return 0;
}
예제 #10
0
output()
{
    free_itemsets();
    free_shifts();
    free_reductions();
    output_prefix();
    output_stored_text();
    output_defines();
    output_rule_data();
    output_yydefred();
    output_actions();
    free_parser();
    output_debug();
    output_stype();
    if (rflag) write_section(tables);
    write_section(header);
    output_trailing_text();
    write_section(body);
    output_semantic_actions();
    write_section(trailer);
}
예제 #11
0
int main(int argc, char **argv){
        char *filename = argv[1];
        FILE *maf_file;
        if((maf_file= fopen(filename, "rb")) == NULL){
                fprintf(stderr, "Unable to open file: %s\nError: %s",
                                filename,strerror(errno));
                return 1;
        }
        maf_array_parser parser = get_array_parser(maf_file,filename);
        int j=0;
        for(; j < parser->size; ++j) printf("%d\n",parser->alignment_blocks[j]);
        j=0;
        char buffer[3000];
        while(1){
           int offset = get_next_offset(parser);
           if(offset==-1)break;
           int check =fseek(maf_file, offset,SEEK_SET);
           if(check!=0)fprintf(stderr, "File seek error: %s\nError: %s",
                         filename,strerror(errno));
           char *fc = fgets(buffer,3000,maf_file);
           printf("Alignment block %d\n%s\n",++j,buffer);
        }
        parser->curr_block=1;
        int offset=get_next_offset(parser);
           int check =fseek(maf_file, offset,SEEK_SET);
           if(check!=0)fprintf(stderr, "File seek error: %s\nError: %s",
                         filename,strerror(errno));
          char *fc = fgets(buffer,3000,maf_file);
          fc = fgets(buffer,3000,maf_file);
        printf("%s\n",buffer);
        alignment_block aln = get_next_alignment(parser);
//        seq test=aln->sequences[0];
//        printf("Alignment 1 sequence 1: \n%s  %lu  %u  %c  %lu  %s\n"
//            ,test->src,test->start,test->size,test->strand,
//                test->srcSize,test->sequence);
        free_alignment_block(aln);
        free_parser(parser);
        fclose(maf_file);
        return 0;
}
예제 #12
0
void
output(void)
{
    FILE *fp;

    free_itemsets();
    free_shifts();
    free_reductions();

    if (iflag)
    {
	++outline;
	fprintf(code_file, "#include \"%s\"\n", externs_file_name);
	fp = externs_file;
    }
    else
	fp = code_file;

    output_prefix(iflag ? externs_file : output_file);
    output_pure_parser(fp);
    output_stored_text(fp);
    output_stype(fp);
    output_parse_decl(fp);
    output_lex_decl(fp);
    output_error_decl(fp);
    write_section(fp, xdecls);

    if (iflag)
    {
	output_externs(externs_file, global_vars);
	if (!pure_parser)
	    output_externs(externs_file, impure_vars);
    }

    if (iflag)
    {
	++outline;
	fprintf(code_file, "#include \"%s\"\n", defines_file_name);
	if (!dflag)
	    output_defines(externs_file);
    }
    else
    {
	putc_code(code_file, '\n');
	output_defines(code_file);
    }

    if (dflag)
	output_defines(defines_file);

    output_rule_data();
    output_yydefred();
    output_actions();
    free_parser();
    output_debug();
    if (rflag)
    {
	output_prefix(code_file);
	write_section(code_file, xdecls);
	write_section(code_file, tables);
    }
    write_section(code_file, global_vars);
    if (!pure_parser)
    {
	write_section(code_file, impure_vars);
    }
    write_section(code_file, hdr_defs);
    if (!pure_parser)
    {
	write_section(code_file, hdr_vars);
    }
    output_trailing_text();
    write_section(code_file, body_1);
    if (pure_parser)
    {
	write_section(code_file, body_vars);
    }
    write_section(code_file, body_2);
    output_yyerror_call("syntax error");
    write_section(code_file, body_3);
    output_semantic_actions();
    write_section(code_file, trailer);
    output_yyerror_call("yacc stack overflow");
    write_section(code_file, trailer_2);
}