コード例 #1
0
ファイル: Interpretator.cs プロジェクト: LloydLion/DuMir
        public void Run(DuAnalyzedProject project)
        {
            Logger.LogMessage("INTERPRETATING...", Logger.LogLevel.Warning);
            ConsoleHandler.Global.WriteLine(new string('-', 30));

            ctx = new InterpretatorContext()
            {
                Project = project
            };

            project.AnalysedCode.InvokeForAll(s =>
            {
                ctx.ExecutablesIterators.Add(-1);

                for (int i = 0; i < s.Executables.Count; i++)
                {
                    ctx.ExecutablesIterators[0] = i;
                    s.Executables[i].OnStart(ctx);
                }

                ctx.ExecutablesIterators.RemoveAt(0);
            });

            var main = project.AnalysedCode[0];

            ctx.ExecutablesIterators.Clear();

            Execute(new NullBlock(main.Executables, null));

            Logger.LogMessage("Program has finished", Logger.LogLevel.Console);
        }
コード例 #2
0
ファイル: ExpressionHandler.cs プロジェクト: LloydLion/DuMir
		private static object GetValueFromOperand(string operand, InterpretatorContext ctx)
		{
			if(operand.StartsWith("$"))
			{
				return ctx.GetVariable(operand[1..]).CurrentValue;