[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