SnarkNews Summer Series - 2008
Round 2
Задачи [A] [B] [C] [D] [E] [F]

Задача E. URL

Входной файл: input.txt

Выходной файл: output.txt

Ограничение по времени: 2 сек.


Для разработки своего браузера, встроенного в BIOS, компания «HangUp Computing» заказала модуль работы с упрощенным синтаксисом записи URL, который сводится к следующему:

protocolп‚І://п‚Іhost[п‚І:п‚Іport][п‚І/п‚Іpath]

Здесь:

Protocol – всегда один из http, ftp или gopher.

Host – строка, состоящая из букв (a-z, A-Z), цифр (0-9), точек (.) или минусов(-).

Port – положительное натуральное число, меньшее чем 65536.

Path – строка символов, не содержащая пробелов.

Квадратные скобки [] означают, что заключенная в них строка является необязательной. В двойные апострофы заключены терминальные символы.

Примеры URL:

http://www.mail.ru/spam

ftp://acm.baylor.edu:1234/pub/staff/mr-p

gopher://veryold.edu


Требуется написать программу, которая выполняет грамматический разбор URL на его компоненты.

Формат входного файла:

Входной файл начинается со строки, содержащей единственное натуральное N, количество URL во входном файле. Следующие N строк содержат по одному URL в строке в формате описанном выше. URL состоит максимум из 60 символов каждый.

Формат выходного файла:

Для каждого URL в выходной файл выводится пять строк. В первой строке указывается URL, затем через один пробел #, затем ещё через один пробел порядковый номер URL во входном файле без незначащих нулей.

Во второй строке сначала выводится «Protocol = », где равно выделяется пробелами, затем название протокола: ftp, http или gopher.

В третьей строке выводится «Host = », где равно выделяется пробелами, затем - соответствующая часть URL.

В четвертой строке выводится «Port = », где равно выделяется пробелами, затем - соответствующая часть URL или фраза <default>, если эта часть отсутствует.

В пятой строке выводится «Path = », где равно выделяется пробелами, затем - соответствующая часть URL или фраза <default>, если эта часть отсутствует.

В выходном файле разбор одного URL от другого должен отделяться пустой строкой.

Пример входных данных:

3

ftp://acm.baylor.edu:1234/pub/staff/mr-p

http://www.informatik.acm.de/acm

gopher://veryold.edu

Пример выходных данных:

URL # 1

Protocol = ftp

Host = acm.baylor.edu

Port = 1234

Path = pub/staff/mr-p


URL # 2

Protocol = http

Host = www.informatik.acm.de

Port = <default>

Path = acm


URL # 3

Protocol = gopher

Host = veryold.edu

Port = <default>

Path = <default>