예제 #1
0
        private AphidObject InterpretPatternMatchingExpression(PatternMatchingExpression expression)
        {
            var left = (AphidObject)InterpretExpression(expression.TestExpression);

            foreach (var p in expression.Patterns)
            {
                if (p.Item1 != null)
                {
                    var right = (AphidObject)InterpretExpression(p.Item1);

                    var b = left.Value != null?
                            left.Value.Equals(right.Value) :
                                (null == right.Value && left.Count == 0 && right.Count == 0);

                    if (b)
                    {
                        return(ValueHelper.Wrap(InterpretExpression(p.Item2)));
                    }
                }
                else
                {
                    return(ValueHelper.Wrap(InterpretExpression(p.Item2)));
                }
            }

            return(new AphidObject());
        }
예제 #2
0
 [DebuggerStepThrough] protected virtual void EmitPatternMatchingExpression(PatternMatchingExpression expression, bool isStatement = false)
 {
     throw new NotImplementedException();
 }