Пример #1
0
        public virtual bool UserEvaluate(string name, int nameHash, object instance, List <object> indexes, out AleTermResult result, TermEvaluate userEvaluate)
        {
            result = new AleTermResult();
            AleTermEvaluateArgs e = new AleTermEvaluateArgs(name, nameHash, instance, indexes);

            if (_Parser != null)
            {
                _Parser.EvaluateStandardProperties(this, e);
                if (e.ErrorCode != AleTermResult.ERROR_OK && result.SetError(e.ErrorCode, e.ErrorPos))
                {
                    return(false);
                }
                if (e.HasBeenEvaluated)
                {
                    result.Value = e.Result;
                    return(true);
                }
            }

            if (userEvaluate == null && result.SetError(AleTermResult.ERROR_UNKNOWNELEMENT, _Token.StartInOrigin))
            {
                return(false);
            }

            userEvaluate(this, e);
            if (e.ErrorCode != AleTermResult.ERROR_OK && result.SetError(e.ErrorCode, e.ErrorPos))
            {
                return(false);
            }
            result.Value = e.Result;
            return(true);
        }
Пример #2
0
        // evaluation
        private void OnEvaluate(AleTerm term, AleTermEvaluateArgs e)
        {
            bool ignoreCase = chkIgnoreCase.Checked;
            object res;

            if (e.Instance == null)
            {
                if (Variables.TryGetValue(e.Name, out res)) e.Result = res;
                else
                {
                    res = (int)0;
                    Variables.Add(e.Name, res);
                    e.Result = res;
                }
                return;
            }
        }
Пример #3
0
        public virtual bool UserEvaluate(string name, int nameHash, object instance, List<object> indexes, out AleTermResult result, TermEvaluate userEvaluate)
        {
            result = new AleTermResult();
            AleTermEvaluateArgs e = new AleTermEvaluateArgs(name, nameHash, instance, indexes);

            if (_Parser != null)
            {
                _Parser.EvaluateStandardProperties(this, e);
                if (e.ErrorCode != AleTermResult.ERROR_OK && result.SetError(e.ErrorCode, e.ErrorPos)) return false;
                if (e.HasBeenEvaluated)
                {
                    result.Value = e.Result;
                    return true;
                }
            }

            if (userEvaluate == null && result.SetError(AleTermResult.ERROR_UNKNOWNELEMENT, _Token.StartInOrigin)) return false;

            userEvaluate(this, e);
            if (e.ErrorCode != AleTermResult.ERROR_OK && result.SetError(e.ErrorCode, e.ErrorPos)) return false;
            result.Value = e.Result;
            return true;
        }