// Généré automatiquement à partir d'un automate reconnaissant le langage a. // Ensemble des états : {0, 1, 2} // État initiaux : {0} // États finaux : {1} // Transitions : // 0 -a-> 1 // 1 -a-> 2 // 2 -a-> 2 #include #include int main(void){ int c, numline = 0; char *line = NULL; size_t linecap = 0; ssize_t linelen; while ((linelen = getline(&line, &linecap, stdin)) > 0){ int state; numline++; state = 0; for (int k = 0; k < linelen; k++){ c = line[k]; switch (state){ case 0: switch (c){ case ('a'): state = 1; break; default: state = 0; break; } break; case 1: switch (c){ case ('a'): state = 2; break; default: state = 0; break; } break; case 2: switch (c){ case ('a'): state = 2; break; default: state = 0; break; } break; } if (false || state == 1 || state == 2){ fprintf(stdout, "%4d: ", numline); fwrite(line, linelen, 1, stdout); fflush(stdout); break; } } } }