public Baby Translate(BabyElement babyElement)
        {
            var stateSymbolTable = babyElement.StateElements.ToDictionary(s => s.Name, s => new State(s.Name));

            var baby = new Baby(_scheduler, babyElement.Name) { State = stateSymbolTable[babyElement.InitialStateName] };

            foreach (var scheduledEventElement in babyElement.ScheduledEventElements)
            {
                var scheduledEvent = new ScheduledEvent(scheduledEventElement.Event, scheduledEventElement.Interval);
                baby.Schedule(scheduledEvent);
            }

            foreach (var stateElement in babyElement.StateElements)
            {
                var state = stateSymbolTable[stateElement.Name];
                foreach (var transitionElement in stateElement.TransitionElements)
                {
                    var targetState = stateSymbolTable[transitionElement.StateName];
                    var transition = new Transition(transitionElement.Event, targetState);
                    state.AddTransition(transition);
                }
            }

            return baby;
        }
Exemple #2
0
 public void AddTransition(Transition transition)
 {
     _transitions.Add(transition.Event, transition.State);
 }