Esempio n. 1
0
void push_parse_state(interp_core_type *interp, FILE *fin) {
    
    scanner_stack_type *scanner=alloc_scanner();

    yylex_init_extra(interp, &(scanner->scanner));
    yyset_in(fin, scanner->scanner);

    scanner->previous=interp->scanner;
    interp->scanner=scanner;
}
Esempio n. 2
0
int 
main()
{
    cont_p cont;
    cont_p caller_cont;
    object_p scanner, output;

    init_symbol_table();
    init_wellknown_objects();
    init_global_env();
    init_cont_list();

    fill_initial_env();

    scanner = alloc_scanner(stdin);
    output = alloc_output_stream(stdout);

    if (setjmp(error_occured) != 0) {
        // reset continuation list
        continuation_list->next = continuation_list->first;
    }

    // initial continuation
    caller_cont = cont_list_obtain(continuation_list);
    caller_cont->args_locals[0] = output;
    caller_cont->next = finish;

    cont = cont_list_obtain(continuation_list);
    cont->caller = caller_cont;
    cont->args_locals[0] = scanner;
    cont->args_locals[1] = output;
    cont->next = repl;

    trampoline(cont);

    return 0;
}
Esempio n. 3
0
void create_parser(interp_core_type *interp) {
    
    interp->scanner=alloc_scanner();
    
    yylex_init_extra(interp, &(peek_scanner));
}