Esempio n. 1
0
 //Methode om te kijken de huidige toestand gelijk is aan een gegeven toestand
 public bool Equals(Toestand <T> other)
 {
     if (this.naam == other.naam && this.volgendeToestand == other.volgendeToestand)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Esempio n. 2
0
        public DFA <T> ToDFA()
        {
            DFA <T> newDFA = new DFA <T>();
            Dictionary <Tuple <string, T>, SortedSet <string> > table = CreateTable();

            foreach (KeyValuePair <Tuple <string, T>, SortedSet <string> > k in table)
            {
                Toestand <T> newt = new Toestand <T>(k.Key.Item1, new Tuple <string, T>("", k.Key.Item2));
                foreach (string p in k.Value)
                {
                    string           naam = "";
                    SortedSet <char> d    = new SortedSet <char>((newt.volgendeToestand.Item1 + p).ToCharArray());
                    foreach (char y in d)
                    {
                        naam += y;
                    }
                    newt.volgendeToestand = new Tuple <string, T>(naam, newt.volgendeToestand.Item2);
                }
                newDFA.toestanden.Add(newt);
            }
            //overbodige toestanden weghalen
            for (int v = newDFA.toestanden.Count - 1; v >= 0; v--)
            {
                var x = startSymbolen.FirstOrDefault(p => p == newDFA.toestanden.ElementAt(v).naam);
                if (x == null)
                {
                    var t = newDFA.toestanden.FirstOrDefault(f => f.volgendeToestand.Item1 == newDFA.toestanden.ElementAt(v).naam&& f.naam != newDFA.toestanden.ElementAt(v).naam);
                    if (t == default(Toestand <T>))
                    {
                        newDFA.toestanden.Remove(newDFA.toestanden.ElementAt(v));
                    }
                }
            }
            //eindtoestanden bepalen
            foreach (var g in newDFA.toestanden)
            {
                foreach (char c in g.naam.ToCharArray())
                {
                    if (eindToestanden.Contains(new string(c, 1)))
                    {
                        newDFA.eindToestanden.Add(g.naam);
                    }
                }
            }
            //begintoestanden bepalen
            newDFA.startSymbolen  = startSymbolen;
            newDFA.invoerSymbolen = invoerSymbolen;
            return(newDFA);
        }