/// <summary>
        /// 协变
        /// </summary>
        public void Test02()
        {
            IOutList <Parent> parents = new OutList <Parent>();

            IOutList <Son> sons = new OutList <Son>();

            //parents = sons;//error
            sons = parents;
        }
Пример #2
0
        static void Main(string[] args)
        {
            IStack <IStatement>   stack      = new ExeStack <IStatement>();
            IDict <String, int>   dictionary = new SymbTable <String, int>();
            ILis <int>            outL       = new OutList <int>();
            IDict <int, FileData> fileTab    = new FileTable <int, FileData>();


            IStatement stm1 = new AssignStatement("a", new ArithmeticExpression('+', new ConstExpression(5), new ConstExpression(4)));
            IStatement stm2 = new CompStatement(new AssignStatement("a", new ArithmeticExpression('+', new ConstExpression(5), new ConstExpression(4))), new AssignStatement("b", new ArithmeticExpression('-', new ConstExpression(14), new ConstExpression(4))));


            IStatement asgnVar = new AssignStatement("x", new ArithmeticExpression('-', new ConstExpression(50), new ConstExpression(49)));
            IStatement ifstm   = new IfStatement(new VarExpression("x"), new AssignStatement("x", new ConstExpression(13)), new AssignStatement("x", new ConstExpression(10)));
            IStatement stm3    = new CompStatement(asgnVar, new CompStatement(ifstm, new PrintStatement(new VarExpression("x"))));

            IStatement stm4 = new CompStatement(new OpenRFile("file", @"c:\users\cristian\documents\visual studio 2015\Projects\Map\Map\ex1.txt"), new CompStatement(new ReadFile(new VarExpression("file"), "x"), new CloseRFile(new VarExpression("file"))));
            IStatement stm5 = new CompStatement(new OpenRFile("file", @"c:\users\cristian\documents\visual studio 2015\Projects\Map\Map\ex1.txt"), new CompStatement(new ReadFile(new VarExpression("file"), "x"), new CompStatement(new ReadFile(new VarExpression("file"), "y"), new CloseRFile(new VarExpression("file")))));



            stack.push(stm5);

            ProgramState ps   = new ProgramState(stack, dictionary, outL, fileTab, stm5);
            IRepository  repo = new Repository(@"c:\users\cristian\documents\visual studio 2015\Projects\Map\Map\OutLog.txt");

            repo.Program = ps;

            Controller ctrl = new Controller(repo);

            TextMenu menu = new TextMenu();

            menu.addCommand(new ExitCommand("0", "exit."));
            menu.addCommand(new RunExample("1", "Run Program.", ctrl));

            menu.show();


            Console.ReadKey();
        }