No longer set state zero to be final in fsa_init()

This commit is contained in:
Camden Dixie O'Brien 2024-10-29 13:14:10 +00:00
parent d35fa4e9da
commit 730ec80220
3 changed files with 6 additions and 4 deletions

View File

@ -118,6 +118,7 @@ static void construct_base(fsa_t *out, int symbol)
const int id = fsa_add_state(out);
fsa_add_rule(out, id, out->initial, symbol);
out->initial = id;
out->states[0].final = true;
}
static void construct_star(fsa_t *out)
@ -186,6 +187,7 @@ static void construct_union(fsa_t *f, const fsa_t *o)
memcpy(&g, f, sizeof(fsa_t));
fsa_init(f);
f->states[0].final = true;
f->initial = fsa_add_state(f);
int init, final;

View File

@ -19,7 +19,7 @@ void fsa_init(fsa_t *fsa)
assert(NULL != fsa->states);
fsa->initial = fsa_add_state(fsa);
fsa->states[fsa->initial].final = true;
fsa->states[fsa->initial].final = false;
}
void fsa_free(const fsa_t *fsa)

View File

@ -30,11 +30,11 @@ static void new_fsa_initial_state_has_no_rules(void)
fsa_free(&fsa);
}
static void new_fsa_initial_state_is_final(void)
static void new_fsa_initial_state_is_not_final(void)
{
fsa_t fsa;
fsa_init(&fsa);
ASSERT_TRUE(fsa.states[fsa.initial].final);
ASSERT_FALSE(fsa.states[fsa.initial].final);
fsa_free(&fsa);
}
@ -101,7 +101,7 @@ int main(void)
new_fsa_has_single_state_with_no_rules();
new_fsa_has_initial_state_zero();
new_fsa_initial_state_has_no_rules();
new_fsa_initial_state_is_final();
new_fsa_initial_state_is_not_final();
adding_state_increases_count();
added_state_is_not_final();
added_state_has_no_rules();