Ejemplo n.º 1
0
 //atualiza as informções do guardian da Vfsm.
 private void UpdateVariableCurrentVfsm(Vfsm vfsm, List <Variable> listOfTransition)
 {
     vfsm.ListOfGuardian = new List <Variable> ();
     foreach (Variable v in listOfTransition)
     {
         vfsm.ListOfGuardian.Add(v);
     }
 }
Ejemplo n.º 2
0
        //metodo que chama o metodo converte uma Vfsm em FSM.
        public FiniteStateMachine ConvertToFSM(Vfsm vfsm)
        {
            FiniteStateMachine fsm = new FiniteStateMachine();

            fsm.Name = vfsm.Name;
            AddInitialStateVfsmToFSM(vfsm, fsm);
            ConvertToFSM(vfsm.StateInitial, fsm, vfsm);
            return(fsm);
        }
Ejemplo n.º 3
0
 //metodo que retorna a transição do estado inicial da Vfsm.
 private TransitionVfsm GetStateInitialVfsm(State state, Vfsm vfsm)
 {
     foreach (TransitionVfsm t in vfsm.ListTransition)
     {
         if (t.Source.Name.Equals(state.Name) && ValidateGuardianList(t.ListGuardian, t.ListGuardian, vfsm))
         {
             return(t);
         }
     }
     return(null);
 }
Ejemplo n.º 4
0
        //metodo recursivo que converte as Vfsm para FSM.
        private void ConvertToFSM(State state, FiniteStateMachine fsm, Vfsm vfsm)
        {
            List <TransitionVfsm> ListTranitionVfsm = GetTransition(state, vfsm);

            if (ListTranitionVfsm != null)
            {
                foreach (TransitionVfsm tVfsm in ListTranitionVfsm)
                {
                    Transition t = ConvertToTransitionFSM(tVfsm, vfsm);
                    AddInfoToFSM(t, fsm);
                    ConvertToFSM(tVfsm.Target, fsm, vfsm);
                }
            }
        }
Ejemplo n.º 5
0
        //metodo que procura o estado inicial da Vfsm  e converte as informação para estado da FSM.
        private void AddInitialStateVfsmToFSM(Vfsm vfsm, FiniteStateMachine fsm)
        {
            State          stateInitial = new State();
            TransitionVfsm tVfsm        = GetStateInitialVfsm(vfsm.StateInitial, vfsm);
            String         name         = vfsm.StateInitial.Name;

            foreach (Variable v in tVfsm.ListGuardian)
            {
                name += v.Condition;
            }
            stateInitial.Name = name;
            stateInitial.Id   = vfsm.StateInitial.Id;
            fsm.InitialState  = stateInitial;
        }
Ejemplo n.º 6
0
        //retorna a transição com o mesmo lista de guardian.
        private List <TransitionVfsm> GetTransition(State state, Vfsm vfsm)
        {
            List <TransitionVfsm> listTransitionVfsm = new List <TransitionVfsm> ();

            foreach (TransitionVfsm t in vfsm.ListTransition)
            {
                if (t.Source.Name.Equals(state.Name) && ValidateGuardianList(t.ListGuardian, t.ListNewGuardian, vfsm))
                {
                    if (!t.Isvisited)
                    {
                        t.Isvisited = true;
                        listTransitionVfsm.Add(t);
                        // return ;
                    }
                }
            }
            return(listTransitionVfsm);
        }
Ejemplo n.º 7
0
        //metodo que converte uma transição de uma VFSm para uma transição de uma FSM.
        private Transition ConvertToTransitionFSM(TransitionVfsm tVfsm, Vfsm vfsm)
        {
            Transition t = new Transition();

            t.Input  = tVfsm.Input;
            t.Output = tVfsm.Output;

            State sSource = new State();

            sSource.Name = Concatenate(vfsm.ListOfGuardian, tVfsm.Source);
            //sSource.Id = t.SourceState.Id;

            UpdateVariableCurrentVfsm(vfsm, tVfsm.ListNewGuardian);
            State Starget = new State();

            Starget.Name = Concatenate(tVfsm.ListNewGuardian, tVfsm.Target);
            //Starget.Id = t.TargetState.Id;
            t.SourceState = sSource;
            t.TargetState = Starget;

            return(t);
        }
Ejemplo n.º 8
0
 //valida se todas os guardian são iguais as variaveis corrente da Vfsm.
 private bool ValidateGuardianList(List <Variable> listOfTransition, List <Variable> ListNewGuardian, Vfsm vfsm)
 {
     try {
         for (int i = 0; i < vfsm.ListOfGuardian.Count; i++)
         {
             if (!vfsm.ListOfGuardian[i].Condition.Equals(listOfTransition[i].Condition))
             {
                 return(false);
             }
         }
         return(true);
     } catch (Exception e) {
         return(false);
     }
 }