Функциональные парсеры: различия между версиями

Содержимое удалено Содержимое добавлено
мНет описания правки
Строка 157:
имеет тип <tt>Parser Char (Char, (Char, Char))</tt>.
 
Несмотря на то, что кортежи ясно описывают структуру дерева разбора, существует трудность, заключающаяся в том, что мы не можем соединять парсеры случайным образом. Например, мы не можем последовательнопараллельно соединить парсер <tt>p</tt>, описанный ранее и <tt>symbol ’a’</tt>, поскольку последний имеет тип <tt>Parser Char Char</tt>, а параллельно можно соединять только парсеры одного типа. Хуже того, невозможно рекурсивно соединить парсер с самим собой, так как это приведёт к возникновению типов, представляющих собой бесконечно вложенные кортежи. Нам необходимо иметь способ изменения структуры дерева разбора, возвращаемого данным парсером.
 
== Преобразователи парсеров ==