From 7180169af4e1cbc18fed839fd590aa77817a1f04 Mon Sep 17 00:00:00 2001 From: "Sven M. Hallberg" <pesco@khjk.org> Date: Fri, 19 Apr 2013 15:20:09 +0200 Subject: [PATCH] save a parser's desugared form when h_desugar is called on it for the first time --- src/desugar.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/desugar.c b/src/desugar.c index fbd15811..6117c221 100644 --- a/src/desugar.c +++ b/src/desugar.c @@ -2,5 +2,10 @@ #include "internal.h" HCFChoice *h_desugar(HAllocator *mm__, const HParser *parser) { - return parser->vtable->desugar(mm__, parser->env); + if(parser->desugared == NULL) { + // we're going to do something naughty and cast away the const to memoize + ((HParser *)parser)->desugared = parser->vtable->desugar(mm__, parser->env); + } + + return parser->desugared; } -- GitLab