writes a C program to recognize strings under the rule: ( a|b ) * a+b+c * #include < stdbool.h > #include < stdio.h > #include < string.h > enum my_dfa { S0, S4, P0, P1, err }; struct transition { enum my_dfa init_state , next_state ; char match; }; enum my_dfa final_states [] = {S4, P1}; int final_states_count = 2; bool is_final_state ( enum my_dfa state) { for ( int i = 0; i < final_states_count ; i ++) if ( final_states [ i ] == state) return true; return false; } struct transition transitions[] = { {S0, P0, 'a'}, {S0, S0, 'b'}, {S4, S4, 'c'}, {P0, P0, 'a'}, {P0, P1, 'b'}, {P1, P0, 'a'}, {P1, P1, 'b'}, {P1, S4, 'c'} };