Я читал много о Haskell комбинаторы синтаксического анализа и нашел много тем, как:Haskell Parser Комбинаторы
- Parsec vs Yacc/Bison/Antlr: Why and when to use Parsec?
- Which Haskell parsing technology is most pleasant to use, and why?
- Parsec or happy (with alex) or uu-parsinglib
- Choosing a Haskell parser
- What is the advantage of using a parser generator like happy as opposed to using parser combinators?
Но все эти темы сравниваются Parser Combinators
с Parser Generators
.
Я хочу спросить вас, какие из Parser Combinator
костюмов лучших следующие условий:
- Я хочу, чтобы иметь хороший контроль над об ошибках (включая исправление ошибок) и сообщения для пользователя
- Я хочу чтобы иметь возможность кормить синтаксический анализатор небольшими частями текста (не весь файл сразу)
- Я хочу, чтобы у меня была возможность правильно переработать грамматику (в настоящее время я разрабатываю грамматику, так что «хороший ваф работы» важен "
- Окончательный парсер должен быть быстрым (производительность важна, но не такая, как точки 1-3).
Я обнаружил, что наиболее популярные комбинаторы синтаксического анализа являются:
Я знаю только парсек, который является монадическим синтаксическим анализатором. Он довольно прост в использовании, и у вас есть хороший контроль над ошибками. – Jocke
Я использовал только 'attoparsec', поэтому я не знаю из первых рук о Parsec. attoparsec имеет репутацию чрезвычайно быстрого, но не очень хорошего в сообщениях об ошибках. Он нацелен на необходимость анализа партитуры на заднем контенте, что пользователь переднего конца никогда не должен видеть сообщения об ошибках. – asm
@AndrewMyers, я согласен, я использовал attoparsec для такого рода вещей, и это очень быстро и просто (особенно для простых-иш-грамматик). В нем нет большого количества необычных функций, таких как обычная библиотека parsec для хакера, но она поддерживает «Text», который является удивительным. – Wes