%% %include Jflex.include SOUS_MOT = "mot" | "pass" | "666" | "qwer" | "azer" SPACE = [ \t] CTRL = [\x00-\x08\x11-\x1F\x7F] // [:cntrl:] - \t - \n ASCII8 = [^\x00-\x7F] NO_MAJ = [^A-Z\n] NO_MIN = [^a-z\n] NO_DIGIT = [^0-9\n] NO_PUNCT = [^\p{Punctuation}\n] END_NUM = {NO_DIGIT}* [0-9]+ START_NUM = [0-9]+ {NO_DIGIT}* %% ^ "quit" $ { return 0; } /* soft exit */ ^ .* {SOUS_MOT} .* $ { ECHO("Sous mot trop facile"); } ^ .* {SPACE} .* $ { ECHO("Contient un blanc"); } ^ .* {CTRL} .* $ { ECHO("Contient des car. de controle"); } ^ .* {ASCII8} .* $ { ECHO("Contient des car. 8bits"); } ^ {NO_MAJ}+ $ { ECHO("Pas de Majuscule"); } ^ {NO_MIN}+ $ { ECHO("Pas de Mimuscule"); } ^ {NO_DIGIT}+ $ { ECHO("Pas de Chiffre"); } ^ {NO_PUNCT}+ $ { ECHO("Pas de Ponctuation"); } ^ {END_NUM} $ { ECHO("Pas de chiffre non terminal"); } ^ {START_NUM} $ { ECHO("Pas de chiffre non initial"); } //^ .{1,5} $ { ECHO("Trop court"); } /* danger! taille automate */ //^ .{16} .* $ { ECHO("Trop long"); } /* danger! taille automate */ ^ .+ $ { if (yylength() < 6 ) ECHO("Trop Court"); else if (yylength() > 15 ) ECHO("Trop Long"); else ECHO("OK"); } \R { ECHO(); } /* just for display */ [^] { WARN("Invalid char."); } /* just in case */