• [^] # Re: Cinq minutes ou une vie

    Posté par . En réponse au lien Parce que les regex, ça va bien cinq minutes. Évalué à 3.

    Le but d'une regex est de valider des formats d'entrés typographique, la logique vient après.

    Vu que comme le dit 'OP, "ça va bien cinq minutes" (et que midi approche) :

    • On peut aussi ajouter du code dans la regex
    • Ou faire un post-traitement sur l'ast résultant de la la grammaire

    Juste à titre d'exemple :

    grammar rdate {
     rule TOP { 
     <year> <separator> <month> <separator> <day>
     { self.check(self.year,self.month,self.day,self.separator) }
     }
     token separator { '/' || '.' || '-' }
     token year { '-'? <[0..9]> ** 4 }
     token month { '0'<[0..9]> || '1'<[0..2]> }
     token day { '0'<[0..9]> || <[1..2]><[0..9]> || '3'<[0..1]> }
     method check($y,$m,$d,$s) {
     # Code de vérification ici
     }
    }
    class rdate-actions {
     # Code post-traitement ici.
    }
    

    La doc pour bien commencer est ici

    Bon app'