diff --git a/src/Makefile b/src/Makefile index 9c69124..cc08eee 100644 --- a/src/Makefile +++ b/src/Makefile @@ -21,7 +21,8 @@ PARSERS := \ epsilon \ and \ not \ - attr_bool + attr_bool \ + indirect OUTPUTS := bitreader.o \ hammer.o \ diff --git a/src/hammer.h b/src/hammer.h index 3d21c7b..d0eac9d 100644 --- a/src/hammer.h +++ b/src/hammer.h @@ -442,7 +442,7 @@ HParser *h_indirect(); * Set the inner parser of an indirect. See comments on indirect for * details. */ -void h_bind_indirect(HParser* indirect, HParser* inner); +void h_bind_indirect(HParser* indirect, const HParser* inner); // Some debugging aids /** diff --git a/src/parsers/indirect.c b/src/parsers/indirect.c index 43657c3..758116d 100644 --- a/src/parsers/indirect.c +++ b/src/parsers/indirect.c @@ -7,9 +7,9 @@ static const HParserVtable indirect_vt = { .parse = parse_indirect, }; -void h_bind_indirect(HParser* indirect, HParser* inner) { +void h_bind_indirect(HParser* indirect, const HParser* inner) { assert_message(indirect->vtable == &indirect_vt, "You can only bind an indirect parser"); - indirect->env = inner; + indirect->env = (void*)inner; } HParser* h_indirect() {