Beispiel #1
0
        static void Run(RunOptions options)
        {
            VerifyFileExists(options.File);

            string programString = null;

            TimeAction(() => programString = File.ReadAllText(options.File), options.PrintTiming, "Read source file in {0} ms.");

            Lexer             lexer             = new Lexer(options.ProgramWidth, options.ProgramHeight);
            ExpressionProgram expressionProgram = null;

            TimeAction(() => expressionProgram = lexer.Lex(programString), options.PrintTiming, "Performed lexing in {0} ms.");

            InstructionProgram instructionProgram = null;

            TimeAction(() => instructionProgram = new InstructionProgram(expressionProgram), options.PrintTiming, "Performed parsing in {0} ms.");

            Interpreter interpreter;

            if (options.DisableInterpreterOutput)
            {
                interpreter = new Interpreter(new NoOutputEnvironment());
            }
            else
            {
                interpreter = new Interpreter();
            }
            TimeAction(() => interpreter.Execute(instructionProgram), options.PrintTiming, "Executed program in {0} ms.");
        }
Beispiel #2
0
        public InstructionProgram(ExpressionProgram expressionProgram)
        {
            Expressions = expressionProgram.Expressions;
            Width       = expressionProgram.Width;
            Height      = expressionProgram.Height;

            Instructions = new Readonly2DArray <Instruction>(ParseExpressions());
        }