public void SMG_05_04_SyntaxCases() { TraceFlags.ShowDepencencyAnalysis = true; var cc = new StateMachineCompiler(); cc.CompileString(ReadEmbeddedScript("SyntaxCases.smg")); cc.Parameters.Language = "pseudo"; cc.GenerateCode(); Trace("output:\n{0}", cc.Output); }
public void SMG_01_03_ConditionTransitions() { TraceFlags.ShowDepencencyAnalysis = true; var cc = new StateMachineCompiler(); var sm = cc.CompileString(ReadEmbeddedScript("TransitionCondition.smg")); cc.GenerateCode(); PrintEventEffectConditions(sm); Trace("{0}", cc.Output); }
public void SMG_05_03_PseudoCode() { var cc = new StateMachineCompiler(); cc.CompileString(ReadEmbeddedScript("StandardConditions.smg")); cc.Parameters.Language = "pseudo"; cc.GenerateCode(); Trace("output:\n{0}", cc.Output); }
public void SMG_05_02_CodeGeneration() { // TraceFlags.ShowLabel = true; var cc = new StateMachineCompiler(); cc.CompileString(ReadEmbeddedScript("CodeGenerationOptions.smg")); Assert.AreEqual(true, cc.Parameters.IsPartial); Assert.AreEqual("Test.Code", cc.Parameters.Namespace); cc.GenerateCode(); Trace("output:\n{0}", cc.Output); /*using(var writer = new StreamWriter(@"c:\users\tc\repositories\igra3\prototype\html\smg.js")) { writer.Write(cc.Output); }*/ }
public void SMG_05_01_CodeGeneration() { var cc = new StateMachineCompiler(); cc.CompileString(ReadEmbeddedScript("CodeGeneration.smg")); cc.GenerateCode(); Assert.AreEqual(2, cc.SM.Events.Count()); var u = cc.SM.AddEvent("u"); var trigger = new Trigger(u, cc.EvaluateCondition("s(b => a)")); trigger.AddEffects(new[] { new CallEffect(cc.SM, "m") }); cc.SM.AddTrigger(trigger); Assert.IsFalse(cc.SM.IsPrepared); cc.Parameters.IsProcessEventPublic = true; cc.GenerateCode(); Assert.IsTrue(cc.SM.IsPrepared); Assert.AreEqual(3, cc.SM.Events.Count()); Trace("output:\n{0}", cc.Output); var csharp = new CSharpCodeProvider(); var options = new CompilerParameters(); var result = csharp.CompileAssemblyFromSource(options, cc.Output); if (result.Errors.Count > 0) { foreach (var e in result.Errors) { Trace("{0}", e); } Assert.Fail("generated code failed to compile."); } var dll = result.CompiledAssembly; var type = dll.GetType("CodeGeneration"); var eventtype = dll.GetType("EventCode"); var events = Enum.GetValues(eventtype); var x = Activator.CreateInstance(type); var tostatestring = type.GetMethod("ToStateString"); Trace("initial state [{0}].", tostatestring.Invoke(x, new object[0])); var processevent = type.GetMethod("ProcessEvent"); var sendevent = events.GetValue(0); Trace("sending event '{0}' ...", sendevent); processevent.Invoke(x, new object[] { sendevent }); var statestring = tostatestring.Invoke(x, new object[0]).ToString(); Trace("state after [{0}].", statestring); Assert.AreEqual("s(b) t(b) f(0)", statestring); sendevent = events.GetValue(1); Trace("sending event '{0}' ...", sendevent); processevent.Invoke(x, new object[] { sendevent }); statestring = tostatestring.Invoke(x, new object[0]).ToString(); Trace("state after [{0}].", statestring); Assert.AreEqual("s(b) t(a) f(1)", statestring); }
public void SMG_04_Program() { TraceFlags.ShowDepencencyAnalysis = true; var cc = new StateMachineCompiler(); var sm = cc.CompileString(ReadEmbeddedScript("script3.smg")); cc.GenerateCode(); PrintEventEffectConditions(cc.SM); Trace("{0}", cc.Output); // Trace("gatecache: \n{0}", GateCache.Instance.ToDebugString()); }
public void SMG_04_06_SumGuard() { var cc = new StateMachineCompiler(); var smgtext = ReadEmbeddedScript("SumGuard.smg"); var sm = cc.CompileString(smgtext); sm.Calculate(); PrintEventEffectConditions(sm); cc.GenerateCode(); Trace("{0}", cc.Output); }