![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Когда-то у меня был коллега Дивьеш, и он пытался решить задачу парсинга HTML путем применения массива регексов, типа в цикле. Если вы знакомы с иерархией языков, то в курсе, что как ты ни соединяй регексы, а кс-грамматика не получится.
Год я уламывал Дивьеша изучить парсеры-комбинаторы, и наконец он изучил, у него случились просветление и епифания, и с тех пор он всем стал втюхивать парсеры с комбинаторами.
Сегодня смотрю на код на работе, батюшки, массив регексов. Для парсинга документов. А, знакомая картина!!! Автора зовут Нараян, он уже у нас не работает. Образование - пиэчди по компьютерным наукам из University of Texas at Austin.
Я однажды интервьюировал в Гугле кандидатку оттуда. У нее пиэчди по компьютерным наукам, и я не стал ее спрашивать, может ли она написать регекс для проверки скобок в выражениях, но у нее было "implemented binary search on the internet", и я ее спросил, как это (делит интернет пополам, как физики при ловле льва в пустыне?). Оказывается, она искала в интернете двоичные файлы.
Вот такая херня, коллеги.
no subject
Date: 2021-12-14 05:11 pm (UTC)Но логи это не язык.
no subject
Date: 2021-12-14 05:15 pm (UTC)no subject
Date: 2021-12-14 05:15 pm (UTC)Fast and efficient for conformant HTML, slow and perfect for those that failed the fast and efficient.
no subject
Date: 2021-12-14 05:40 pm (UTC)no subject
Date: 2021-12-14 05:47 pm (UTC)What would you do with
<div>
inside<div>
?no subject
Date: 2021-12-14 05:47 pm (UTC)Логи разве не на регулярном языке пишутся?
no subject
Date: 2021-12-14 05:50 pm (UTC)no subject
Date: 2021-12-14 05:50 pm (UTC)Мне надо было из почты доставать одно единственное слово, а форматов сообщений (автоматических) было несколько. Ну для каждого формата получался свой регэксп. А как надо было? Где почитать?
no subject
Date: 2021-12-14 06:04 pm (UTC)no subject
Date: 2021-12-14 06:35 pm (UTC)Все зависит от сложности языка.
no subject
Date: 2021-12-14 06:37 pm (UTC)no subject
Date: 2021-12-14 06:48 pm (UTC)Я о сложности языка выражений. Вы ж не парсите структуру фраз, а просто проверяете наличие одного из слов, так? Это регулярный язык.
no subject
Date: 2021-12-14 06:57 pm (UTC)Получалось как-то так:
"Please note that the following employee has left[^\n]+([^()]+)[^)]+\) Manager"
Но это не суть важно, не думаю что есть смысл вникать в конкретную задачу, просто укажите куда идти и что почитать по этому поводу, если не сложно.
no subject
Date: 2021-12-14 07:25 pm (UTC)no subject
Date: 2021-12-14 07:25 pm (UTC)Ну вот мои слайды (там и линки есть в конце) Регулярные языки КС языки и прочее
no subject
Date: 2021-12-14 07:27 pm (UTC)Готовые решения не годятся для malformed HTML. В нашем случае полезная информация вполне могла сидеть в meta. Кроме того, у нас парсер был специализированный. Нам нужна была сущность, а не форма. Например, таблицу можно разными способами нарисовать. А нам нужно было понять, что это таблица и превратить в плоские проперти. Ну и т.д.
Короче, готовых решений нестандартных задач не существует.
no subject
Date: 2021-12-14 07:27 pm (UTC)no subject
Date: 2021-12-14 07:28 pm (UTC)no subject
Date: 2021-12-14 07:32 pm (UTC)no subject
Date: 2021-12-14 07:32 pm (UTC)no subject
Date: 2021-12-14 07:37 pm (UTC)no subject
Date: 2021-12-14 07:38 pm (UTC)no subject
Date: 2021-12-14 07:40 pm (UTC)no subject
Date: 2021-12-14 07:45 pm (UTC)Кстати да.
Я когда-то сначала переводил на doggy English, а потом уже...