Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: парсинг таблиц маршрутизации  (Прочитано 5453 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист

ru
Offline Offline

« : 30-10-2007 19:18 » 

парсинг таблиц маршрутизации

даны таблицы маршрутизации операторов гтс

в форме:
строка названия таблицы определяемая тагом /^[0-9]\.[0-9]/
строки диапазонов адресов : /[0-9]{11}(-|\n\t;, )/
  что то вроде: 73431234567-73437654321

раньше для передачи данных программатору атс вполне хватало для обработки связки awk+sed+sort , тк крупные операторы гтс максимум, что могли отжечь - это по ошибке внести в таблицы маршрутизацию сотовых номеров ...

когда дело дошло до мелких, то они по всей видимости предпочитают работать с диапазонами вручную: каждый раз встречаются пропуски цифр или опечатки ...

требуется сделать базовую проверку каждого диапазона адресов перед парсингом:
1 исключить пропуск цифр: каждый диапазон должен быть вида: /7343[23][0-9]{6}-7343[23][0-9]{6}[; ,\n]/
2 отсеять мусор в отдельный файл с последующей его проверкой на наличие телефонов или заголовков таблиц
3 слить пересекающиеся диапазоны в таблице в один
4 заменить пробелы в подстроке ограниченной () на _
5 проверить все таблицы на отсутствие номеров принадлежащих сразу 2м диапазонам


насколько перл подойдет для этой задачи?

посмотрел его описание:
 не понравились динамические типы: в прошлом обжигался на неявное преобразование "000" в 0 - насколько это критично для перла?
 понравилось более удобные команды организации ветвлений

что есть из парсеров общего назначения:
- со строгими типами
- целочисленной арифметикой без переполнения
- компиляцией кода
- ассоциативными списками со временем поиска элемента = 1
- наличием списка списков $table->$number->$data  ( для работы с произвольным числом таблиц становящимся известным на этапе парсинга )
- возможностью реализации cgi ( планы на выходные )
- автоматическим выделением памяти
- изучаемое в 2-3 дня

может стоит вместо перла изучить питон или руби?
Записан

1n c0de we trust
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 30-10-2007 20:28 » 

насколько перл подойдет для этой задачи?
Вполне подойдет.

Цитата
посмотрел его описание:
 не понравились динамические типы: в прошлом обжигался на неявное преобразование "000" в 0 - насколько это критично для перла?
Преобразование происходит только при работе с операторами для других типов. Операторы сравнения для чисел и строк вообще разные.

'000' == 0 # '000' преобразуется в число и потому естт равенство
'000' ne 0 # 0 преобразуется в строку и потому нет равенства
'000' ne '0' # строки сравниваются строковым оператором - равенства тут нет

Об преобразованиях я писал тут: https://club.shelek.ru/viewart.php?id=283#post_p1-1-1

Цитата
что есть из парсеров общего назначения:
- со строгими типами
- целочисленной арифметикой без переполнения
- компиляцией кода
- ассоциативными списками со временем поиска элемента = 1
- наличием списка списков $table->$number->$data  ( для работы с произвольным числом таблиц становящимся известным на этапе парсинга )
- возможностью реализации cgi ( планы на выходные )
- автоматическим выделением памяти
- изучаемое в 2-3 дня
Время поиска не бывает постоянным. Если есть индексация типа бинарного дерева, то скорость зависит от размеров этого дерева. В perl есть индексация. Ассоциативные массивы в нем зовутся хешами (hash), что в переводе означает "мешанина", т.к. выборка упорядочена не по порядку создания элементов, а по расположению их в бинарном дереве.

Первое и последнее - единственное, что к perl не относится.
Типизация у него строгая, но у объектов, а не имен - скаляр может по ходу выполнения ссылаться на объекты разных типов. Преобразования типов выполняются соотв. операторами, которые можно перегружать (т.е. это не само собой происходит).
Изучить быстро можно, но я бы назвал это поверхностым обзором. В принципе, это аналогично и с любым другим языком.

Цитата
может стоит вместо перла изучить питон или руби?
Можно, но легче от этого не станет. Лучше perl, как специально заточенный под тексты и имеющий хорошую скорость выполнения.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines