1pub mod structs;
4
5pub mod fns;
6
7pub mod cmds;
8
9pub mod errors;
10
11pub mod conv;
12
13use std::collections::HashMap;
14use std::sync::RwLock;
15use lazy_static::lazy_static;
16
17lazy_static! {
18 pub(crate) static ref RE_CACHE: structs::RegexCache = structs::RegexCache(RwLock::new(HashMap::new()));
19}
20
21enum CmdType {
22 Fn1(fns::Mon),
24
25 Fn2(fns::Dya),
27
28 Fn3(fns::Tri),
30
31 Cmd(cmds::Cmd),
33
34 CmdR(cmds::CmdR),
36
37 Special,
39
40 Value,
42
43 Space,
45
46 Wrong,
48
49 Temp
51}
52
53const CMDS: [CmdType; 128] = {
57 use CmdType::*;
58 use fns::*;
59 use cmds::*;
60 [
61 Space, Wrong, Wrong, Wrong, Wrong, Wrong, Wrong, Wrong, Wrong, Space, Space, Wrong, Wrong, Space, Wrong, Wrong,
63
64 Wrong, Wrong, Wrong, Wrong, Wrong, Wrong, Wrong, Wrong, Wrong, Wrong, Wrong, Wrong, Wrong, Wrong, Wrong, Wrong,
66
67 Space, Fn1(inv), Temp, Special, Temp, Fn2(ph2), Temp, Value, Value, Wrong, Fn2(mul), Fn2(add), Cmd(phc), Fn2(sub), Special, Fn2(div),
69
70 Value, Value, Value, Value, Value, Value, Value, Value, Value, Value, Special, Cmd(phc), Fn2(ph2), Fn2(ph2), Fn2(ph2), Special,
72
73 Value, Temp, Temp, Cmd(phc), Cmd(phc), Temp, Value, Temp, Temp, Cmd(phc), Temp, Cmd(phc), CmdR(phr), Temp, Temp, Cmd(phc),
75
76 Special, Special, Cmd(phc), CmdR(phr), Value, Temp, Temp, Temp, Special, Temp, Temp, Value, Special, Wrong, Fn2(pow), Temp,
78
79 Special, Temp, Temp, Cmd(phc), Cmd(phc), Temp, Temp, Temp, Temp, Cmd(phc), Temp, Cmd(phc), CmdR(phr), Temp, Temp, Cmd(phc),
81
82 Special, Special, Cmd(phc), CmdR(phr), Temp, Temp, Temp, Temp, Special, Temp, Temp, Temp, Fn3(ph3), Temp, Fn2(ph2), Wrong
84 ]
85};