3 Codage d'un automate
On peut coder le programme pretty-printer par un automate.
Pour ce faire, vous pouvez vous inspirez du programme suivant : on
écrit un filtre qui supprime les espaces ou les tabulations en début
de chaque ligne. L'automate utilisé comporte deux états et des
transitions entre ces deux états :
#include <stdio.h>
#include <stdlib.h>
int
main()
{
int c;
enum {ETAT_DBT_LIGNE, ETAT_NORMAL } etat = ETAT_DBT_LIGNE;
while ((c=getchar()) != EOF) {
switch (etat) {
case ETAT_DBT_LIGNE:
switch (c) {
case ' ':
case '\t':
break;
default:
putchar(c);
etat = ETAT_NORMAL;
break;
}
break;
case ETAT_NORMAL:
switch (c) {
case '\n':
putchar('\n');
etat=ETAT_DBT_LIGNE;
break;
default :
putchar(c);
break;
}
}
}
exit(EXIT_SUCCESS);
}