Exemplo n.º 1
0
        //public T CastTo<T>(OperandType opType, object val)
        //{
        //    switch (opType)
        //    {
        //        case OperandType.Sbyte:
        //            return (T)(sbyte)val;
        //        case OperandType.Byte:
        //            break;
        //        case OperandType.Short:
        //            break;
        //        case OperandType.Ushort:
        //            break;
        //        case OperandType.Int:
        //            break;
        //        case OperandType.Uint:
        //            break;
        //        case OperandType.Long:
        //            break;
        //        case OperandType.Ulong:
        //            break;
        //        case OperandType.Char:
        //            break;
        //        case OperandType.Float:
        //            break;
        //        case OperandType.Double:
        //            break;
        //        case OperandType.Bool:
        //            break;
        //        case OperandType.Decimal:
        //            break;
        //        case OperandType.NullableSbyte:
        //            break;
        //        case OperandType.NullableByte:
        //            break;
        //        case OperandType.NullableShort:
        //            break;
        //        case OperandType.NullableUshort:
        //            break;
        //        case OperandType.NullableInt:
        //            break;
        //        case OperandType.NullableUint:
        //            break;
        //        case OperandType.NullableLong:
        //            break;
        //        case OperandType.NullableUlong:
        //            break;
        //        case OperandType.NullableChar:
        //            break;
        //        case OperandType.NullableFloat:
        //            break;
        //        case OperandType.NullableDouble:
        //            break;
        //        case OperandType.NullableBool:
        //            break;
        //        case OperandType.NullableDecimal:
        //            break;
        //        case OperandType.String:
        //            break;
        //        case OperandType.Variable:
        //            break;
        //        case OperandType.VSet:
        //            break;
        //        case OperandType.Object:
        //            break;
        //        case OperandType.Null:
        //            break;
        //    }
        //    return default(T);
        //}

        public ExpressionTree(IEnumerable <IToken> rpnTokens)
        {
            RpnTokens = rpnTokens;
            var stack = new Stack <ExpressionTreeNode>();

            foreach (var item in rpnTokens)
            {
                int count = GetOperandCount(item);
                var node  = new ExpressionTreeNode(item, count);

                while (count-- != 0)
                {
                    node.AddChild(stack.Pop());
                }

                stack.Push(node);
            }
            RootNodeList = new List <ExpressionTreeNode>(stack);
        }
Exemplo n.º 2
0
 public void AddChild(ExpressionTreeNode node)
 {
     this.Children.Add(node);
 }