diff --git a/src/backends/llk.c b/src/backends/llk.c index a799cbe5b6109a0b435a0ba09241413f8607271f..aeafd6a0cd5ba7a44734c69d5bf87a09cb17d617 100644 --- a/src/backends/llk.c +++ b/src/backends/llk.c @@ -108,7 +108,7 @@ static void stringmap_merge(HHashSet *workset, HCFStringMap *dst, HCFStringMap * if(src->epsilon_branch) { if(dst->epsilon_branch) dst->epsilon_branch = - combine_entries(workset, dst->epsilon_branch, src->epsilon_branch); + combine_entries(workset, dst->epsilon_branch, src->epsilon_branch); else dst->epsilon_branch = src->epsilon_branch; } else { @@ -122,7 +122,7 @@ static void stringmap_merge(HHashSet *workset, HCFStringMap *dst, HCFStringMap * if(src->end_branch) { if(dst->end_branch) dst->end_branch = - combine_entries(workset, dst->end_branch, src->end_branch); + combine_entries(workset, dst->end_branch, src->end_branch); else dst->end_branch = src->end_branch; } @@ -412,10 +412,10 @@ HParseResult *h_llk_parse(HAllocator* mm__, const HParser* parser, HInputStream* h_delete_arena(tarena); return make_result(arena, seq->elements[0]); - no_parse: - h_delete_arena(tarena); - h_delete_arena(arena); - return NULL; + no_parse: + h_delete_arena(tarena); + h_delete_arena(arena); + return NULL; } @@ -458,9 +458,9 @@ int test_llk(void) printf("derive epsilon: "); h_pprint_symbolset(stdout, g, g->geneps, 0); printf("first(A) = "); - h_pprint_stringset(stdout, g, h_first(2, g, g->start), 0); - printf("follow(C) = "); - h_pprint_stringset(stdout, g, h_follow(2, g, h_desugar(&system_allocator, NULL, c)), 0); + h_pprint_stringset(stdout, h_first(3, g, g->start), 0); + // printf("follow(C) = "); + // h_pprint_stringset(stdout, h_follow(3, g, h_desugar(&system_allocator, NULL, c)), 0); if(h_compile(p, PB_LLk, (void *)3)) { fprintf(stderr, "does not compile\n"); diff --git a/src/parsers/unimplemented.c b/src/parsers/unimplemented.c index 18255ac2434c50b845b1116b702cbfaa83fc6601..e3f3039407eacaa1d24689767a4a1038fce66a93 100644 --- a/src/parsers/unimplemented.c +++ b/src/parsers/unimplemented.c @@ -12,16 +12,11 @@ static HParseResult* parse_unimplemented(void* env, HParseState *state) { return &result; } -static HCFChoice* desugar_unimplemented(HAllocator *mm__, HCFStack *stk__, void *env) { - assert_message(0, "'h_unimplemented' is not context-free, can't be desugared"); - return NULL; -} - static const HParserVtable unimplemented_vt = { .parse = parse_unimplemented, .isValidRegular = h_false, .isValidCF = h_false, - .desugar = desugar_unimplemented, + .desugar = NULL, .compile_to_rvm = h_not_regular, };