Помнится Colorer вылетал на очень длинных строках. В трекере
SourceForge было много примеров кода - diff, SQL - там ещё что-то.
Игорь упоминал, что это из-за проблем со стеком или из-за парсинга
регекспов. Напомните плз., это уже пофиксили, или нет?
Я чего вообще решил написать? Google выложил C++ версию библиотеки для
работы с регекспами [1].
* thread-friendly
* linear search time
* small fixed C++ stack
Эти преимущества достигаются за счёт того, что движок RE2 построен на
основе теории автоматов [4] в противоположность традиционным
библиотекам с обратным поиском (backtracking engine) в Perl, Python,
PHP etc. Разработчикам также пришлось выбросить обратные ссылки
(backreferences) и generalized assertions (что бы это не значило).
Так вот мне интересно.
На каком принципе построен движок Colorer?
Может ли RE2 решить проблемы с вылетами и переполнением стека?
Насколько быстрее или медленее движок RE2, Colorer и PCRE?
Насколько трудно сделать движки взаимозаменяемыми?
Выживет ли Colorer без backreferences и generalized assertions?
Синтаксис вполне себе совместим с Colorer. См. [2] и [3]
Есть ещё упоминания движка irregexp, если backreferences всё же необходимы.
[1] http://code.google.com/p/re2/
[2] http://code.google.com/p/re2/wiki/Syntax
[3] http://colorer.sourceforge.net/hrc-ref/#hrcre
[4] http://ru.wikipedia.org/wiki/Теория_автоматов
[5] http://en.wikipedia.org/wiki/Regexp#Implementations_and_running_times
[6] http://blog.chromium.org/2009/02/irregexp-google-chromes-new-regexp.html
--
anatoly t.
> Помнится Colorer вылетал на очень длинных строках. В трекере
> SourceForge было много примеров кода - diff, SQL - там ещё что-то.
> Игорь упоминал, что это из-за проблем со стеком или из-за парсинга
> регекспов. Напомните плз., это уже пофиксили, или нет?
нет, это не пофиксено. на длинных строках ( в зависимости от языка, от
1000и более символов в строке) идет переполнение стека.
про остальное не скажу...
--
С уважением,
Ctapmex mailto:cta...@gmail.com
Помнится Colorer вылетал на очень длинных строках. В трекере
SourceForge было много примеров кода - diff, SQL - там ещё что-то.
Игорь упоминал, что это из-за проблем со стеком или из-за парсинга
регекспов. Напомните плз., это уже пофиксили, или нет?
Я чего вообще решил написать? Google выложил C++ версию библиотеки для
работы с регекспами [1].
Эти преимущества достигаются за счёт того, что движок RE2 построен на
основе теории автоматов [4] в противоположность традиционным
обратные ссылки (backreferences) и generalized assertions (что бы это не значило).
Так вот мне интересно.
На каком принципе построен движок Colorer?
Может ли RE2 решить проблемы с вылетами и переполнением стека?
Насколько быстрее или медленее движок RE2, Colorer и PCRE?
Насколько трудно сделать движки взаимозаменяемыми?
Выживет ли Colorer без backreferences и generalized assertions?