Minor cleanup

This commit is contained in:
2023-03-29 10:39:15 -07:00
parent 52d848cc09
commit 3d5dcf0694
5 changed files with 24 additions and 17 deletions

View File

@ -61,8 +61,8 @@ fn lookback(
o.is_some() &&
(
o.unwrap().is_binary() ||
!o.unwrap().is_left_associative()
o.as_ref().unwrap().is_binary() ||
!o.as_ref().unwrap().is_left_associative()
)
} {
g.push_back(a);

View File

@ -80,9 +80,9 @@ impl PreToken {
PreToken::PreWord(l, s) => {
return Ok(match &s[..] {
// Mathematical constants
"π"|"pi" => { Token::Constant(3.141592653, String::from("pi")) },
"π"|"pi" => { Token::Constant(3.141592653, String::from("π")) },
"e" => { Token::Constant(2.71828, String::from("e")) },
"phi"|"φ" => { Token::Constant(1.61803, String::from("phi")) },
"phi"|"φ" => { Token::Constant(1.61803, String::from("φ")) },
_ => { return Err((l, ParserError::Undefined(s))); }
});
}
@ -148,9 +148,9 @@ pub fn parse(
let tokens = tokenize(s);
let (_, tokens) = find_subs(tokens);
let g = groupify(tokens)?;
let t = treeify(g)?;
let g = treeify(g)?;
return Ok(t);
return Ok(g);
}

View File

@ -1,4 +1,3 @@
use std::collections::VecDeque;
use crate::parser::PreToken;
@ -97,7 +96,7 @@ fn treeify_binary(
let PreToken::PreOperator(l, s) = this else {panic!()};
let o = Operator::from_string(s);
if o.is_none() { return Err((*l, ParserError::Syntax)); }
o.unwrap() as isize
o.unwrap().as_int()
};
// Precedence of the operators contesting our arguments
@ -105,14 +104,14 @@ fn treeify_binary(
let PreToken::PreOperator(l, s) = &g_inner[i-2] else {panic!()};
let o = Operator::from_string(s);
if o.is_none() { return Err((*l, ParserError::Syntax)); }
Some(o.unwrap() as isize)
Some(o.unwrap().as_int())
} else { None };
let right_val = if i < g_inner.len()-2 {
let PreToken::PreOperator(l, s) = &g_inner[i+2] else {panic!()};
let o = Operator::from_string(s);
if o.is_none() { return Err((*l, ParserError::Syntax)); }
Some(o.unwrap() as isize)
Some(o.unwrap().as_int())
} else { None };
if {
@ -213,7 +212,7 @@ fn treeify_unary(
let PreToken::PreOperator(l, s) = this else {panic!()};
let o = Operator::from_string(s);
if o.is_none() { return Err((*l, ParserError::Syntax)); }
o.unwrap() as isize
o.unwrap().as_int()
};
// Precedence of the operator contesting its argument
@ -222,14 +221,14 @@ fn treeify_unary(
let PreToken::PreOperator(l, s) = &g_inner[i-2] else {panic!()};
let o = Operator::from_string(s);
if o.is_none() { return Err((*l, ParserError::Syntax)); }
Some(o.unwrap() as isize)
Some(o.unwrap().as_int())
} else { None }
} else {
if i < g_inner.len()-2 {
let PreToken::PreOperator(l, s) = &g_inner[i+2] else {panic!()};
let o = Operator::from_string(s);
if o.is_none() { return Err((*l, ParserError::Syntax)); }
Some(o.unwrap() as isize)
Some(o.unwrap().as_int())
} else { None }
};