private static void TestNdfaToDfa() { Automata <string> testNdfa = TestAutomata.ndfaToDfaTest(); Console.WriteLine("testNdfa is dfa? " + testNdfa.IsDfa()); Console.WriteLine("-----------------------------------------"); testNdfa.PrintTransitions(); Console.WriteLine("-----------------------------------------"); Console.WriteLine("StartStatesIn NDFA: "); foreach (string startState in testNdfa.StartStates) { Console.WriteLine(startState); } Console.WriteLine("-----------------------------------------"); Console.WriteLine("EndStates NDFA: "); foreach (string endState in testNdfa.FinalStates) { Console.WriteLine(endState); } Console.WriteLine("-----------------------------------------"); Console.WriteLine("String {0} is a {1} string for testNdfa.", NDFA_TO_DFA_VALID_1, testNdfa.IsStringAcceptable(NDFA_TO_DFA_VALID_1) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for testNdfa.", NDFA_TO_DFA_VALID_2, testNdfa.IsStringAcceptable(NDFA_TO_DFA_VALID_2) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for testNdfa.", NDFA_TO_DFA_VALID_3, testNdfa.IsStringAcceptable(NDFA_TO_DFA_VALID_3) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for testNdfa.", NDFA_TO_DFA_VALID_4, testNdfa.IsStringAcceptable(NDFA_TO_DFA_VALID_4) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for testNdfa.", NDFA_TO_DFA_INVALID_1, testNdfa.IsStringAcceptable(NDFA_TO_DFA_INVALID_1) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for testNdfa.", NDFA_TO_DFA_INVALID_2, testNdfa.IsStringAcceptable(NDFA_TO_DFA_INVALID_2) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for testNdfa.", NDFA_TO_DFA_INVALID_3, testNdfa.IsStringAcceptable(NDFA_TO_DFA_INVALID_3) ? "valid" : "invalid"); Console.WriteLine("-----------------------------------------"); NdfaToDfa <string> converter = new NdfaToDfa <string>(); Automata <string> testNdfaDFA = converter.TransformNdfaIntoDfa(testNdfa); Console.WriteLine("testNdfaDFA is dfa? " + testNdfaDFA.IsDfa()); Console.WriteLine("-----------------------------------------"); testNdfaDFA.PrintTransitions(); Console.WriteLine("-----------------------------------------"); foreach (string state in testNdfaDFA.StartStates) { Console.WriteLine(state); } Console.WriteLine("-----------------------------------------"); foreach (string state in testNdfaDFA.FinalStates) { Console.WriteLine(state); } Console.WriteLine("-----------------------------------------"); Console.WriteLine("And the same strings as befor in the DFA:"); Console.WriteLine(); Console.WriteLine("String {0} is a {1} string for testNdfaDFA.", NDFA_TO_DFA_VALID_1, testNdfaDFA.IsStringAcceptable(NDFA_TO_DFA_VALID_1) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for testNdfaDFA.", NDFA_TO_DFA_VALID_2, testNdfaDFA.IsStringAcceptable(NDFA_TO_DFA_VALID_2) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for testNdfaDFA.", NDFA_TO_DFA_VALID_3, testNdfaDFA.IsStringAcceptable(NDFA_TO_DFA_VALID_3) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for testNdfaDFA.", NDFA_TO_DFA_VALID_4, testNdfaDFA.IsStringAcceptable(NDFA_TO_DFA_VALID_4) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for testNdfaDFA.", NDFA_TO_DFA_INVALID_1, testNdfaDFA.IsStringAcceptable(NDFA_TO_DFA_INVALID_1) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for testNdfaDFA.", NDFA_TO_DFA_INVALID_2, testNdfaDFA.IsStringAcceptable(NDFA_TO_DFA_INVALID_2) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for testNdfaDFA.", NDFA_TO_DFA_INVALID_3, testNdfaDFA.IsStringAcceptable(NDFA_TO_DFA_INVALID_3) ? "valid" : "invalid"); Console.WriteLine("-----------------------------------------"); }
private static void TestNDFAClass() { Automata <String> NDFA1 = TestAutomata.getExampleSlide8Lesson2(); Automata <String> NDFA2 = TestAutomata.getExampleSlide14Lesson2(); NDFA1.PrintTransitions(); Console.WriteLine("-----------------------------------------"); Console.WriteLine("NDFA1 is dfa? " + NDFA1.IsDfa()); Console.WriteLine("-----------------------------------------"); foreach (string state in NDFA1.StartStates) { Console.WriteLine(state); } Console.WriteLine("-----------------------------------------"); foreach (string state in NDFA1.FinalStates) { Console.WriteLine(state); } Console.WriteLine("-----------------------------------------"); Console.WriteLine("String {0} is a {1} string for Auto1.", VALID_STRING_1, NDFA1.IsStringAcceptable(VALID_STRING_1) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for Auto1.", INVALID_STRING_0, NDFA1.IsStringAcceptable(INVALID_STRING_0) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for Auto1.", VALID_STRING_2, NDFA1.IsStringAcceptable(VALID_STRING_2) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for Auto1.", INVALID_STRING_1, NDFA1.IsStringAcceptable(INVALID_STRING_1) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for Auto1.", INVALID_STRING_2, NDFA1.IsStringAcceptable(INVALID_STRING_2) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for Auto1.", INVALID_STRING_3, NDFA1.IsStringAcceptable(INVALID_STRING_3) ? "valid" : "invalid"); Console.WriteLine("-----------------------------------------"); Console.WriteLine("Generate a string of length 9. Resulting string = " + NDFA1.GenerateLanguageOfGivenLength(9)); Console.WriteLine("-----------------------------------------"); NDFA2.PrintTransitions(); Console.WriteLine("NDFA2 is dfa? " + NDFA2.IsDfa()); Console.WriteLine("-----------------------------------------"); }
private static void TestRegExAndThompson() { RegExpTest ret = new RegExpTest(); ret.testLanguage(); ret.testToString(); RegExp regExp1 = new RegExp("baa"); RegExp regExp2 = new RegExp("aba"); RegExp regExp3 = new RegExp("bb"); RegExp oneOrTwo = regExp1.Or(regExp2); RegExp orStar = oneOrTwo.Star(); RegExp orStarDotThree = orStar.Dot(regExp3); RegExp orStarDotThreePlus = orStarDotThree.Plus(); Console.WriteLine("-----------------------------------------"); Console.WriteLine("And conversion by use of the thompson construction:"); Console.WriteLine("-----------------------------------------"); ThompsonConstruction thompson = new ThompsonConstruction(); Automata <string> thompsonNDFA = thompson.GenerateNDFA(orStarDotThreePlus); Console.WriteLine("thompsonNDFA is dfa? " + thompsonNDFA.IsDfa()); Console.WriteLine("-----------------------------------------"); thompsonNDFA.PrintTransitions(); Console.WriteLine("-----------------------------------------"); foreach (string state in thompsonNDFA.StartStates) { Console.WriteLine(state); } Console.WriteLine("-----------------------------------------"); foreach (string state in thompsonNDFA.FinalStates) { Console.WriteLine(state); } Console.WriteLine("-----------------------------------------"); Console.WriteLine("String {0} is a {1} string for Auto3.", THOMPSON_TEST_1, thompsonNDFA.IsStringAcceptable(THOMPSON_TEST_1) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for Auto3.", THOMPSON_TEST_2, thompsonNDFA.IsStringAcceptable(THOMPSON_TEST_2) ? "valid" : "invalid"); Console.WriteLine("String {0} is a {1} string for Auto3.", THOMPSON_TEST_3, thompsonNDFA.IsStringAcceptable(THOMPSON_TEST_3) ? "valid" : "invalid"); Console.WriteLine("-----------------------------------------"); }