Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
RE2 Engine
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  3 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
anatoly techtonik  
View profile   Translate to Translated (View Original)
 More options Mar 16 2010, 11:22 am
From: anatoly techtonik <techto...@gmail.com>
Date: Tue, 16 Mar 2010 17:22:15 +0200
Local: Tues, Mar 16 2010 11:22 am
Subject: RE2 Engine
Всем привет,

Помнится 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.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
ctap...@gmail.com  
View profile   Translate to Translated (View Original)
 More options Mar 16 2010, 11:41 am
From: ctap...@gmail.com
Date: Tue, 16 Mar 2010 20:41:33 +0500
Local: Tues, Mar 16 2010 11:41 am
Subject: Re: RE2 Engine
привет

> Помнится Colorer вылетал на очень длинных строках. В трекере
> SourceForge было много примеров кода - diff, SQL - там ещё что-то.
> Игорь упоминал, что это из-за проблем со стеком или из-за парсинга
> регекспов. Напомните плз., это уже пофиксили, или нет?

нет, это не пофиксено. на длинных строках ( в зависимости от языка, от
1000и более символов в строке) идет переполнение стека.
про остальное не скажу...

--
С уважением,
 Ctapmex                          mailto:ctap...@gmail.com


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Igor Russkih  
View profile   Translate to Translated (View Original)
 More options Mar 17 2010, 1:49 am
From: Igor Russkih <iruss...@gmail.com>
Date: Wed, 17 Mar 2010 08:49:08 +0300
Local: Wed, Mar 17 2010 1:49 am
Subject: Re: RE2 Engine

> Помнится Colorer вылетал на очень длинных строках. В трекере
> SourceForge было много примеров кода - diff, SQL - там ещё что-то.
> Игорь упоминал, что это из-за проблем со стеком или из-за парсинга
> регекспов. Напомните плз., это уже пофиксили, или нет?

Все правильно, ничего не пофикшено.

Но здесь две баги, которые стоит различать: переполнение стека из за движка
РВ, и переполнение же - но из за движка парсера схем (основного парсера). Он
тоже на рекурсии написан.

> Я чего вообще решил написать? Google выложил C++ версию библиотеки для
> работы с регекспами [1].
> Эти преимущества достигаются за счёт того, что движок RE2 построен на
> основе теории автоматов [4] в противоположность традиционным

Ну, имхо это не первая либа РВ на голых автоматах. Но у них проблемы. Они
работают супер быстро - потому что детерменированы, но именно из за этого
теряют кучу всяких вкусностей.

обратные ссылки (backreferences) и generalized assertions (что бы это не

> значило).

> Это ссылки на группы в самом РВ - \1 \2 и т. д.

В HRC повсеместно используются.
generalized assertions - это похоже look-ahead/look-backward - тоже в
колорере не редкость..

> Так вот мне интересно.
> На каком принципе построен движок Colorer?

Может ли RE2 решить проблемы с вылетами и переполнением стека?
> Насколько быстрее или медленее движок RE2, Colorer и PCRE?

Движок колорера довольно прост, но не думаю что быстр.
В PCRE на сколько я знаю куча целевых оптимизаций под конкретные операторы -
в том числе из за этого он относительно быстр.

Но опять же - быстрота в РВ - понятие относительное. Каждый движок заточен
под свое. Если использовать кучу расширений а ля perl/pcre -
детерменированностью и не пахнет, а значит в теории для любого такого движка
можно придумать РВ на котором он будет работать очень медленно..

Еще один аргумент - РВ в парсинге в колорере, если я правильно помню,
занимают около 30% времени (в среднем - от языка конечно же зависит). Вот и
считай - даже если движок в среднем в два раза быстрее будет работать - это
даст лишь 15% прирост...

> Насколько трудно сделать движки взаимозаменяемыми?
> Выживет ли Colorer без  backreferences и generalized assertions?

В случае колорера - сложно. Куча спец-операторов именно colorer-specific.
Т.е. в любом случае беря другой движок, придется его дотачивать подо все
колореровские операторы. И после этого не факт что будет полная
совместимость.
В общем работа кропотливая, и не факт что увенчается успехом. Более того,
проблемы вылетов целиком она не решит... Останутся переполнения основного
парсера (хотя это довольно редкий случай)...

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »