private object MapRel(string left, string oper, string right)
        {
            //TODO: Check the expression on the right
            if (!OperChecker.IsRelOper(oper) || !Check.IsProp(left))
            {
                throw new Exception("Invalid relational operation");
            }

            var leftNode  = PropChecker.GetNode(left);
            var rightNode = Check.GetNode(right);

            return(OperChecker.GetRelationalNode(leftNode, oper, rightNode));
        }
Exemplo n.º 2
0
        public static Expression GetNode(string token)
        {
            object constant = IsBool(token) ? Cast <bool>(token, bool.TryParse)
                : IsInt(token) ? Cast <int>(token, int.TryParse)
                : IsFloat(token) ? Cast <float>(token, float.TryParse)
                : IsChar(token) ? Cast <char>(token, char.TryParse)
                : IsDate(token) ? Cast <DateTime>(token, DateTime.TryParse)
                : IsProp(token) ? PropChecker.GetProp(token)
                : GetString(token);

            if (constant == null)
            {
                throw new Exception($"Invalid constant value {token}");
            }

            return(ConstantExpression.Constant(constant));
        }
Exemplo n.º 3
0
 public static bool IsProp(string value) => PropChecker.IsProp(value);