diff options
author | Maximilian Bosch <[email protected]> | 2021-12-26 14:41:47 +0000 |
---|---|---|
committer | Maximilian Bosch <[email protected]> | 2021-12-30 17:06:50 +0000 |
commit | 18a1ce8f0343f7865f8a01741fb96f98945645d0 (patch) | |
tree | cf3631b94197305b61fd0279025d4fb32d51abea /src | |
parent | 7d1db014ebc6bf0a8fd3e5a25abdc81aa2270a1d (diff) |
Allow expressions such as `e2` as multiplication of `e * 2`
Diffstat (limited to 'src')
-rw-r--r-- | src/lex.rs | 6 | ||||
-rw-r--r-- | src/main.rs | 5 |
2 files changed, 11 insertions, 0 deletions
@@ -143,6 +143,12 @@ pub fn lexer(input: &str, prev_ans: Option<f64>) -> Result<Vec<Token>, CalcError | |||
143 | &char_vec[..char_vec.chars().count()-1] | 143 | &char_vec[..char_vec.chars().count()-1] |
144 | ))); | 144 | ))); |
145 | } | 145 | } |
146 | } else if CONSTANTS.get(&char_vec[..]).is_some() { | ||
147 | result.push(CONSTANTS.get(&char_vec[..]).unwrap().clone()); | ||
148 | result.push(OPERATORS.get(&'*').unwrap().clone()); | ||
149 | char_vec.clear(); | ||
150 | num_vec.push(letter); | ||
151 | last_char_is_op = false; | ||
146 | } else { | 152 | } else { |
147 | return Err(CalcError::Syntax(format!( | 153 | return Err(CalcError::Syntax(format!( |
148 | "Unexpected character '{}'", | 154 | "Unexpected character '{}'", |
diff --git a/src/main.rs b/src/main.rs index 75c33bb..f5e5c59 100644 --- a/src/main.rs +++ b/src/main.rs | |||
@@ -259,4 +259,9 @@ mod tests { | |||
259 | let evaled = eval_math_expression("9 + _ ", Some(0f64)).unwrap(); | 259 | let evaled = eval_math_expression("9 + _ ", Some(0f64)).unwrap(); |
260 | assert_eq!(9., evaled); | 260 | assert_eq!(9., evaled); |
261 | } | 261 | } |
262 | #[test] | ||
263 | fn eval_const_multiplication() { | ||
264 | let evaled = eval_math_expression("e2", None).unwrap(); | ||
265 | assert_eq!(5.4365636569, evaled); | ||
266 | } | ||
262 | } | 267 | } |