Changed parsers to use vtables instead of just a function pointer

This commit is contained in:
Dan Hirsch 2012-05-26 15:15:38 +02:00
parent c76c97cfcd
commit 6a2f10df0c
2 changed files with 139 additions and 36 deletions

View file

@ -98,8 +98,12 @@ typedef const HParsedToken* (*HAction)(const HParseResult *p);
*/
typedef bool (*HPredicate)(HParseResult *p);
typedef struct HParserVtable_ {
HParseResult* (*parse)(void *env, HParseState *state);
} HParserVtable;
typedef struct HParser_ {
HParseResult* (*fn)(void *env, HParseState *state);
const HParserVtable *vtable;
void *env;
} HParser;