1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2026-01-21 12:41:13 +00:00

cargo fmt

This commit is contained in:
Roy Ivy III 2020-01-27 23:14:11 -06:00
parent 15722e3ace
commit 5af8503a5e
119 changed files with 1270 additions and 923 deletions

View file

@ -12,8 +12,8 @@
//! * https://en.wikipedia.org/wiki/Shunting-yard_algorithm
//!
use tokens::Token;
use onig::{Regex, RegexOptions, Syntax};
use tokens::Token;
type TokenStack = Vec<(usize, Token)>;
pub type OperandsList = Vec<Box<ASTNode>>;
@ -85,25 +85,27 @@ impl ASTNode {
ASTNode::Node { ref op_type, .. } => match self.operand_values() {
Err(reason) => Err(reason),
Ok(operand_values) => match op_type.as_ref() {
"+" => infix_operator_two_ints(|a: i64, b: i64| {
checked_binop(|| a.checked_add(b), "+")
}, &operand_values
"+" => infix_operator_two_ints(
|a: i64, b: i64| checked_binop(|| a.checked_add(b), "+"),
&operand_values,
),
"-" => infix_operator_two_ints(|a: i64, b: i64| {
checked_binop(|| a.checked_sub(b), "-")
}, &operand_values
"-" => infix_operator_two_ints(
|a: i64, b: i64| checked_binop(|| a.checked_sub(b), "-"),
&operand_values,
),
"*" => infix_operator_two_ints(|a: i64, b: i64| {
checked_binop(|| a.checked_mul(b), "*")
}, &operand_values
"*" => infix_operator_two_ints(
|a: i64, b: i64| checked_binop(|| a.checked_mul(b), "*"),
&operand_values,
),
"/" => infix_operator_two_ints(|a: i64, b: i64| {
"/" => infix_operator_two_ints(
|a: i64, b: i64| {
if b == 0 {
Err("division by zero".to_owned())
} else {
checked_binop(|| a.checked_div(b), "/")
}
}, &operand_values
},
&operand_values,
),
"%" => infix_operator_two_ints(
|a: i64, b: i64| {
@ -299,18 +301,29 @@ fn push_token_to_either_stack(
op_stack: &mut TokenStack,
) -> Result<(), String> {
let result = match *token {
Token::Value { .. } => { out_stack.push((token_idx, token.clone())); Ok(()) },
Token::Value { .. } => {
out_stack.push((token_idx, token.clone()));
Ok(())
}
Token::InfixOp { .. } => if op_stack.is_empty() {
Token::InfixOp { .. } => {
if op_stack.is_empty() {
op_stack.push((token_idx, token.clone()));
Ok(())
} else {
push_op_to_stack(token_idx, token, out_stack, op_stack)
}
}
Token::PrefixOp { .. } => {
op_stack.push((token_idx, token.clone()));
Ok(())
} else {
push_op_to_stack(token_idx, token, out_stack, op_stack)
},
}
Token::PrefixOp { .. } => { op_stack.push((token_idx, token.clone())); Ok(()) },
Token::ParOpen => { op_stack.push((token_idx, token.clone())); Ok(()) },
Token::ParOpen => {
op_stack.push((token_idx, token.clone()));
Ok(())
}
Token::ParClose => move_till_match_paren(out_stack, op_stack),
};
@ -352,7 +365,10 @@ fn push_op_to_stack(
{
loop {
match op_stack.last() {
None => { op_stack.push((token_idx, token.clone())); return Ok(()) },
None => {
op_stack.push((token_idx, token.clone()));
return Ok(());
}
Some(&(_, Token::ParOpen)) => {
op_stack.push((token_idx, token.clone()));
@ -365,12 +381,14 @@ fn push_op_to_stack(
precedence: prev_prec,
..
},
)) => if la && prev_prec >= prec || !la && prev_prec > prec {
out_stack.push(op_stack.pop().unwrap())
} else {
op_stack.push((token_idx, token.clone()));
return Ok(());
},
)) => {
if la && prev_prec >= prec || !la && prev_prec > prec {
out_stack.push(op_stack.pop().unwrap())
} else {
op_stack.push((token_idx, token.clone()));
return Ok(());
}
}
Some(&(_, Token::PrefixOp { .. })) => {
op_stack.push((token_idx, token.clone()));