Update examples
This commit is contained in:
33
testsuite/objc/expression_parser/KeyValueParser.hs
Normal file
33
testsuite/objc/expression_parser/KeyValueParser.hs
Normal file
@ -0,0 +1,33 @@
|
||||
module KeyValueParser where
|
||||
|
||||
import Text.ParserCombinators.Parsec
|
||||
|
||||
parseKeyValue = do
|
||||
key <- parseKey
|
||||
char '='
|
||||
value <- parseValue
|
||||
return (key, value)
|
||||
|
||||
parseKey = many1 letter
|
||||
|
||||
parseValue =
|
||||
do
|
||||
openQuote <- char '"' <|> char '\''
|
||||
value <- many1 letter
|
||||
char openQuote
|
||||
return value
|
||||
<|>
|
||||
do
|
||||
value <- many1 letter
|
||||
return value
|
||||
|
||||
parseString s = do
|
||||
case (parse parseKeyValue "" s) of
|
||||
Left err -> return ("Error " ++ show err)
|
||||
Right (key, value) -> return ("Key: " ++ key ++ ", Value: " ++ value)
|
||||
|
||||
resource :: String -> IO String
|
||||
resource text = do
|
||||
parsedText <- mapM parseString (lines text)
|
||||
return (unlines parsedText)
|
||||
|
Reference in New Issue
Block a user