Esempio n. 1
0
void parser_print_error(parser_info *pinfo, const char *where)
{
    fprintf(stderr, "Parser: error #%d in %s; ", pinfo->error, where);

    if (pinfo->cur_lex != NULL)
        print_lex(stderr, pinfo->cur_lex);
    else
        fprintf(stderr, "\n");
}
Esempio n. 2
0
File: main.c Progetto: ws23/103CDIHW
int main(int argc, char *argv[]){
	int t; 
	
	yyin = fopen(argv[1], "r"); 	
	t = yylex(); 
	while(t){
		print_lex(t); 	
		t = yylex(); 
	}
	fclose(yyin); 
	return 0; 
}
Esempio n. 3
0
void parser_print_action(parser_info *pinfo, const char *where, int leaving)
{
    if (leaving)
        fprintf(stderr, "Parser: leaving from %s; ", where);
    else
        fprintf(stderr, "Parser: entering to %s; ", where);

    if (pinfo->cur_lex != NULL)
        print_lex(stderr, pinfo->cur_lex);
    else
        fprintf(stderr, "\n");
}
Esempio n. 4
0
int main()
{
    lexer_info linfo;
    init_lexer(&linfo);

    do {
        lexeme *lex = get_lex(&linfo);
        print_lex(stdout, lex);
        if (lex->type == LEX_EOFILE)
            return 0;
        destroy_lex(lex);

        if (linfo.state == ST_ERROR) {
            fprintf(stderr, "(>_<)\n");
            continue;
        }
    } while (1);
}
Esempio n. 5
0
void parser_get_lex(parser_info *pinfo)
{
    if (pinfo->cur_lex != NULL) {
        if (pinfo->save_str)
            free(pinfo->cur_lex);
        else
            destroy_lex(pinfo->cur_lex);
    }

    pinfo->save_str = 0;
    pinfo->cur_lex = get_lex(pinfo->linfo);

#ifdef PARSER_DEBUG
    fprintf(stderr, "Get lex: ");
    print_lex(stderr, pinfo->cur_lex);
#endif

    if (pinfo->cur_lex->type == LEX_ERROR) /* Error 1 */
        pinfo->error = 1;
    else
        pinfo->error = 0; /* Error 0: all right */
}