#![allow(clippy::expect_used)]
use panproto_expr_parser::{parse, tokenize};
fn main() {
divan::main();
}
const REAL_EXPRS: &[&str] = &[
"\\record -> record.displayName",
"\\value -> show value",
"\\record -> record.text ++ \" (alt: \" ++ record.alt ++ \")\"",
"\\posts -> filter (\\p -> p.langs `contains` \"en\") posts",
"\\profiles -> map (\\p -> p.displayName) profiles",
];
#[divan::bench(args = [0_usize, 1, 2, 3, 4])]
fn tokenize_real_expr(bencher: divan::Bencher, i: usize) {
let src = REAL_EXPRS[i];
bencher.bench(|| tokenize(src));
}
#[divan::bench(args = [0_usize, 1, 2, 3, 4])]
fn lex_and_parse_real_expr(bencher: divan::Bencher, i: usize) {
let src = REAL_EXPRS[i];
bencher.bench(|| {
let tokens = tokenize(src).expect("lex");
parse(&tokens)
});
}