2014-12-13 14 views
1

В моей работе я написал небольшой парсер для C-подобных выражений в одном из наших внутренних инструментов Perl. Сначала я выбрал Parse :: RecDescent из-за его предельной простоты использования и простого синтаксиса грамматики, но я обнаружил, что он слишком медленный (что подтверждается общим мнением, найденным в Интернете). Можно с уверенностью предположить, что грамматика выражений не сложнее, чем у C.Быстрые модули Parser Perl?

Каковы самые быстрые (но все же с простым и бескомпромиссным грамматическим форматом) модули lexxer/parser для использования в тысячах простых выражения (я бы сказал, что средняя длина - 1 токен, средний - 2 или около того, а max - 30)? Кроме того, благодаря неприятным выборам в ИТ, он должен работать в Perl 5.8.8, и он и любые неосновные зависимости должны быть чистыми Perl.

ответ

1

Parse::Eyapp выглядит как satysfying 5.8.8, pure perl and dependency requirements. Что касается скорости, он утверждает парсер LALR, который должен быть быстрее рекурсивного спуска. Грамматика для выражений приведена в the doc. Надеюсь, поможет.