parse' :: Parser a -> String -> [(a,String)]
parse' p inp = p `with` inp
parse :: Parser a -> String -> [a]
parse p inp = [ v | (v,[]) <- parse' p inp ]
mkMany1 :: (Parser a -> Parser [a]) -> Parser a -> Parser [a]
mkMany1 many p = do x <- p
xs <- many p
return (x:xs)
many1L :: Parser a -> Parser [a]
many1L = mkMany1 manyL
manyL :: Parser a -> Parser [a]
manyL p = (many1L p) ||| (success [])
'<'
文字、'>'
または(スペース)を含まない多くの部分文字列の文字列を解析しようとしています' '
が、パーサーが終了していないようです。誰かが私が見逃しているものについていくつかの指針を教えてもらえますか?
textValid :: Char -> Bool
textValid c = c /= '<' && c /= '>' && not (isSpace c)
text :: Parser String
text = manyL (sat textValid)
次のコマンドを実行しようとすると、決して終了しません。
parse (manyL text) "abc def <"