diff --git a/src/Makefile b/src/Makefile index 128de0506ec7f2b39232b79441890047ac4a95f0..84970c9263a7562e96e8fb480c7fdb7e5dfdc698 100644 --- a/src/Makefile +++ b/src/Makefile @@ -34,6 +34,7 @@ HAMMER_PARTS := \ bitwriter.o \ pprint.o \ allocator.o \ + desugar.o \ datastructures.o \ system_allocator.o \ benchmark.o \ diff --git a/src/internal.h b/src/internal.h index 279f9980d008d2fa3cd80d01aeab20ee16067be9..2386e4e7442095cc0b778c3acd527b70c06c6f6e 100644 --- a/src/internal.h +++ b/src/internal.h @@ -224,6 +224,8 @@ long long h_read_bits(HInputStream* state, int count, char signed_p); HParseResult* h_do_parse(const HParser* parser, HParseState *state); void put_cached(HParseState *ps, const HParser *p, HParseResult *cached); +HCFChoice *h_desugar(HAllocator *mm__, HParser *parser); + HCountedArray *h_carray_new_sized(HArena * arena, size_t size); HCountedArray *h_carray_new(HArena * arena); void h_carray_append(HCountedArray *array, void* item); diff --git a/src/parsers/sequence.c b/src/parsers/sequence.c index b15b168d04aa0dc8ba2aee296913f2340aeb9d6d..eb215a94de2bf4e36465cd4d2a6ac76ccf46cf0c 100644 --- a/src/parsers/sequence.c +++ b/src/parsers/sequence.c @@ -47,7 +47,7 @@ static HCFChoice* desugar_sequence(HAllocator *mm__, void *env) { HCFSequence *seq = h_new(HCFSequence, 1); seq->items = h_new(HCFChoice*, s->len+1); for (size_t i=0; i<s->len; ++i) { - seq->items[i] = s->p_array[i]->vtable->desugar(mm__, s->p_array[i]->env); + seq->items[i] = h_desugar(s->p_array[i]); } seq->items[s->len] = NULL; HCFChoice *ret = h_new(HCFChoice, 1);