added operators

archive
pca006132 2020-12-29 14:28:18 +08:00
parent 7b1ea58bc0
commit 1cc4c3f8d4
2 changed files with 42 additions and 0 deletions

View File

@ -6,6 +6,7 @@ pub mod inference;
pub mod primitives;
pub mod typedef;
pub mod expression;
mod operators;
use std::error::Error;
use std::fmt;

41
nac3core/src/operators.rs Normal file
View File

@ -0,0 +1,41 @@
use rustpython_parser::ast::{Comparison, Operator, UnaryOperator};
pub fn binop_name(op: Operator) -> &'static str {
match op {
Operator::Add => "add",
Operator::Sub => "sub",
Operator::Div => "truediv",
Operator::Mod => "mod",
Operator::Mult => "mul",
Operator::Pow => "pow",
Operator::BitOr => "or",
Operator::BitXor => "xor",
Operator::BitAnd => "and",
Operator::LShift => "lshift",
Operator::RShift => "rshift",
Operator::FloorDiv => "floordiv",
Operator::MatMult => "matmul",
}
}
pub fn unaryop_name(op: UnaryOperator) -> &'static str {
match op {
UnaryOperator::Pos => "pos",
UnaryOperator::Neg => "neg",
UnaryOperator::Not => "not",
UnaryOperator::Inv => "inv",
}
}
pub fn comparison_name(op: Comparison) -> Option<&'static str> {
match op {
Comparison::Less => Some("lt"),
Comparison::LessOrEqual => Some("le"),
Comparison::Greater => Some("gt"),
Comparison::GreaterOrEqual => Some("ge"),
Comparison::Equal => Some("eq"),
Comparison::NotEqual => Some("ne"),
_ => None,
}
}