Beispiel #1
0
        void CheckCrucialRegisters()
        {
            float R0 = MetaSymbol.Cast <float>(Tokens.NUM, symbolTable[0]).Value;

            switch ((int)R0)
            {
            case 1:
                // continue
                return;

            case 2:
                StandardAPI.output(line);
                return;

            case 0:
                // exit
                ready    = false;
                instance = null;
                return;

            case -1:
            default:
                // throw error
                ready = false;
                throw new InterpreterError("Error: (-1) abrupt shutdown");
            }
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            Interpreter.Init(registers: 32);

            var mini = Interpreter.Instance;

            StandardAPI.output = Console.WriteLine; // change output method
            StandardAPI.input  = Console.ReadLine;  // change input method

            Bootloader.CreateReference();
            FileAPI.CreateReference();
            StandardAPI.Load(mini);

            while (mini.Ready)
            {
                if (mini.IsLabelDefinition)
                {
                    Console.Write(">> ");
                }
                else
                {
                    Console.Write("\n> ");
                }

                mini.Run(Console.ReadLine());
                mini.ResetLineNum();
            }

            Console.WriteLine("bye");
        }
Beispiel #3
0
        public void Debug(Symbol <string> flag)
        {
            switch (flag.Value)
            {
            case "parser":
                mini.debugParser = !mini.debugParser;
                break;

            case "preprocessor":
                mini.debugPreprocessor = !mini.debugPreprocessor;
                break;

            case "all":
                mini.debugParser       = true;
                mini.debugPreprocessor = true;
                break;

            case "none":
                mini.debugParser       = false;
                mini.debugPreprocessor = false;
                break;

            default:
                StandardAPI.output("Unknown flag " + flag.Value);
                break;
            }
        }
Beispiel #4
0
 public void Peek(Symbol <int> start, Symbol <int> end)
 {
     for (int i = start.Value; i < end.Value; i++)
     {
         StandardAPI.output(mini.FormatAddress(i));
     }
 }
Beispiel #5
0
        public void Help(Symbol <int> ptr)
        {
            var instruction = mini.GetAddress <Instruction>(ptr.Value, Tokens.LBL);

            StandardAPI.output("\n" + instruction + "\n");

            foreach (string line in instruction.Value.Documentation)
            {
                StandardAPI.output("        " + line);
            }
        }
Beispiel #6
0
        public static void Main(string[] args)
        {
            Interpreter.Init(registers: 32);

            var mini = Interpreter.Instance;

            Bootloader.CreateReference();
            StandardAPI.Load(mini);

            while (mini.Ready)
            {
                Console.Write("> ")
                gelii.Run(Console.ReadLine());
            }
        }
Beispiel #7
0
        public void Peek(Symbol <float> batchSize)
        {
            var block = new StringBuilder();

            for (int i = 0; i < mini.TableSize(); i++)
            {
                block.AppendLine(mini.FormatAddress(i));

                if (i % batchSize.Value == 0)
                {
                    StandardAPI.output(block);
                    block.Length = 0;
                }
            }

            StandardAPI.output(block);
        }
Beispiel #8
0
    void Start()
    {
        StandardAPI.output   = Debug.Log;
        StandardAPI.input    = null;
        Interpreter.debugOut = Debug.Log;
        Interpreter.errorOut = Debug.LogError;
        Interpreter.Init(32);

        mini = Interpreter.Instance;

        Bootloader.CreateReference();
        FileAPI.CreateReference();
        StandardAPI.Load(mini);

        game.AddAll(mini);
        go.Init(mini, transform, prefabs);
        go.AddAll();

        for (int i = 0; i < transform.childCount; i++)
        {
            go.AddTranform(transform.GetChild(i));
        }
    }
Beispiel #9
0
        public void IO(Symbol <int> ptr)
        {
            int addr = ptr.Value;

            switch (addr)
            {
            case 6:
                if (StandardAPI.input == null)
                {
                    throw new InterpreterError("IO", "Input not supported");
                }
                mini.SetAddress(addr, new Symbol <string>(Tokens.STR, StandardAPI.input()));
                break;

            case 7:
                if (StandardAPI.output == null)
                {
                    throw new InterpreterError("IO", "Output not supported");
                }

                var output = mini.GetRegister(addr);

                if (output.Type == Tokens.STR)
                {
                    StandardAPI.output(((Symbol <string>)output).Value);
                }
                else
                {
                    StandardAPI.output(output.ToString());
                }
                mini.SetRegister(addr, new Symbol <string>(Tokens.STR, ""));
                break;

            default:
                throw new InterpreterError("IO", "Not io register");
            }
        }
Beispiel #10
0
 public void Peek()
 {
     StandardAPI.output(mini);
 }
Beispiel #11
0
 public void SayHello(Symbol <string> name)
 {
     StandardAPI.output("Hello {0}", name.Value);
 }