mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
31 lines
749 B
Rust
31 lines
749 B
Rust
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT License.
|
|
|
|
use crate::ast::*;
|
|
use crate::value::{Value::*, *};
|
|
|
|
pub fn eq(v1: &Value, v2: &Value) -> Value {
|
|
match (v1, v2) {
|
|
(Undefined, _) | (_, Undefined) => Undefined,
|
|
_ => Bool(v1 == v2),
|
|
}
|
|
}
|
|
|
|
pub fn ne(v1: &Value, v2: &Value) -> Value {
|
|
match (v1, v2) {
|
|
(Undefined, _) | (_, Undefined) => Undefined,
|
|
_ => Bool(v1 != v2),
|
|
}
|
|
}
|
|
|
|
pub fn compare(op: &BoolOp, v1: &Value, v2: &Value) -> Value {
|
|
match op {
|
|
BoolOp::Eq => eq(v1, v2),
|
|
BoolOp::Ne => ne(v1, v2),
|
|
BoolOp::Ge => Bool(v1 >= v2),
|
|
BoolOp::Gt => Bool(v1 > v2),
|
|
BoolOp::Le => Bool(v1 <= v2),
|
|
BoolOp::Lt => Bool(v1 < v2),
|
|
}
|
|
}
|