Вчера весь день ломал себе черепную коробку об матчинг юникодных символов парсековыми 'char', 'oneOf' и 'noneOf' в условиях парсера над ByteString-ом. То юникоды не матчились (если делать внаглую), то аутпут бился (если делать Stream над ByteString с UTF8.uncons). И так и эдак выходило криво.
Сейчас вот утром встал, перепилил всё на Data.Text буквально за 15 минут — код сократился процентов на 15-20, глюки исчезли. волосы стали мягкими и шелковистыми.
Такие дела. Надо было это вчера делать, может сны бы снились не такие мрачные.
P.S. Что характерно, импортер на питоне и реглуярках раобтает раз в 100 (буквально) медленней, чем хаскельный на парсеке, который я запускаю через runghc (пока пилю).
ну дак - сложно придумать что-то, что тормозит сильнее питона
ОтветитьУдалитьРуби
ОтветитьУдалитьты главное работу найди на хаскеле
ОтветитьУдалитьТак уже.
ОтветитьУдалитьА что у описанного способа те же возможности что и у "регулярок" при такой производительности ? Плюс к этому - регулярки это наверное не самый быстрый способ решать эту задачу.
ОтветитьУдалитьНу, учитывая, что регулярками описываются только регулярные языки, то да, у парсека больше возможностей.
ОтветитьУдалитьВы для какой цели петон парсите, если не секрет? Часом не конкурент pylint?
ОтветитьУдалитьНет, я не парсю питон %) Если бы и стал, то явно не регулярками.
ОтветитьУдалитьЯ переношу архив одной газеты в новый формат. Просто архивные статьи абы как сделаны, поэтому приходится восстанавливать структурированную инфу буквально по крупицам отовсюду.