save a parser's desugared form when h_desugar is called on it for the first time
This commit is contained in:
parent
1325ebcdd1
commit
7180169af4
1 changed files with 6 additions and 1 deletions
|
|
@ -2,5 +2,10 @@
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
|
|
||||||
HCFChoice *h_desugar(HAllocator *mm__, const HParser *parser) {
|
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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue