Пример #1
0
        /// <summary>
        /// Retrieves the value of the expression
        /// </summary>
        /// <param name="evalContext">Evaluation context</param>
        /// <returns>Evaluated expression value</returns>
        public override ExpressionValue Evaluate(IExpressionEvaluationContext evalContext)
        {
            var idExpr = evalContext.GetSymbolValue(SymbolName);

            if (idExpr != ExpressionValue.Error)
            {
                SuggestType(ExpressionValueType.Word);
                return(idExpr);
            }
            EvaluationError = $"Symbol '{SymbolName}' cannot be found";
            return(ExpressionValue.Error);
        }
Пример #2
0
 /// <summary>
 /// Retrieves the value of the expression
 /// </summary>
 /// <param name="evalContext">Evaluation context</param>
 /// <param name="checkOnly"></param>
 /// <returns>Evaluated expression value</returns>
 public override ExpressionValue Evaluate(IExpressionEvaluationContext evalContext, bool checkOnly = false)
 {
     return(evalContext.GetSymbolValue(SymbolName) ?? ExpressionValue.Error);
 }
Пример #3
0
 /// <summary>
 /// This property signs if an expression is ready to be evaluated,
 /// namely, all subexpression values are known
 /// </summary>
 /// <param name="evalContext">Evaluation context</param>
 /// <returns>True, if the expression is ready; otherwise, false</returns>
 public override bool ReadyToEvaluate(IExpressionEvaluationContext evalContext)
 => evalContext.GetSymbolValue(SymbolName) != null;