Удовлетворение эквивалентно Парсеку в uu-parsinglib
Я ищу satisfy
функционировать как тот, который имеет Parsec. Что-то вроде:
--The parser satisfy f succeeds for any character for which the supplied
--function f returns True.
--Returns the character that is actually parsed.
satisfy :: (Char -> Bool) -> Parser Char
Единственное, что я нашел, это pSatisfy, который требует Insertion
в качестве аргумента. Я не понимаю, почему это необходимо... Я просто хочу, чтобы синтаксический анализатор не работал, если предикат не удовлетворен!
Как мне этого добиться?
1 ответ
Наконец мне удалось взломать satisfy
функция, которая отвечает моим потребностям. Тем не менее, uu-parsinglib - это анализатор исправления ошибок, который выдаст исключение, если вы не предоставите корректирующую альтернативу.
Это означает, что вы должны использовать обычный pSatisfy
функционировать и обеспечить Insertion
элемент. Если вы не знаете, какой должна быть стоимость, вы можете использовать 5, как видно из реализаций других парсеров, таких как pSymbol
,