Смешивание фаз лексера и разбора в одной фазе иногда делает анализаторы Parsec менее читабельными, но также замедляет их. Одним из решений является использование Alex в качестве токенизатора, а затем Parsec в качестве анализатора потока токенов.
Это хорошо, но было бы лучше, если бы я мог избавиться от Алекса, потому что он добавляет одну фазу предварительной обработки в конвейер компиляции, не очень хорошо интегрируется с haskell "IDE" и т.д. Мне было интересно, вещь как haskell EDSL для описания токенизаторов, очень в стиле Alex, но как библиотека.