1 unstable release

0.1.0 Nov 30, 2024

#2204 in Parser implementations

Download history 89/week @ 2024-11-24 69/week @ 2024-12-01 19/week @ 2024-12-08

177 downloads per month
Used in 2 crates

MIT license

155KB
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

You need to create a parser instance with source code. Once created, the source code can't be changed. So if you want to parse different source code, you need to create a new parser instance.

use wat_parser::Parser;
use wat_syntax::SyntaxKind;

let input = "(module)";
let mut parser = Parser::new(input);
let tree = parser.parse();
assert_eq!(tree.kind(), SyntaxKind::ROOT);

Any syntax errors won't prevent the parser from parsing the rest of the input, however you can retrieve the errors like this:

use wat_parser::Parser;
use wat_syntax::SyntaxKind;

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

Dependencies

~1.5MB
~30K SLoC