• # Un ROT13 en flex !!!

    Posté par . En réponse au journal Flex mon ami !. Évalué à 3.

    Bien sûr, c'est pour le fun (et pas portable, cf. les "+13" et "-13"), mais bon, assez agréable et vite codé :
    %option noyywrap
    %option case-insensitive
    %option warn
    %option nounput

    %{
    /* #define YY_MAIN (0) */
    #include <stdio.h>
    #include <stdlib.h>

    %}

    %s COMMENT

    %%
    [A-Ma-m] { fprintf(stdout,"%c", (char)(yytext[0]+13) ) ; }
    [N-Zn-z] { fprintf(stdout,"%c", (char)(yytext[0]-13) ) ; }
    %%

    int main( int argc, char * argv[] )
    {
    if (argc > 1) {
    yyin = fopen ( argv[1], "r" ) ;
    } else {
    yyin = stdin ;
    }

    yylex () ;

    if (argc > 1) {
    fclose ( yyin ) ;
    }

    return( 0 ) ;
    }

    On compile avec : flex -orot13.c rot13.lex
    puis gcc sur rot13.c