From 810c06c6db23a4334a434b2b8cfce10d2d8d8e71 Mon Sep 17 00:00:00 2001 From: "Meredith L. Patterson" <mlp@thesmartpolitenerd.com> Date: Wed, 20 Feb 2013 21:03:34 -0500 Subject: [PATCH] Desugaring functions are all done! But we're not ready for the CF backends yet because desugared structures still need to be stashed in the parser. --- src/hammer.h | 3 +++ src/parsers/indirect.c | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/hammer.h b/src/hammer.h index e337b493..13724cac 100644 --- a/src/hammer.h +++ b/src/hammer.h @@ -112,10 +112,13 @@ typedef bool (*HPredicate)(HParseResult *p); typedef struct HParserVtable_ HParserVtable; +typedef struct HCFChoice_ HCFChoice; // forward declaration + typedef struct HParser_ { const HParserVtable *vtable; void *env; void *data; /* e.g., parse tables */ + HCFChoice *desugared; /* if the parser can be desugared, its desugared form */ } HParser; // {{{ Stuff for benchmarking diff --git a/src/parsers/indirect.c b/src/parsers/indirect.c index ed556270..c6935489 100644 --- a/src/parsers/indirect.c +++ b/src/parsers/indirect.c @@ -10,8 +10,10 @@ static bool indirect_isValidCF(void *env) { return inner->vtable->isValidCF(inner->env); } -static HCFChoice desugar_indirect(HAllocator *mm__, void *env) { - +static HCFChoice* desugar_indirect(HAllocator *mm__, void *env) { + HParser *p = (HParser*)env; + HParser *inner = (HParser*)p->env; + return inner->desugared; } static const HParserVtable indirect_vt = { -- GitLab