diff --git a/src/backends/packrat.c b/src/backends/packrat.c index b77197378783f6a7468fd27c041608cb358960e7..abb198b02560e1bdec3d98211310f2e6e47da170 100644 --- a/src/backends/packrat.c +++ b/src/backends/packrat.c @@ -181,7 +181,10 @@ HParseResult* lr_answer(HParserCacheKey *k, HParseState *state, HLeftRec *growab HParseResult* h_do_parse(const HParser* parser, HParseState *state) { HParserCacheKey *key = a_new(HParserCacheKey, 1); key->input_pos = state->input_stream; key->parser = parser; - HParserCacheValue *m = recall(key, state); + HParserCacheValue *m = NULL; + if (parser->vtable->higher) { + m = recall(key, state); + } // check to see if there is already a result for this object... if (!m) { // It doesn't exist, so create a dummy result to cache