evar 0.1.0

Modern ergonomic math calculator inspired by eva
Documentation
pub mod args;
mod default_context;
mod error_report;
pub mod models;
mod parser;
pub mod readline;

use chumsky::{
    input::{Input, Stream},
    prelude::*,
};
pub use default_context::create_context;
pub use error_report::ErrorReporter;
use models::{Stmt, Token};
use parser::parser;

pub fn lex_and_parse(input: &str) -> Result<Stmt, Vec<Rich<'_, Token<'_>>>> {
    let token_iter = models::token::lex(input).filter(|token| !matches!(token, (Token::Space, _)));

    let token_stream = Stream::from_iter(token_iter)
        .map((input.len()..input.len()).into(), |(token, span)| {
            (token, span.into())
        });

    parser().parse(token_stream).into_result()
}