Example #1
0
        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();
        }
Example #2
0
        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();
        }
Example #3
0
    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();
        }
    }
Example #4
0
        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;
        }
Example #5
0
        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();
        }
Example #6
0
        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();
        }