diff --git a/src/Makefile b/src/Makefile index 9c69124241ca1148c6152c6d49344c5029cfc0b5..cc08eee88add9b8b613b40db3940c87220ab12e6 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 62b5676610415b0a03a9546cea7b829b3477d658..37ab99561ded591e143147b5324156b52626d2c1 100644 --- a/src/hammer.h +++ b/src/hammer.h @@ -435,7 +435,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 43657c3bbdfe2c04dced5b3eae1bda2fef3ab26e..758116de640ef9a179b934051d7b6421ce4e33cf 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() {