Подтвердить что ты не робот

Есть ли haskell EDSL для написания лексеров?

Смешивание фаз лексера и разбора в одной фазе иногда делает анализаторы Parsec менее читабельными, но также замедляет их. Одним из решений является использование Alex в качестве токенизатора, а затем Parsec в качестве анализатора потока токенов.

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

4b9b3361

Ответ 1

Да - http://www.cse.unsw.edu.au/~chak/papers/Cha99.html

До Hackage Мануэль использовал код для выпуска в пакете CTK (инструментарий компилятора). Я не уверен, каков статус проекта в эти дни.

Я думаю, что Томас Холлгрен лексер из газеты "Лексинг Хаскелл в Хаскелле" был динамичным, а не генератором кода, в то время как релиз предназначен для лексинга Haskell, машинное оборудование в библиотеке более общее. Явор Diatchki поставил код на Hackage.

http://hackage.haskell.org/package/haskell-lexer

Ответ 2

Вы также можете использовать Parsec как лексер. Сначала вы разбираете строку в токенах, затем вы анализируете токены в целевом типе данных.