예제 #1
0
        public void PrintFunctToConsole(DeclFunct decl, string indentation)
        {
            for (var i = 0; i < decl.registerTypes.Count; i++)
            {
                Console.ResetColor();
                Console.Out.Write(indentation);

                Console.Out.Write("#r" + i);
                Console.Out.Write(" ");
                if (decl.registerMutabilities[i])
                {
                    Console.Out.Write("mut ");
                }
                Console.ForegroundColor = ConsoleColor.DarkGray;
                Console.Out.Write(decl.registerTypes[i].GetString(this));
                Console.ResetColor();
                Console.Out.WriteLine();
            }

            Console.Out.WriteLine();

            for (var i = 0; i < decl.localBindings.Count; i++)
            {
                Console.ResetColor();
                Console.Out.Write(indentation);

                Console.Out.Write(decl.localBindings[i].name.GetString());
                Console.Out.Write(" ");
                Console.ForegroundColor = ConsoleColor.DarkGray;
                Console.Out.Write("#r" + decl.localBindings[i].registerIndex);
                Console.ResetColor();
                Console.Out.WriteLine();
            }

            Console.Out.WriteLine();

            for (var i = 0; i < decl.segments.Count; i++)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.Out.Write(indentation);
                Console.Out.Write("segment #s" + i);
                Console.ResetColor();
                Console.Out.WriteLine();

                for (var j = 0; j < decl.segments[i].instructions.Count; j++)
                {
                    decl.segments[i].instructions[j].PrintToConsole(indentation + "  ");
                }

                decl.segments[i].outFlow.PrintToConsole(indentation + "  ");
            }
        }
예제 #2
0
        public int CreateFunct(Name name)
        {
            var decl = new DeclFunct();
            this.declFuncts.Add(decl);

            var declRef = new DeclReference
            {
                kind = DeclReference.Kind.Funct,
                index = this.declFuncts.Count - 1
            };

            this.declTree.Add(name, declRef);
            return this.declFuncts.Count - 1;
        }
예제 #3
0
        public int CreateFunct(Name name)
        {
            var decl = new DeclFunct();

            this.declFuncts.Add(decl);

            var declRef = new DeclReference
            {
                kind  = DeclReference.Kind.Funct,
                index = this.declFuncts.Count - 1
            };

            this.declTree.Add(name, declRef);
            return(this.declFuncts.Count - 1);
        }
예제 #4
0
        public void PrintFunctToConsole(DeclFunct decl, string indentation)
        {
            for (var i = 0; i < decl.registerTypes.Count; i++)
            {
                Console.ResetColor();
                Console.Out.Write(indentation);

                Console.Out.Write("#r" + i);
                Console.Out.Write(" ");
                if (decl.registerMutabilities[i])
                    Console.Out.Write("mut ");
                Console.ForegroundColor = ConsoleColor.DarkGray;
                Console.Out.Write(decl.registerTypes[i].GetString(this));
                Console.ResetColor();
                Console.Out.WriteLine();
            }

            Console.Out.WriteLine();

            for (var i = 0; i < decl.localBindings.Count; i++)
            {
                Console.ResetColor();
                Console.Out.Write(indentation);

                Console.Out.Write(decl.localBindings[i].name.GetString());
                Console.Out.Write(" ");
                Console.ForegroundColor = ConsoleColor.DarkGray;
                Console.Out.Write("#r" + decl.localBindings[i].registerIndex);
                Console.ResetColor();
                Console.Out.WriteLine();
            }

            Console.Out.WriteLine();

            for (var i = 0; i < decl.segments.Count; i++)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.Out.Write(indentation);
                Console.Out.Write("segment #s" + i);
                Console.ResetColor();
                Console.Out.WriteLine();

                for (var j = 0; j < decl.segments[i].instructions.Count; j++)
                    decl.segments[i].instructions[j].PrintToConsole(indentation + "  ");

                decl.segments[i].outFlow.PrintToConsole(indentation + "  ");
            }
        }