1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#![feature(box_syntax)]
pub(crate) mod trees;
pub(crate) mod utils;
pub use utils::basic;
#[derive(Copy, Clone, Debug)]
pub enum Maybe32 {
Nothing,
Integer(i32),
Decimal(f32),
}
#[derive(Clone, Debug)]
pub enum AST<T> {
Number(T),
Plus(Box<AST<T>>, Box<AST<T>>),
Minus(Box<AST<T>>, Box<AST<T>>),
Times(Box<AST<T>>, Box<AST<T>>),
Divide(Box<AST<T>>, Box<AST<T>>),
Power(Box<AST<T>>, Box<AST<T>>),
Surd(Box<AST<T>>, Box<AST<T>>),
}