5 unstable releases

0.3.2 Feb 7, 2025
0.3.1 Feb 6, 2025
0.3.0 Feb 5, 2025
0.2.0 Jan 5, 2025
0.1.0 Nov 30, 2024

#1842 in Parser implementations

Download history 121/week @ 2024-11-26 40/week @ 2024-12-03 23/week @ 2024-12-10 1/week @ 2024-12-17 134/week @ 2024-12-31 28/week @ 2025-01-07 8/week @ 2025-01-14 1/week @ 2025-01-21 414/week @ 2025-02-04 17/week @ 2025-02-11

433 downloads per month
Used in 3 crates (2 directly)

MIT license

150KB
5K SLoC

The parser for WebAssembly Text Format.

This parser is error-tolerant, which means it can parse even even if the input contains syntax errors.

This parser will produce concrete syntax tree (CST), but you can build AST from it with a bunch of helpers from wat_syntax::ast module.

Usage

Use the main parse function:

use wat_syntax::SyntaxKind;

let input = "(module)";
let (tree, errors) = wat_parser::parse(input);
assert_eq!(tree.kind(), SyntaxKind::ROOT);

Any syntax errors won't prevent the parser from parsing the rest of the input, so the parse function returns a tuple which contains the CST and syntax errors. You can access syntax errors like this:

use wat_syntax::SyntaxKind;

let input = "(module";
let (tree, errors) = wat_parser::parse(input);
assert_eq!(errors[0].start, 7);
assert!(errors[0].message.to_string().contains("expected `)`"));

Dependencies

~2MB
~41K SLoC