static void init_s4(rexdb_t *nfa)
{
- rexstate_t *s1 = rex_state_create(0, REX_STATETYPE_START);
+ rexstate_t *s0 = rex_state_create(0, REX_STATETYPE_NONE); /* Dummy state, not used */
+ rexstate_t *s1 = rex_state_create(1, REX_STATETYPE_START);
rexstate_t *s2 = rex_state_create(2, REX_STATETYPE_NONE);
rexstate_t *s3 = rex_state_create(3, REX_STATETYPE_ACCEPT);
rexstate_t *s4 = rex_state_create(4, REX_STATETYPE_NONE);
+ rex_db_insertstate(nfa, s0);
rex_db_insertstate(nfa, s1);
rex_db_insertstate(nfa, s2);
rex_db_insertstate(nfa, s3);
rex_state_addtransition_dst(s1, 'a', 'a', s2);
rex_state_addtransition_dst(s2, 'b', 'b', s3);
+ rex_state_addtransition_dst(s3, 'a', 'a', s2);
rex_state_addtransition_dst(s1, 'c', 'c', s4);
rex_state_addtransition_dst(s4, 'c', 'c', s3);
}
}
} else if (strcmp(argv[i], "-d") == 0) {
int j;
- rexdfa_t *dfa = rex_db_todfa(nfa, 1);
+ rexdb_t *dfadb = rex_db_createdfa(nfa, 1);
+ rexdfa_t *dfa = rex_db_todfa(dfadb, 1);
for (j = 0; j < dfa->nstates; j++) {
rex_dfa_dumpstate(dfa, j);
}
rex_dfa_destroy(dfa);
+ rex_db_destroy(dfadb);
} else if (strcmp(argv[i], "-ababb") == 0) {
init_ababb(nfa);
startstate = 0;
} else if (strcmp(argv[i], "-s4") == 0) {
init_s4(nfa);
- startstate = 0;
+ startstate = 1;
} else {
if (startstate < 0)
return 1;