wain-syntax-binary
==================
[![crates.io][crates-io-badge]][crates-io]
[![CI][ci-badge]][ci]
[`wain-syntax-binary`][gh] is a crate to parse [WebAssembly binary format][wasm-spec-bin] files.
This crate is part of larger [wain][proj] project.
## Installation
```toml
[dependencies]
wain-syntax-binary = "0"
```
## Usage
Using `wain_syntax_binary::parse()` is the easiest way.
```rust
extern crate wain_syntax_binary;
use std::fs;
use wain_syntax_binary::parse;
let source = fs::read("foo.wasm").unwrap();
match parse(&source) {
Ok(tree) => { /* `tree` is `wain_ast::Root` value */ }
Err(err) => eprintln!("Error! {}", err),
}
```
For the syntax tree structure parsed by this library, please see [wain-ast][ast] crate.
Using `Parser` struct, it can parse part of Wasm binary.
```rust
extern crate wain_syntax_binary;
use std::fs;
use wain_syntax_binary::Parser;
use wain_ast::DataSegment;
let source = fs::read("data_segment_only.bin").unwrap();
// Parse only data segment
let data: DataSegment<'_> = Parser.parse().unwrap();
```
Working examples can be seen at [examples/api/ directory][examples]
Please read documentation (not yet) for details.
## License
[the MIT license](./LICENSE.txt)
[ci-badge]: https://github.com/rhysd/wain/workflows/CI/badge.svg?branch=master&event=push
[ci]: https://github.com/rhysd/wain/actions?query=workflow%3ACI+branch%3Amaster+event%3Apush
[crates-io-badge]: https://img.shields.io/crates/v/wain-syntax-binary.svg
[crates-io]: https://crates.io/crates/wain-syntax-binary
[gh]: https://github.com/rhysd/wain/tree/master/wain-syntax-binary
[wasm-spec-bin]: https://webassembly.github.io/spec/core/binary/index.html
[proj]: https://github.com/rhysd/wain
[ast]: https://crates.io/crates/wain-syntax-binary
[examples]: https://github.com/rhysd/wain/tree/master/examples/api