WaParserEx

Idiomatic Elixir wrapper over wa_parser, a WebAssembly binary format parser. The parsing core is Erlang (:wa_parser); this package adds an Elixir-friendly API and a proper exception type.

Installation

def deps do
[
{:wa_parser_ex, "~> 0.1"}
]
end

This pulls in the Erlang wa_parser core as a transitive dependency.

Usage

"module.wasm"
|> File.read!()
|> WaParser.stream()
|> Enum.to_list()

WaParser.stream/1 returns a lazy stream of parse events; WaParser.parse/1 returns the single-step continuation form. Malformed input raises WaParser.ParseError, whose reason field is a stable atom for programmatic matching (:bad_magic, :truncated, :unknown_opcode, :non_canonical, …).

Additional helpers wrap the core's utility modules: WaParser.LEB128 (variable-length integer encode/decode) and WaParser.PrefixInstrs (prefixed-instruction sub-opcode tables).

License

Released into the public domain under the Unlicense.