3 stable releases
1.0.2 | Jul 30, 2024 |
---|
#1424 in Web programming
51KB
1.5K
SLoC
fastexpr.rs
A fast, tiny, minimal dependency JavaScript expression parser, written in Rust.
Features
- Fast. Hand-coded lexer and top-down operator precedence parser.
- Small. Around ~1000 LOC.
- Compatible. Parses all valid JavaScript expressions. Produces an
esprima
style AST.
Usage:
let result = parse("(s) => `hello from ${s}!`");
match result {
Ok(expr) => {
println!("{:#?}", expr);
}
Err(err) => {
println!("{:#?}", err);
}
}
which produces:
ArrowFunction {
params: [
Identifier {
token: Identifier(
"s",
),
},
],
body: TemplateLiteral {
quasis: [
TemplateString {
token: String(
"hello from ",
),
tail: false,
},
TemplateString {
token: String(
"!",
),
tail: true,
},
],
expressions: [
Identifier {
token: Identifier(
"s",
),
},
],
},
}
Dependencies
~575KB
~11K SLoC