Как правильно сложить корпус с помощью Parsec - PullRequest
1 голос
/ 03 января 2012

Есть ли способ сделать правильное сворачивание регистра с помощью Parsec (скажем, я хочу парсер, который ведет себя как stringCI из Data.Attoparsec.Text).Код, который выполняет синтаксический анализ без учета регистра в Text.Parsec.Token, просто использует char (toLower c) <|> char (toUpper c), но без правильного свертывания регистра.Поэтому я озадачен, возможно ли это вообще.

1 Ответ

1 голос
/ 03 января 2012

Parsec не имеет никаких функций для этой встроенной функции, но вы можете реализовать ее, например, с помощью foldCase из нечувствительного к регистру пакета и satisfy в цикле.Я не эксперт по Unicode, поэтому не уверен, какие дополнительные меры предосторожности вы должны предпринять, чтобы убедиться в правильности.

Пакет text-icu рекомендуется в документацииfoldCase если вам нужны конверсии с учетом локали;это кажется довольно полным.

...