示例#1
0
        private int RunDirect()
        {
            var input = cmda.GetStringDefault("file", null);

            if (string.IsNullOrWhiteSpace(input) || !File.Exists(input))
            {
                return(Fail("Please specify a valid input file"));
            }

            try
            {
                string inputCode = File.ReadAllText(input);
                var    parser    = new TextFungeParser();

                var prog = parser.GenerateAst(inputCode);
                var env  = new RunnerEnvironment();

                prog.RunDirect(env, TextFungeParser.ExtractDisplayFromTFFormat(inputCode));

                return(0);
            }
            catch (BefunGenException ex)
            {
                return(Fail("Error while compiling:\n\n" + ex));
            }
            catch (Exception ex)
            {
                return(Fail("Internal error:\n\n" + ex));
            }
        }
示例#2
0
文件: Method.cs 项目: helvm/BefunGen
        public RunnerResult RunDirect(RunnerEnvironment env, List <long> parameter, out long?returnValue)
        {
            env.StackFrameDown(Identifier);

            for (int i = 0; i < Parameter.Count; i++)
            {
                env.RegisterVariable(Parameter[i], parameter[i]);
            }
            foreach (var vv in Variables.Except(Parameter))
            {
                env.RegisterVariable(vv);
            }

            var r = Body.RunDirect(env);

            while (true)
            {
                if (r.ResultType == RunnerResult.RRType.Exit)
                {
                    returnValue = null;
                    return(r);
                }
                else if (r.ResultType == RunnerResult.RRType.Return)
                {
                    returnValue = env.StackFrameUp();
                    return(RunnerResult.Normal());
                }
                else if (r.ResultType == RunnerResult.RRType.Normal)
                {
                    returnValue = env.StackFrameUp();
                    return(RunnerResult.Normal());
                }
                else if (r.ResultType == RunnerResult.RRType.Jump)
                {
                    int iskip = Body.List.IndexOf(env.JumpTarget);
                    if (iskip < 0)
                    {
                        throw new InternalCodeRunException($"Label '{env.JumpTarget.Identifier}' not found in {env.CurrentFrame.Name}");
                    }

                    env.JumpTarget = null;

                    r = Body.RunDirect(env, iskip);
                }
            }
        }
        protected virtual void InitRunnerTypes()
        {
            var runnerLibraries = RunnerEnvironment.GetEnvironmentVariable(EnvironmentConsts.RunnerLibraries);

            Trace.WriteLine(string.Format("Testing with runner libraries: [{0}]", runnerLibraries));

            //if (!string.IsNullOrEmpty(runnerLibraries))
            //{
            //    var libs = runnerLibraries.Split(',');

            //    foreach (var lib in libs)
            //        ProvisionRunnerAssemblies.Add(lib);
            //}

            ProvisionRunnerAssemblies.Add("SPMeta2.Regression.Runners.O365.dll");
            //ProvisionRunnerAssemblies.Add("SPMeta2.Regression.Runners.CSOM.dll");
            //ProvisionRunnerAssemblies.Add("SPMeta2.Regression.Runners.SSOM.dll");
        }
示例#4
0
文件: Program.cs 项目: helvm/BefunGen
        public void RunDirect(RunnerEnvironment env, string initialDisp)
        {
            env.ResetDisplay(DisplayWidth, DisplayHeight, initialDisp, ' ');

            foreach (var ml in MethodList)
            {
                env.RegisterMethod(ml);
            }
            foreach (var cc in Constants)
            {
                env.RegisterGlobalVariable(cc);
            }
            foreach (var vv in Variables)
            {
                env.RegisterGlobalVariable(vv);
            }

            MainMethod.RunDirect(env, new List <long>(), out _);
        }
示例#5
0
 public O365ProvisionRunner()
 {
     SiteUrl      = RunnerEnvironment.GetEnvironmentVariable(EnvironmentConsts.O365_SiteUrl);
     UserName     = RunnerEnvironment.GetEnvironmentVariable(EnvironmentConsts.O365_UserName);
     UserPassword = RunnerEnvironment.GetEnvironmentVariable(EnvironmentConsts.O365_Password);
 }
示例#6
0
 public SSOMProvisionRunner()
 {
     WebApplicationUrl = RunnerEnvironment.GetEnvironmentVariable(EnvironmentConsts.SSOM_WebApplicationUrl);
     SiteUrl           = RunnerEnvironment.GetEnvironmentVariable(EnvironmentConsts.SSOM_SiteUrl);
 }