Перевести грамматику Haskell Parsec на Scala? - PullRequest
9 голосов
/ 23 марта 2012

Я пытаюсь перевести грамматику, написанную на Haskell, используя Parsec, в комбинаторы синтаксического анализатора Scala.

Перевод реальных выражений соответствия довольно прост и, по крайней мере, на мой взгляд, даже немного легчеScala.Для меня не совсем понятно, как обрабатывать состояние, которое Parsec передает, используя монады.

Парсер Scala читает в Input и создает ParseResult [T].

В отличие отGenParser в Haskell читает входные данные и состояние и создает другой парсер.Передача этого состояния в Scala приводит меня в замешательство.

Есть ли у кого-нибудь пример анализа состояния в Scala, которым они хотели бы поделиться?

1 Ответ

2 голосов
/ 25 марта 2012

Единственный известный мне способ обработки полноты состояний в комбинаторах синтаксических анализаторов Scala - это метод into, также известный как >> и flatMap (и, да, вы можете использовать его в целях понимания),Однако он передает состояние (или, точнее, результат разбора) в синтаксический анализатор, а не вдоль следующих синтаксических анализаторов, что, по-видимому, является тем, что вы описываете.

Не зная парсек ХаскеллаМне трудно догадаться, как это можно использовать для перевода вашей грамматики.

См. также этот вопрос .Была очень интересная статья о комбинаторах анализатора Scala, но я не смог ее найти.Кто-то может наговорить на Скала Лэнг , чтобы его включить.

...