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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
use super::*;
pub enum ValkyrieOperator {
Add,
Subtract,
Multiply,
Divide,
Return,
}
impl FromStr for ValkyrieOperator {
type Err = String;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"+" => Ok(ValkyrieOperator::Add),
"-" => Ok(ValkyrieOperator::Subtract),
"*" => Ok(ValkyrieOperator::Multiply),
"/" => Ok(ValkyrieOperator::Divide),
"->" => Ok(ValkyrieOperator::Return),
_ => Err(s.to_string()),
}
}
}
impl ValkyrieOperator {
pub fn literal(&self) -> &str {
match self {
ValkyrieOperator::Add => "+",
ValkyrieOperator::Subtract => "-",
ValkyrieOperator::Multiply => "×",
ValkyrieOperator::Divide => "÷",
ValkyrieOperator::Return => "→",
}
}
pub fn name(&self) -> &str {
match self {
ValkyrieOperator::Add => "plus",
ValkyrieOperator::Subtract => "minus",
ValkyrieOperator::Multiply => "multiply",
ValkyrieOperator::Divide => "divide",
ValkyrieOperator::Return => "return",
}
}
}