use {
ariadne::{Color, Label, Report, ReportKind},
ast::{AssignmentTarget, BinaryOp, Expression, Program, Statement, UnaryOp},
builtins::BUILTINS,
chumsky::prelude::*,
context::Context,
decimal::Decimal,
frame::Frame,
rug::{
Complete, Float, Integer, Rational,
float::{Constant, Round},
ops::Pow,
},
std::{
borrow::Cow,
cell::RefCell,
cmp::Ordering,
collections::HashMap,
fmt::{self, Display, Formatter},
num::NonZeroUsize,
ops::Range,
process,
rc::Rc,
str::FromStr,
},
symbol::Symbol,
};
pub use crate::{
builtin::Builtin,
builtin_arity::BuiltinArity,
builtin_function::BuiltinFunction,
builtin_function_payload::BuiltinFunctionPayload,
completion::Completion,
config::Config,
environment::Environment,
error::Error,
evaluator::Evaluator,
function::Function,
number::{Number, ParseDecimalError},
parser::parse,
rounding_mode::RoundingMode,
value::Value,
};
pub type Span = SimpleSpan<usize>;
pub type Spanned<T> = (T, Span);
type Result<T = (), E = anyhow::Error> = std::result::Result<T, E>;
pub mod ast;
mod builtin;
mod builtin_arity;
mod builtin_function;
mod builtin_function_payload;
mod builtins;
mod completion;
mod config;
mod context;
mod decimal;
mod environment;
mod error;
mod evaluator;
mod frame;
mod function;
mod number;
mod parser;
mod rounding_mode;
mod symbol;
mod value;