예제 #1
0
        public bool Test(string regex, string word)
        {
            var parser   = new RegularExpressionASTBuilder(regex);
            var exprTree = parser.BuildExpressionTree();

            var regLanBuilder = new RegularLanguageBuilder(exprTree);
            var lang          = regLanBuilder.BuildLanguage();
            var recognizer    = new LanguageRecognizer <RegularLanguageState>(lang);

            return(recognizer.Accepts(word));
        }
        public void Test(TestCase testCase)
        {
            const int attempts   = 1000;
            var       builder    = new RegularLanguageBuilder(testCase.Root);
            var       dfa        = builder.BuildLanguage();
            var       recognizer = new LanguageRecognizer <RegularLanguageState>(dfa);

            for (int i = 0; i < attempts; i++)
            {
                string word = testCase.InLanguage();
                Assert.IsTrue(recognizer.Accepts(word), "Word {0} is NOT in language, but should be", word);
            }
            for (int i = 0; i < attempts; i++)
            {
                string word = testCase.Mangler(testCase.InLanguage());
                Assert.IsFalse(recognizer.Accepts(word), "Word {0} is in language, but should NOT be", word);
            }
        }