Ejemplo n.º 1
0
        public static IAutomat[] GenerateKleeneStern() {
            var automats = KnownAutomat.GetTypes<IKleeneStern>();
            var ret = new List<IAutomat>(automats.Count());

            foreach (var a in automats)
                ret.Add(a.KleeneStern());

            return ret.ToArray();
        }
Ejemplo n.º 2
0
        public static IReverse[] GenerateDoubleReverses() {
            var automats = KnownAutomat.GetTypes<IReverse>();
            var ret = new List<IReverse>(automats.Count());

            foreach (var a in automats)
                ret.Add((IReverse)((IReverse)a.Reverse()).Reverse());

            return ret.ToArray();
        }
Ejemplo n.º 3
0
        public static IAutomat[] GenerateComplements() {
            var automats = KnownAutomat.GetTypes<IComplement>();
            var ret = new List<IAutomat>(automats.Count);

            foreach (var a in automats)
                ret.Add(a.Complement());

            return ret.ToArray();
        }
Ejemplo n.º 4
0
        public static IAcceptWord[] GenerateConcats() {
            var automats = KnownAutomat.GetTypes<IConcat>();
            var ret = new List<IAcceptWord>(automats.Count * automats.Count);

            foreach (var a1 in automats)
                foreach (var a2 in automats)
                    try {
                        ret.Add(a1.Concat(a2));
                    } catch (System.NotSupportedException) { } catch (System.NotImplementedException) { }
            return ret.ToArray();
        }
Ejemplo n.º 5
0
        public static IAutomat[] GenerateIntersects() {
            var automats = KnownAutomat.GetTypes<IIntersect>();
            var ret = new List<IAutomat>(automats.Count() * automats.Count());

            foreach (var a1 in automats)
                foreach (var a2 in automats)
                    if (a1.GetType() == a2.GetType())
                        if (a1.SameAlphabet(a2))
                            try {
                                ret.Add(a1.Intersect(a2));
                            } catch (System.NotImplementedException) { }

            return ret.ToArray();
        }
Ejemplo n.º 6
0
        public static IAcceptWord[] GenerateUnions() {
            var automats = KnownAutomat.GetTypes<IUnion>();
            var ret = new List<IAcceptWord>(automats.Count() * automats.Count());

            foreach (var a1 in automats)
                foreach (var a2 in automats)
                    if (a1.GetType() == a2.GetType())
                        if (a1.SameAlphabet(a2))
                            try {
                                ret.Add(a1.Union(a2));
                            } catch (System.NotImplementedException) { } catch (System.NotSupportedException) { }


            return ret.ToArray();
        }
Ejemplo n.º 7
0
        public static IAcceptWord[] GenerateJoins() {
            var automats = KnownAutomat.GetTypes<IJoin>();
            var ret = new List<IAcceptWord>(automats.Count * automats.Count);

            foreach (var a1 in automats)
                foreach (var a2 in automats)
                    if (a1.GetType() == a2.GetType())
                        if (!(a1 is DFA d) || a1.SameAlphabet(a2)) {
                            try {
                                ret.Add(a1.Join(a2));
                            } catch (System.NotImplementedException) { } catch (System.NotSupportedException) { } // because of SPDA
                        }

            return ret.ToArray();
        }