Spec-Zone.ru › Haskell 9

Text.ParserCombinators.ReadP

Copyright (c) The University of Glasgow 2002
License BSD-style (see the file libraries/base/LICENSE)
Maintainer libraries@haskell.org
Stability provisional
Portability non-portable (local universal quantification)
Safe Haskell Safe
Language Haskell2010

Содержание

  • Тип ReadP
  • Примитивные операции
  • Другие операции
  • Запуск анализатора
  • Свойства

Описание

Этот модуль содержит комбинаторы для анализаторов, первоначально написанные Koen Claessen. Он обрабатывает все альтернативы параллельно, поэтому никогда не сохраняет начало входной строки, что является распространённой причиной утечек памяти в других анализаторах. Комбинатор выбора (+++) по-настоящему коммутативен; порядок ветвей не влияет на результат.

Тип ReadP

data ReadP a Источник

Примеры реализации
Подробности о примерах реализации
Alternative ReadP Source

Since: base-4.6.0.0

Instance details

Defined in GHC.Internal.Text.ParserCombinators.ReadP

Methods

empty :: ReadP a Source

(<|>) :: ReadP a -> ReadP a -> ReadP a Source

some :: ReadP a -> ReadP [a] Source

many :: ReadP a -> ReadP [a] Source

Applicative ReadP Source

Since: base-4.6.0.0

Instance details

Defined in GHC.Internal.Text.ParserCombinators.ReadP

Methods

pure :: a -> ReadP a Source

(<*>) :: ReadP (a -> b) -> ReadP a -> ReadP b Source

liftA2 :: (a -> b -> c) -> ReadP a -> ReadP b -> ReadP c Source

(*>) :: ReadP a -> ReadP b -> ReadP b Source

(<*) :: ReadP a -> ReadP b -> ReadP a Source

Functor ReadP Source

Since: base-2.1

Instance details

Defined in GHC.Internal.Text.ParserCombinators.ReadP

Methods

fmap :: (a -> b) -> ReadP a -> ReadP b Source

(<$) :: a -> ReadP b -> ReadP a Source

Monad ReadP Source

Since: base-2.1

Instance details

Defined in GHC.Internal.Text.ParserCombinators.ReadP

Methods

(>>=) :: ReadP a -> (a -> ReadP b) -> ReadP b Source

(>>) :: ReadP a -> ReadP b -> ReadP b Source

return :: a -> ReadP a Source

MonadPlus ReadP Source

Since: base-2.1

Instance details

Defined in GHC.Internal.Text.ParserCombinators.ReadP

Methods

mzero :: ReadP a Source

mplus :: ReadP a -> ReadP a -> ReadP a Source

MonadFail ReadP Source

Since: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Internal.Text.ParserCombinators.ReadP

Методы

fail :: Строка -> ReadP a Источник

Основные операции

get :: ReadP Символ Источник

Потребляет и возвращает следующий символ. Возвращает ошибку, если входных данных больше нет.

look :: ReadP Строка Источник

Предварительный просмотр: возвращает оставшуюся часть входных данных без их потребления.

(+++) :: ReadP a -> ReadP a -> ReadP a infixr 5 Источник

Симметричный выбор.

(<++) :: ReadP a -> ReadP a -> ReadP a infixr 5 Источник

Локальный, исключительный, левосторонний выбор: если левый анализатор локально производит какой-либо результат, то правый анализатор не используется.

gather :: ReadP a -> ReadP (Строка, a) Источник

Преобразует анализатор в такой, который делает то же самое, но дополнительно возвращает точные прочитанные символы. ВАЖНОЕ ПРИМЕЧАНИЕ: gather возвращает ошибку выполнения, если его первый аргумент построен с использованием любых вхождений readS_to_P.

Другие операции

pfail :: ReadP a Источник

Всегда возвращает ошибку.

eof :: ReadP () Источник

Успешно выполняется, если мы находимся в конце входных данных.

satisfy :: (Символ -> Булево) -> ReadP Символ Источник

Потребляет и возвращает следующий символ, если он удовлетворяет заданному предикату.

char :: Символ -> ReadP Символ Источник

Анализирует и возвращает указанный символ.

string :: Строка -> ReadP Строка Источник

Анализирует и возвращает указанную строку.

munch :: (Символ -> Булево) -> ReadP Строка Источник

Анализирует первый нулевой или более символов, удовлетворяющих предикату. Всегда успешно выполняется, точно один раз, потребляя все символы. Таким образом, НЕ то же самое, что (many (satisfy p)).

munch1 :: (Символ -> Булево) -> ReadP Строка Источник

Анализирует первый один или более символов, удовлетворяющих предикату. Возвращает ошибку, если не найдено ни одного, в противном случае успешно выполняется ровно один раз, потребляя все символы. Таким образом, НЕ то же самое, что (many1 (satisfy p)).

skipSpaces :: ReadP () Источник

Пропускает все пробелы.

choice :: [ReadP a] -> ReadP a Источник

Объединяет все анализаторы в указанном списке.

count :: Целое -> ReadP a -> ReadP [a] Источник

count n p анализирует n вхождения p последовательно. Возвращается список результатов.

between :: ReadP open -> ReadP close -> ReadP a -> ReadP a Источник

between open close p анализирует open, затем p и, наконец, close. Возвращается только значение p.

option :: a -> ReadP a -> ReadP a Источник

option x p будет либо анализировать p, либо возвращать x, не потребляя никаких входных данных.

optional :: ReadP a -> ReadP () Источник

optional p необязательно анализирует p и всегда возвращает ().

many :: ReadP a -> ReadP [a] Источник

Анализирует ноль или более вхождений заданного анализатора.

many1 :: ReadP a -> ReadP [a] Source

Парсит одно или несколько вхождений заданного парсера.

skipMany :: ReadP a -> ReadP () Source

Аналогично many, но игнорирует результат.

skipMany1 :: ReadP a -> ReadP () Source

Аналогично many1, но игнорирует результат.

sepBy :: ReadP a -> ReadP sep -> ReadP [a] Source

Парсит ноль или более вхождений p, разделенных sep. Возвращает список значений, возвращаемых p.

sepBy1 :: ReadP a -> ReadP sep -> ReadP [a] Source

Парсит одно или более вхождений p, разделенных sep. Возвращает список значений, возвращаемых p.

endBy :: ReadP a -> ReadP sep -> ReadP [a] Source

Парсит ноль или более вхождений p, разделенных и завершаемых sep.

endBy1 :: ReadP a -> ReadP sep -> ReadP [a] Source

Парсит одно или более вхождений p, разделенных и завершаемых sep.

chainr :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP a Source

Парсит ноль или более вхождений p, разделенных op. Возвращает значение, полученное посредством правого ассоциативного применения всех функций, возвращаемых op. Если вхождений p нет, возвращается x.

chainl :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP a Source

Парсит ноль или более вхождений p, разделенных op. Возвращает значение, полученное посредством левого ассоциативного применения всех функций, возвращаемых op. Если вхождений p нет, возвращается x.

chainl1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP a Source

Аналогично chainl, но парсит одно или более вхождений p.

chainr1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP a Source

Аналогично chainr, но парсит одно или более вхождений p.

manyTill :: ReadP a -> ReadP end -> ReadP [a] Source

Парсит ноль или более вхождений p, до тех пор, пока не выполнится end . Возвращает список значений, возвращаемых p.

Запуск парсера

type ReadS a = String -> [(a, String)] Source

Парсер для типа a, представленный как функция, которая принимает String и возвращает список возможных парсеров в виде пар (a,String).

Обратите внимание, что этот вид парсера с возвратом очень неэффективен; чтение большой структуры может быть довольно медленным (см. ReadP).

readP_to_S :: ReadP a -> ReadS a Source

Преобразует парсер в функцию типа Haskell ReadS. Это основной способ «запуска» парсера ReadP: расширенный тип - readP_to_S :: ReadP a -> String -> [(a,String)]

readS_to_P :: ReadS a -> ReadP a Source

Преобразует функцию типа Haskell ReadS в парсер. Предупреждение: это вводит локальный возврат в результирующий парсер, и поэтому потенциальную неэффективность.

Свойства

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.12.1/docs/libraries/base-4.21.0.0-8e62/Text-ParserCombinators-ReadP.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API