News for hackers. Stuff that matters.
Re:Kaitai Struct: A new way to develop parsers for binary st... by dhx on Thursday March 17, 2022 @11:35PM (#30718498)
Thanks for the example. Is there a way to perform a positive and negative look-ahead instead of just reading the remaining data to end of input?
Re:Kaitai Struct: A new way to develop parsers for binary st... by eproxus on Friday March 18, 2022 @08:04AM (#30721106)
You also have Erlang’s pattern matching at your disposal:

    decode(<<16#01, Size:8, Payload:Size/binary-unit:8, Rest/binary>>) ->
        [{field1, Payload}|decode(Rest)];
    decode(<<16#02, Flags:16, Rest/binary>>) when Flags =:= 1 ->
        [{field2, true}|decode(Rest)];
    decode(<<16#02, Flags:16, Rest/binary>>) ->
        [{field2, false}|decode(Rest)].
Anything after the when keyword is a guard condition allowing for some manner of positive/negative “look ahead” (Contrived example, but maybe you get the point).
Re:Kaitai Struct: A new way to develop parsers for binary st... by lsllc on Friday March 18, 2022 @09:11AM (#30721746)
Yes, this is exactly how you do it, with pattern matching & guards!