[Moscow.pm] Разбор алгебраических и булевых выражений

Vany Serezhkin ivan на serezhkin.com
Вт Июн 4 00:44:10 PDT 2013


On 03.06.2013 17:22, Vany Serezhkin wrote:
> On 02.06.2013 16:16, Lev Leontiev wrote:
>> Parse::RecDescent ?
> Yapp =)

Дим, а вот что я подумал: Предложение пользовать япп было конечно 
шуткой, но в этой шутке конечно есть доля правды.
Смари:
Допустим у тебя задача взять тысячу выражений, написанных криворукими, 
неаккуратными торопыжками и прогонять по этим выражениям миллионы 
наборов данных.
Ты пишешь грамматику на яппе, ну можно на бизоне, если он у тебя есть в 
системе, которая тебе строит либо AST, либо сразу перловый код, который 
вычисляет эти выражения.
Ошибки синтаксиса ты ловишь на этапе компиляции, а в результате у тебя 
есть coderef, которы не нужно больше одного раза компилить. Да, это 
пьюрперл, но если ты пошутил про миллионы, а нужны десятки тысяч - это 
элегантный выход.
Ну и естественная оптимизация, если тебе на один набор данных надо 
прогонять наборы подобных условий - склей их лексически через and или or.

можно потом AST перевести в стэйтмашину и там их клеить как матрицы, про 
это тут: ISBN 987-5845913494

>>
>>
>> 2013/6/2 Dmitry Simonov <dsimonov на gmail.com <mailto:dsimonov на gmail.com>>
>>
>>     А накидайте ссылочек на готовые модули по разбору на деревья
>>     алгебраических выражений вида a*b*(10-x) и тд и тп?
>>
>>     Интересуют правда не совсем алгебраические выражения, а булевы
>>     вида @!((a>10)&&(b in [1,2,3]))".
>>
>>     Если кто-то хочет сказать, что можно и самому набросать, - с
>>     удовольствием выслушаю подробный совет, как именно и как именно
>>     обучить такой процессинг обрабатывать до миллиона выражений в
>>     секунду.
>>
>>     ---
>>     Dmitriy V. Simonov,
>>     Perl & Python programmer
>>
>>     --
>>     Moscow.pm mailing list
>>     moscow-pm на pm.org <mailto:moscow-pm на pm.org> | http://moscow.pm.org
>>
>>
>>
>>
>
>
>

----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20130604/6a51e66e/attachment.html>


Подробная информация о списке рассылки Moscow-pm