diff --git a/src/Makefile b/src/Makefile index 84970c9..070e7a8 100644 --- a/src/Makefile +++ b/src/Makefile @@ -26,7 +26,8 @@ PARSERS := \ indirect BACKENDS := \ - packrat + packrat \ + ll HAMMER_PARTS := \ bitreader.o \ diff --git a/src/backends/ll.c b/src/backends/ll.c new file mode 100644 index 0000000..cc5369c --- /dev/null +++ b/src/backends/ll.c @@ -0,0 +1,17 @@ +#include +#include "../internal.h" +#include "../parsers/parser_internal.h" + + +int h_ll_compile(HAllocator* mm__, const HParser* parser, const void* params) { + return -1; // TODO +} + +HParseResult *h_ll_parse(HAllocator* mm__, const HParser* parser, HParseState* parse_state) { + return NULL; // TODO +} + +HParserBackendVTable h__ll_backend_vtable = { + .compile = h_ll_compile, + .parse = h_ll_parse +}; diff --git a/src/compile.c b/src/compile.c index e151cfb..8f2286a 100644 --- a/src/compile.c +++ b/src/compile.c @@ -4,6 +4,7 @@ static HParserBackendVTable *backends[PB_MAX] = { &h__packrat_backend_vtable, + &h__ll_backend_vtable, }; int h_compile(const HParser* parser, HParserBackend backend, const void* params) { diff --git a/src/hammer.h b/src/hammer.h index ca973ac..e75a41f 100644 --- a/src/hammer.h +++ b/src/hammer.h @@ -34,6 +34,7 @@ typedef struct HParseState_ HParseState; typedef enum HParserBackend_ { PB_MIN = 0, PB_PACKRAT = PB_MIN, // PB_MIN is always the default. + PB_LL, PB_MAX } HParserBackend; diff --git a/src/internal.h b/src/internal.h index 6245efa..29ba52a 100644 --- a/src/internal.h +++ b/src/internal.h @@ -215,6 +215,7 @@ struct HBitWriter_ { // Backends {{{ extern HParserBackendVTable h__packrat_backend_vtable; +extern HParserBackendVTable h__ll_backend_vtable; // }}} // TODO(thequux): Set symbol visibility for these functions so that they aren't exported.