⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 expressiontree.cs

📁 Data Structures and Algorithms with Object-Oriented Design Patterns in C# 这本书的范例代码dll自己反编译的source
💻 CS
字号:
namespace Opus6
{
    using System;
    using System.IO;
    using System.Text;

    [Copyright("Copyright (c) 2001 by Bruno R. Preiss, P.Eng."), Version("$Id: ExpressionTree.cs,v 1.4 2001/10/28 19:50:09 brpreiss Exp $")]
    public class ExpressionTree : BinaryTree
    {
        public ExpressionTree(char c) : base(c)
        {
        }

        public static ExpressionTree ParsePostfix(TextReader reader)
        {
            int num1;
            Stack stack1 = new StackAsLinkedList();
            while ((num1 = reader.Read()) >= 0)
            {
                char ch1 = (char) ((ushort) num1);
                if (char.IsLetterOrDigit(ch1))
                {
                    stack1.Push(new ExpressionTree(ch1));
                }
                else if (((ch1 == '+') || (ch1 == '-')) || ((ch1 == '*') || (ch1 == '/')))
                {
                    ExpressionTree tree1 = new ExpressionTree(ch1);
                    tree1.AttachRight((ExpressionTree) stack1.Pop());
                    tree1.AttachLeft((ExpressionTree) stack1.Pop());
                    stack1.Push(tree1);
                }
            }
            return (ExpressionTree) stack1.Pop();
        }

        public override string ToString()
        {
            ExpressionVisitor visitor1 = new ExpressionVisitor();
            this.DepthFirstTraversal(visitor1);
            return visitor1.ToString();
        }



        private class ExpressionVisitor : AbstractPrePostVisitor
        {
            public ExpressionVisitor()
            {
                this.builder = new StringBuilder();
            }

            public override void InVisit(object obj)
            {
                this.builder.Append(obj);
            }

            public override void PostVisit(object obj)
            {
                this.builder.Append(")");
            }

            public override void PreVisit(object obj)
            {
                this.builder.Append("(");
            }

            public override string ToString()
            {
                return this.builder.ToString();
            }


            private StringBuilder builder;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -