From ffd050e6034af280618a7e02e4d8ad992b542833 Mon Sep 17 00:00:00 2001 From: Dan Hirsch <thequux@upstandinghackers.com> Date: Sat, 16 Mar 2013 14:30:15 -0700 Subject: [PATCH] Added generic form of desugaring functions --- src/Makefile | 1 + src/internal.h | 2 ++ src/parsers/sequence.c | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Makefile b/src/Makefile index 128de050..84970c92 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 279f9980..2386e4e7 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 b15b168d..eb215a94 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); -- GitLab