Esempio n. 1
0
        public void SimulationRunnerComparisonTest()
        {
            var pda = new PDA <char, char>(new AcceptanceCondition.EmptyStack(), false, 'Z', false, "Z");

            pda.AddState(1, false);
            pda.AddTransition().From(0).To(0).Read().Pop('Z').Push("ZZZZZZZZZZZZZZZZZZ");
            pda.AddTransition().From(0).To(1).Read().Pop('Z').Push();
            pda.AddTransition().From(1).To(1).Read('a').Pop('Z').Push();

            var word = "aaaaaaaaaaaaaaaaa".ToCharArray();

            var s = new Stopwatch();

            s.Start();
            var path1 = CFGSimulationRunner <char> .RunSimulation(pda, word);

            s.Stop();

            Console.WriteLine(s.ElapsedMilliseconds);

            s.Restart();
            pda.CreateRunner();
            var path2 = DirectSimulationRunner <char, char> .RunSimulation(pda, word);

            s.Stop();

            Console.WriteLine(s.ElapsedMilliseconds);
        }
Esempio n. 2
0
        public void RunDirectSimulationForProblemPda()
        {
            var pda = new PDA <char, char>(new AcceptanceCondition.EmptyStack(), false, 'Z', false, "Z");

            pda.AddTransition().From(0).To(0).Read().Pop('Z').Push("ZZ");
            pda.AddTransition().From(0).To(0).Read('a').Pop('Z').Push();
            pda.CreateRunner();

            var s = new Stopwatch();

            s.Start();
            //adding one 'a' to the word leads to a System.OutOfMemoryException for the DirectSimulationRunner
            var path = DirectSimulationRunner <char, char> .RunSimulation(pda, "aaaaaaaaaaaa".ToCharArray());

            //var path = CFGSimulationRunner<char>.RunSimulation(pda, "aaaaaaaaaaaaaaa".ToCharArray());
            s.Stop();

            Console.WriteLine(s.ElapsedMilliseconds);
        }
Esempio n. 3
0
        public void RunSimulationTest()
        {
            var pda = new PDA <char, char>(new AcceptanceCondition.EmptyStack(), false, 'Z', false, "ZAB");

            pda.AddState(1, false);

            pda.AddTransition().From(0).To(0).Read('a').Pop('Z').Push("AZ");
            pda.AddTransition().From(0).To(0).Read('a').Pop('A').Push("AA");
            pda.AddTransition().From(0).To(0).Read('a').Pop('B').Push("AB");
            pda.AddTransition().From(0).To(0).Read('b').Pop('Z').Push("BZ");
            pda.AddTransition().From(0).To(0).Read('b').Pop('A').Push("BA");
            pda.AddTransition().From(0).To(0).Read('b').Pop('B').Push("BB");

            pda.AddTransition().From(0).To(1).Read().Pop('Z').Push("Z");
            pda.AddTransition().From(0).To(1).Read().Pop('A').Push("A");
            pda.AddTransition().From(0).To(1).Read().Pop('B').Push("B");
            pda.AddTransition().From(0).To(1).Read('a').Pop('Z').Push("Z");
            pda.AddTransition().From(0).To(1).Read('a').Pop('A').Push("A");
            pda.AddTransition().From(0).To(1).Read('a').Pop('B').Push("B");
            pda.AddTransition().From(0).To(1).Read('b').Pop('Z').Push("Z");
            pda.AddTransition().From(0).To(1).Read('b').Pop('A').Push("A");
            pda.AddTransition().From(0).To(1).Read('b').Pop('B').Push("B");

            pda.AddTransition().From(1).To(1).Read('a').Pop('A').Push();
            pda.AddTransition().From(1).To(1).Read('b').Pop('B').Push();
            pda.AddTransition().From(1).To(1).Read().Pop('Z').Push();

            pda.CreateRunner();

            var path = DirectSimulationRunner <char, char> .RunSimulation(pda, "abbababba".ToCharArray());

            var act = path.ToXml();

            var         reader    = new StreamReader(@"..\..\..\TestPDL\PDATest\XmlPath.xml");
            XmlDocument expXmlDoc = new XmlDocument();

            expXmlDoc.Load(reader);
            XDocument xDoc = XDocument.Load(new XmlNodeReader(expXmlDoc));
            var       exp  = xDoc.Root;

            Assert.IsTrue(XNode.DeepEquals(exp, act));
        }