Допустим, ввод выглядит примерно так foo#1 bar baz-3.qux [...]
. Я хочу написать синтаксический анализатор, который потребляет ввод только до первого пробела перед [
, что означает foo#1 bar baz-3.qux
(без завершающего пробела).
Как мне подойти к этому с помощью парсека?
Я могу представить что-то вроде
foo = many1 $ letter <|> digit <|> oneOf " #-."
но это занимает даже место в конце, которого я хотел бы избежать. Каков общий подход к анализу списка вещей, перемежающихся другими вещами? (Представьте, что это не просто пробел, а что-то, что тоже нужно разобрать).
P.S. Я ищу максимально общее решение, а не хитрый хак, который решит этот конкретный пример.
sepBy
иsepBy1
? - person J. Abrahamson   schedule 07.06.2014