... va detto che, se lo scopo finale è giusto verificare un codice fiscale, si fa molto prima con una regex (seguita dai vari step di validazione delle varie componenti).![]()
... va detto che, se lo scopo finale è giusto verificare un codice fiscale, si fa molto prima con una regex (seguita dai vari step di validazione delle varie componenti).![]()
Ultima modifica di MItaly; 07-10-2013 a 21:36
Amaro C++, il gusto pieno dell'undefined behavior.
Per estrarre i vari pezzi la regex (in sintassi Perl/POSIX/...) sarebbe del tipo
La sintassi esatta per usarla dipende dalla libreria di regex che intendi usare (in C di base non c'è nulla di incluso; a seconda della piattaforma puoi usare le regex POSIX, pcre, ...), comunque dopo che hai applicato la regex al tuo input dovresti ottenere subito se la stringa corrisponde al pattern e, in questo caso, ad ogni gruppo di cattura corrisponde un "pezzo" del codice fiscale.codice:([A-Z]{3})([A-Z]{3})([0-9]{2})([A-Z])([0-9]{2})([A-Z][0-9]{3})([A-Z])
Ultima modifica di MItaly; 07-10-2013 a 22:02
Amaro C++, il gusto pieno dell'undefined behavior.
Certo, ma, a meno di non star scrivendo un compilatore o un interprete, nel 99% dei casi una regex basta e avanza (ed è meno problematica da integrare nel resto del programma e nel build system).
Sicuramente non scomoderei flex per fare il parsing di un codice fiscale; in un linguaggio come Perl o Python che include le regex nella sua libreria standard (o addirittura nel "core" del linguaggio) userei una regex, in C probabilmente scriverei il codice necessario a mano (visto che il codice fiscale ha una struttura estremamente semplice, e richiede comunque controlli manuali).
ciao,
in realtà sto andando oltre al codice fiscale; vista la "potenza" di tale generatore lo sfrutto per costruirmi un analizzatore sintattico per un linguaggio costituito da oltre 600 parole chiave, mi ci vorrà molto tempo.
Mi chiedevo se esistono già sorgenti flex per tutti i linguaggi, mi eviterebbe un sacco di lavoro.
grazie