parse-js 0.3.3

JavaScript parsing library
Documentation
use crate::{
    lex::Lexer,
    parse::{expr::parse_expr, parser::Parser, pattern::ParsePatternSyntax},
    serialize::serialize_ast,
    token::TokenType,
    util::test::evaluate_test_input_files,
};
use serde_json::Value;

fn parse_expr_and_serialize(input: Vec<u8>) -> Value {
    let mut parser = Parser::new(Lexer::new(input));
    let scope = parser.create_global_scope();
    let syntax = ParsePatternSyntax {
        await_allowed: true,
        yield_allowed: true,
    };
    let node_id = parse_expr(scope, &mut parser, TokenType::Semicolon, &syntax).unwrap();
    let (node_map, _) = parser.take();
    serialize_ast(&node_map, node_id)
}

#[test]
fn test_parse_expression() {
    evaluate_test_input_files("parse/tests/expr", |input| parse_expr_and_serialize(input));
}