Newsgroup: it.comp.lang.visual-basic
Titolo: [INFO] Regole di validazione sintassi Email

Ciao a tutti,
    vorrei sapere dove posso trovare un articolo che descriva quali sono le
regole per la validazione (della sola sintassi, e non dell'esistenza) di un
indirizzo email: caratteri consentiti, posizionamento dei caratteri (ad
esempio, se il punto puo' trovarsi prima e/o dopo della chiocciola, se si
possono inserire due punti consecutivi (..) etc. ).
Grazie a tutti,  Pascal

 writes:
P> Ciao a tutti,
P>     vorrei sapere dove posso trovare un articolo che descriva quali sono le
P> regole per la validazione (della sola sintassi, e non dell'esistenza) di un
P> indirizzo email: caratteri consentiti, posizionamento dei caratteri (ad
P> esempio, se il punto puo' trovarsi prima e/o dopo della chiocciola, se si
P> possono inserire due punti consecutivi (..) etc. ).
Fine della RFC821. Ecco l'estratto quello che ti interessa (BNF):
<mailbox> ::= <local-part> "@" <domain>
<local-part> ::= <dot-string> | <quoted-string>
<name> ::= <a> <ldh-str> <let-dig>
<ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
<let-dig> ::= <a> | <d>            <let-dig-hyp> ::= <a> | <d> | "-"
<dot-string> ::= <string> | <string> "." <dot-string>
<string> ::= <char> | <char> <string>
<quoted-string> ::=  """ <qtext> """
<qtext> ::=  "\" <x> | "\" <x> <qtext> | <q> | <q> <qtext>
<char> ::= <c> | "\" <x>
<dotnum> ::= <snum> "." <snum> "." <snum> "." <snum>
<number> ::= <d> | <d> <number>            
<CRLF> ::= <CR> <LF>
<CR> ::= the carriage return character (ASCII code 13)
<LF> ::= the line feed character (ASCII code 10)
<SP> ::= the space character (ASCII code 32)
<snum> ::= one, two, or three digits representing a decimal
          integer value in the range 0 through 255
<a> ::= any one of the 52 alphabetic characters A through Z
          in upper case and a through z in lower case
<c> ::= any one of the 128 ASCII characters, but not any
          <special> or <SP>
<d> ::= any one of the ten digits 0 through 9
<q> ::= any one of the 128 ASCII characters except <CR>,
          <LF>, quote ("), or backslash (\)
<x> ::= any one of the 128 ASCII characters (no exceptions)
<special> ::= "<" | ">" | "(" | ")" | "[" | "]" | "\" | "."
          | "," | ";" | ":" | "@"  """ | the control
          characters (ASCII codes 0 through 31 inclusive and
          127)
-- 
Gian Uberto| main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Lauri      |                        David Korn, 1987 ioccc best one liner 
(aka saint)|-------------------------------------------------------------------
em@ail: 
sa...@eng.it
 ( vedere X-nospam nello header - see X-nospam in header )

 ha scritto nel messaggio
news:uy9lah...@mail.eng.it...


è semplice ...
::= significa "è"
| significa "oppure"
... a te la traduzione ;=)
CIAO

Cosa vuol dire?
E' la notazione BNF. E' un linguaggio che serve a definire la sintassi 
dei linguaggi. Spiegazione parziale:
<mailbox> ::= <local-part> "@" <domain>
Significa: un indirizzo e-mail č composto da una parte locale, un 
simbolo "@" e un dominio.
<local-part> ::= <dot-string> | <quoted-string>
Significa: la parte locale č una stringa puntata o una stringa tra 
virgolette
E cosě via. Dove necessario (cioč troppo complicato per scriverlo in 
BNF), il BNF lascia il posto all'inglese, con frasi che descrivono 
quella particolare parte della sintassi
-- 
Nato nel vizio, morto nel supplizio
Nato nel peccato, ad entrare sia invitato

 
tipo l'identificazione di simboli non teminali con singoli caratteri o
stringhe costanti
in altri posti l'uso di questa notazione e' un po' una zappa sui piedi
perche' fa perdere il rigido ma preciso formalismo delle BNF.
piccola aggiunta una grammatica in BNF puo' essere convertita in codice
usando un  "parser discendente ricorsivo" ( "recursive descent parser" )
scritto in un qualsiasi linguaggio ( esistono anche appositi tool che
generano i parser ma tipicamente generano codice in C o C++ ( ma non in
VB , anche e accetto smentite )
una ricerca su google ti dovrebbe far trovare dei tutorial a tal
proposito.
il processo di scrittura del parser a partire dalla BNF e' praticamente
automatico.
se non fosse chiaro i <local-part> o <domain> indicano pezzi non
teminali della grammatica ovvero pezzi definiti oltre nella grammatica
stessa  
benvenuto nel mondo dei linguaggi formali.

 ha scritto nel
messaggio news:3BF24D45...@bussola.orientamento.unina.it...


 Non sei un programmatore, vero? No, non puoi esserlo...
Premesso che conosco la BNF e che non sono un programmatore (se non
occasionalmente, come si potrebbe definire uno sciatore colui che va a
sciare 3 domeniche all'anno), ma è poi così fondamentale per un
Programmatore (la maiuscola è voluta) la conoscenza di BNF, linguaggi
formali, metodi vari di calcolo della complessità, ecc. ?
Sono cosciente che più strumenti si possiedono meglio è, ma personalmente
ritengo si possa definire programmatore (anche, eventualmente, senza
iniziale maiuscola) chiunque sviluppi professionalmente software, dove
"professionalmente" va inteso nel senso di "con una metodologia ben
definita, qualunque essa sia" e "inserito nel mercato".
Cordiali saluti.

 writes:
HG> Premesso che conosco la BNF e che non sono un programmatore (se non
HG> occasionalmente, come si potrebbe definire uno sciatore colui che va a
HG> sciare 3 domeniche all'anno), ma è poi così fondamentale per un
HG> Programmatore (la maiuscola è voluta) la conoscenza di BNF, linguaggi
HG> formali, metodi vari di calcolo della complessità, ecc. ?
Se devi essere l'ultima ruota  del carro che prende un'analisi precisa
al  dettaglio,  segue  dei  patter  di programmazione  che  gli  hanno
insegnato (forse senza capirli applieno) allora si. 
Se devi  progettare un programma per  una persona che ripone  in te la
fiducia per  avere un buon  prodotto, il calcolo della  complessità ti
serve.
Le altre due cose sono  molto utili per capire quale strumento buttare
nel cesso nonostante il battage della casa madre.
HG> "professionalmente" va inteso nel senso di "con una metodologia ben
HG> definita, qualunque essa sia" e "inserito nel mercato".
A me  rompe che  la gente  in gamba venga  confusa con  gli scalzacani
nella categoria "programmatori".



Su questo non posso che dichiararmi d'accordo con te, ed è una cosa che vale
per qualunque mestiere o professione.
Io sostenevo soltanto che se uno realizza SW per vivere e lo fà in modo
organizzato, questo è un programmatore.
Poi si potrà disquisire se sia un buon programmatore o un pessimo
programmatore, ma la professione non credo che gliela si possa disconoscere
(a meno, e mi viene in mente solo ora, di legarla ad un apposito albo
professionale con opportuni requisiti e/o esami di ammissione. Ma d'altronde
continuano ad esistere ottimi e pessimi procuratori legali ...).
Ciao.