#expression-parser #javascript #expression #lexer #parser #js

fastexpr-rs

一个小巧、快速的 JavaScript 表达式解析器

3 个稳定版本

1.0.2 2024年7月30日

1433网页编程

Download history 287/week @ 2024-07-27 15/week @ 2024-08-03

302 每月下载量

MIT 许可证

51KB
1.5K SLoC

fastexpr.rs

一个快速、小巧、依赖性最小的 JavaScript 表达式解析器,用 Rust 编写。

功能

  • 快速。手工编码的词法分析和自顶向下的运算符优先级解析器。
  • 小巧。大约 ~1000 LOC。
  • 兼容。解析所有有效的 JavaScript 表达式。产生一个 esprima 样式的 AST。

使用方法

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",
                ),
            },
        ],
    },
}

依赖

~575KB
~11K SLoC