Fix bug in construct_nfa
Intermediate final states were being left in by add_fsa(); we always want to mark the added FSA's final state as non-final.
This commit is contained in:
@@ -47,11 +47,28 @@ static void test_arbitrary_regex_1(void)
|
||||
fsa_free(&dfa);
|
||||
}
|
||||
|
||||
static void test_arbitrary_regex_2(void)
|
||||
{
|
||||
fsa_t dfa;
|
||||
const char *regex = "(l|wh)?[aeiou]+";
|
||||
const bool success = compile(regex, strlen(regex), &dfa);
|
||||
ASSERT_TRUE(success);
|
||||
ASSERT_ACCEPTS(&dfa, "laaaa");
|
||||
ASSERT_ACCEPTS(&dfa, "eeeee");
|
||||
ASSERT_ACCEPTS(&dfa, "iii");
|
||||
ASSERT_ACCEPTS(&dfa, "whooo");
|
||||
ASSERT_ACCEPTS(&dfa, "u");
|
||||
ASSERT_REJECTS(&dfa, "wh");
|
||||
ASSERT_REJECTS(&dfa, "lxxx");
|
||||
fsa_free(&dfa);
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
TESTING_BEGIN();
|
||||
test_foo_or_bar_regex();
|
||||
test_even_number_of_Is_regex();
|
||||
test_arbitrary_regex_1();
|
||||
test_arbitrary_regex_2();
|
||||
return TESTING_END();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user