private void BeginHandler(Event e) { // code generation start here EmitHandlerHeader(e.Name); EmitEnterBlock(); _gc = new GateConverter(); // process labels before they are added ... _gc.OnBeforeAddLabel = EvaluateCodeLabelBefore; _guards = new GuardCollection(); _effectsbefore = new EffectsCollection(); _effectsafter = new EffectsCollection(); }
private void EndHandler() { if (TraceFlags.ShowLabel) { Trace("labels:\n{0}", _gc.ToDebugString()); } _guards = null; _effectsbefore = null; _effectsafter = null; _gc.Dispose(); _gc = null; EmitLeaveBlock(); Writer.AppendComment(); }
public static void Main() { GuardCollection guards = new GuardCollection(); string kingName = Console.ReadLine(); string[] royalGuards = Console.ReadLine().Split().ToArray(); string[] footmen = Console.ReadLine().Split().ToArray(); King king = new King(kingName); king.Attack += guards.HandleKingsAttack; for (int i = 0; i < royalGuards.Length; i++) { guards.AddGuard(new RoyalGuard(royalGuards[i])); } for (int i = 0; i < footmen.Length; i++) { guards.AddGuard(new Footman(footmen[i])); } string command = Console.ReadLine(); while (command != "End") { if (command == "Attack King") { king.IsAttacked(); } else { string[] commandArgs = command.Split().ToArray(); string name = commandArgs[1]; guards.Kill(name); } command = Console.ReadLine(); } }
public void CalculateEffects() { _tset = new TransitionSet(); // overall precondition for the event var c = new TriggerTermCollection<bool>(true); foreach (var t in Triggers) { c.Add(t); // add to event wide transition set _tset.AddRange(t.Transitions); } var guards = new GuardCollection(); var before = new EffectsCollection(); var after = new EffectsCollection(); foreach (var t in Triggers) { foreach (var g in t.Guards) { guards.AddGuard(t, g); } foreach (var effect in t.Effects) { after.AddEffect(t, effect); } } guards.AddLeaveEffects(before); guards.AddEnterEffects(after); // make results visible EffectsBefore = before; EffectsAfter = after; PreCondition = c.PreCondition; }
private void EndHandler() { if(TraceFlags.ShowLabel) { Trace("labels:\n{0}", _gc.ToDebugString()); } _guards = null; _effectsbefore = null; _effectsafter = null; _gc.Dispose(); _gc = null; EmitLeaveBlock(); Writer.AppendComment(); }