Внешний против внутреннего DSL
Формат спецификации синтаксического анализатора для Happy - это внешний DSL, в то время как с Parsec у вас есть полная мощность Haskell, доступная при определении ваших анализаторов.Это означает, что вы можете, например, написать функции для генерации парсеров, использовать Template Haskell и так далее.
Правила приоритетов
В Happy вы можете использовать предшественников , чтобы упростить вашу грамматику, в то время как в Parsec вы должны правильно вложить правила грамматики самостоятельно,Поэтому изменение приоритета оператора в Parsec гораздо более утомительно.
Статическая проверка
Happy предупредит вас о неясностях в вашей грамматике во время компиляции.(Хотя не очень хорошо сообщать вам , где они .) С Parsec вы не получите предупреждения, пока ваш парсер не выйдет из строя во время выполнения.