Précédent Remonter Suivant

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);
}

Précédent Remonter Suivant