Testo
Scrivere le definizioni regolari ed il corrispondente programma JFLEX per riconoscere un sottoinsieme degli URL definiti da HTTP. Tale sottoinsieme deve comprendere:
-Il riconoscimento di più di uno schema (quindi http:, ftp:, gopher: e simili).
-I domini espressi come nomi (ad es. www.polito.it) o come indirizzi IP (ad es. 130.192.4.4).
-L’uso di porte differenti da quella di default per lo schema corrente (dominio seguito da ‘:’ e dal numero della porta alternativa).
-L’uso di ancore all’interno di file HTML (nome del file seguito da ‘#’ e dal nome dell’ancora).
-Sequenze di escape (cioè il carattere ‘%’ seguito da una coppia di cifre esadecimali) in qualsiasi posizione.
Esempi
-http://www.miosito.it/file.html
-ftp://10.9.9.71/prova.zip
-http://altro.sito.com/%7Eutente/index.html#rif33
-ninth://news.sito.ch:8181/data/
Soluzione:
%%
%class e2
%standalone
url = ({protocol})({ip}|{domain})({port})?({path})*(\#{alpha}+)?
path = (\/{item})+(\/)?
port = \:{digit}{1,5}
domain = {alpha}+(\.{alpha}+)*
ip = {digit}{1,3}(\.{digit}{1,3}){3}
protocol = {letter}*\:\/\/
item = ({alpha}|{hex})(({alpha}|{hex})|((\.)+({alpha}|{hex})))*
hex = (\%[0-9A-E][0-9A-E])
alpha = ({letter}|{digit})
letter = [a-zA-Z]
digit = [0-9]
%%
{url} { System.out.println("Trovato: " + yytext()); }
| < Prec. | Succ. > |
|---|






