Ejemplo n.º 1
0
        public override EvalResult Evaluate(MakeState s)
        {
            var v = val.Evaluate(s);

            try
            {
                System.IO.FileSystemInfo fi = new System.IO.FileInfo(v.strval);
                if ((fi.Attributes & System.IO.FileAttributes.Directory) == System.IO.FileAttributes.Directory)
                {
                    fi = new System.IO.DirectoryInfo(v.strval);
                }
                if (fi.Exists)
                {
                    return(new EvalResult(1));
                }
                else
                {
                    return(new EvalResult(0));
                }
            }
            catch (Exception)
            {
                return(new EvalResult(0));
            }
        }
Ejemplo n.º 2
0
        public override EvalResult Evaluate(MakeState s)
        {
            var v = val.Evaluate(s).strval;

            v = Program.replace_dir_split(v);

            if (v.EndsWith("/") || v.EndsWith("\\"))
            {
                return(new EvalResult(1));
            }
            else
            {
                return(new EvalResult(0));
            }
        }
Ejemplo n.º 3
0
        public override EvalResult Evaluate(MakeState s)
        {
            if (arglist != null)
            {
                throw new NotImplementedException();
            }

            if (!s.props.ContainsKey(val))
            {
                return(new EvalResult(""));
            }
            else
            {
                return(new EvalResult(s.props[val]));
            }
        }
Ejemplo n.º 4
0
        public override EvalResult Evaluate(MakeState s)
        {
            Type t = null;

            foreach (var ass in AppDomain.CurrentDomain.GetAssemblies())
            {
                t = ass.GetType(type);
                if (t != null)
                {
                    break;
                }
            }
            if (t == null)
            {
                throw new NotSupportedException();
            }

            var rhs = val as LabelExpression;

            string[] args      = new string[rhs.arglist.Count];
            Type[]   str_types = new Type[rhs.arglist.Count];
            for (int i = 0; i < rhs.arglist.Count; i++)
            {
                args[i]      = rhs.arglist[i].Evaluate(s).strval;
                str_types[i] = typeof(string);
            }

            var meth = t.GetMethod(rhs.val, System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public, null, str_types, null);
            var r    = meth.Invoke(null, args).ToString();

            if (r.ToLower() == "true")
            {
                return(new EvalResult(1));
            }
            else if (r.ToLower() == "false")
            {
                return(new EvalResult(0));
            }
            else
            {
                return(new EvalResult(r));
            }
        }
Ejemplo n.º 5
0
        public override EvalResult Evaluate(MakeState s)
        {
            var lhs = srcval.Evaluate(s);

            // search for a method containing the appropriate arguments
            LabelExpression rhs = val as LabelExpression;

            if (val is LabelDotExpression)
            {
                rhs = ((LabelDotExpression)val).srcval as LabelExpression;
            }

            string[] args      = new string[rhs.arglist.Count];
            Type[]   str_types = new Type[rhs.arglist.Count];
            for (int i = 0; i < rhs.arglist.Count; i++)
            {
                args[i]      = rhs.arglist[i].Evaluate(s).strval;
                str_types[i] = typeof(string);
            }

            var str_type = typeof(string);



            var meth = str_type.GetMethod(rhs.val, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public, null, str_types, null);
            var res  = meth.Invoke(lhs.strval, args);

            var ret = res.ToString();

            if (ret.ToLower() == "true")
            {
                return(new EvalResult(1));
            }
            else if (ret.ToLower() == "false")
            {
                return(new EvalResult(0));
            }
            else
            {
                return(new EvalResult(ret));
            }
        }
Ejemplo n.º 6
0
 public override EvalResult Evaluate(MakeState s)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 7
0
 public override EvalResult Evaluate(MakeState s)
 {
     return(val.Evaluate(s));
 }
Ejemplo n.º 8
0
 public override EvalResult Evaluate(MakeState s)
 {
     return(new EvalResult(Project.process_string(val, s.props)));
 }
Ejemplo n.º 9
0
 public override EvalResult Evaluate(MakeState s)
 {
     return(new EvalResult(val));
 }
Ejemplo n.º 10
0
        public virtual EvalResult Evaluate(MakeState s)
        {
            EvalResult ea, eb;

            switch (op)
            {
            case Tokens.NOT:
                ea = a.Evaluate(s);
                check_null(ea);
                if (ea.AsInt == 0)
                {
                    return(new EvalResult(1));
                }
                else
                {
                    return(new EvalResult(0));
                }

            case Tokens.LAND:
                ea = a.Evaluate(s);
                if (ea.AsInt == 0)
                {
                    return(new EvalResult(0));
                }
                eb = b.Evaluate(s);
                if (eb.AsInt == 0)
                {
                    return(new EvalResult(0));
                }
                return(new EvalResult(1));

            case Tokens.LOR:
                ea = a.Evaluate(s);
                if (ea.AsInt != 0)
                {
                    return(new EvalResult(1));
                }
                eb = b.Evaluate(s);
                if (eb.AsInt != 0)
                {
                    return(new EvalResult(1));
                }
                return(new EvalResult(0));

            case Tokens.EQUALS:
            case Tokens.NOTEQUAL:
            {
                int _true  = 1;
                int _false = 0;

                if (op == Tokens.NOTEQUAL)
                {
                    _true  = 0;
                    _false = 1;
                }

                ea = a.Evaluate(s);
                eb = b.Evaluate(s);

                if (ea.Type == EvalResult.ResultType.String && eb.Type == EvalResult.ResultType.String)
                {
                    if (ea.strval == null)
                    {
                        if (eb.strval == null)
                        {
                            return(new EvalResult(_true));
                        }
                        else
                        {
                            return(new EvalResult(_false));
                        }
                    }
                    if (ea.strval.Equals(eb.strval))
                    {
                        return(new EvalResult(_true));
                    }
                    else
                    {
                        return(new EvalResult(_false));
                    }
                }
                else if (ea.Type == EvalResult.ResultType.Int && eb.Type == EvalResult.ResultType.Int)
                {
                    if (ea.intval == eb.intval)
                    {
                        return(new EvalResult(_true));
                    }
                    else
                    {
                        return(new EvalResult(_false));
                    }
                }
                else
                {
                    throw new NotSupportedException();
                }
            }

            case Tokens.LT:
                ea = a.Evaluate(s);
                eb = b.Evaluate(s);

                check_null(ea);
                check_null(eb);

                if (ea.AsInt < eb.AsInt)
                {
                    return(new EvalResult(1));
                }
                else
                {
                    return(new EvalResult(0));
                }

            case Tokens.GT:
                ea = a.Evaluate(s);
                eb = b.Evaluate(s);

                check_null(ea);
                check_null(eb);

                if (ea.AsInt > eb.AsInt)
                {
                    return(new EvalResult(1));
                }
                else
                {
                    return(new EvalResult(0));
                }

            case Tokens.GEQUAL:
                ea = a.Evaluate(s);
                eb = b.Evaluate(s);

                check_null(ea);
                check_null(eb);

                if (ea.AsInt >= eb.AsInt)
                {
                    return(new EvalResult(1));
                }
                else
                {
                    return(new EvalResult(0));
                }
            }

            throw new NotImplementedException(op.ToString());
        }