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."); }
public InstructionProgram(ExpressionProgram expressionProgram) { Expressions = expressionProgram.Expressions; Width = expressionProgram.Width; Height = expressionProgram.Height; Instructions = new Readonly2DArray <Instruction>(ParseExpressions()); }