コード例 #1
0
        public static Parser.Variable sum(Parser.Variable left, Parser.Variable right)
        {
            left  = GetVariableValue(left);
            right = GetVariableValue(right);

            if (left.type == "string" || right.type == "string")
            {
                return(new Parser.Variable(left.value + right.value, "string"));
            }

            if (left.IsNaN() || right.IsNaN())
            {
                return(new Parser.Variable("NaN", "number"));
            }

            if (!left.CanBeConvertedTo("number") || !right.CanBeConvertedTo("number"))
            {
                return(new Parser.Variable("NaN", "number"));
            }

            left  = left.ConvertTo("number");
            right = right.ConvertTo("number");

            return(new Parser.Variable(Parse(left.value) + Parse(right.value)));
        }
コード例 #2
0
        internal static Parser.Variable res(Parser.Variable left, Parser.Variable right)
        {
            left  = GetVariableValue(left);
            right = GetVariableValue(right);

            if (left.IsNaN() || right.IsNaN())
            {
                return(new Parser.Variable("NaN", "number"));
            }
            if (!left.CanBeConvertedTo("number") || !right.CanBeConvertedTo("number"))
            {
                return(new Parser.Variable("NaN", "number"));
            }

            left  = left.ConvertTo("number");
            right = right.ConvertTo("number");

            return(new Parser.Variable(Parse(left.value) % Parse(right.value)));
        }
コード例 #3
0
        public static Parser.Variable div(Parser.Variable left, Parser.Variable right)
        {
            left  = GetVariableValue(left);
            right = GetVariableValue(right);

            if (left.IsNaN() || right.IsNaN())
            {
                return(new Parser.Variable("NaN", "number"));
            }
            if (!left.CanBeConvertedTo("number") || !right.CanBeConvertedTo("number"))
            {
                return(new Parser.Variable("NaN", "number"));
            }

            left  = left.ConvertTo("number");
            right = right.ConvertTo("number");

            if (Parse(right.value) == 0)
            {
                return(new Parser.Variable(0));
            }

            return(new Parser.Variable(Parse(left.value) / Parse(right.value)));
        }
コード例 #4
0
 internal bool IsGreaterOrEqualTo(Variable right) =>
 Native.Parse(ConvertTo("number").value) >= Native.Parse(right.ConvertTo("number").value);
コード例 #5
0
 internal bool IsGreaterThan(Variable right) =>
 Native.Parse(ConvertTo("number").value) > Native.Parse(right.ConvertTo("number").value);
コード例 #6
0
 internal bool IsEqualTo(Variable right) => (right.ConvertTo(type).value == value || ConvertTo(right.type).value == right.value) && type != "object" && right.type != "object";