[Pkg-haskell-commits] [SCM] haskell-testpack branch, master, updated. debian/1.0.2-1-4-gb0d6b36
John Goerzen
jgoerzen at complete.org
Fri Apr 23 14:47:39 UTC 2010
The following commit has been merged in the master branch:
commit a473270486888f9e8b8d18d4ce8299adb936bd09
Author: John Goerzen <jgoerzen at complete.org>
Date: Fri Nov 19 03:12:40 2004 +0100
Streamlined parser a bit
Keywords:
(jgoerzen at complete.org--projects/missingh--head--0.5--patch-83)
diff --git a/ChangeLog b/ChangeLog
index d3e7e4c..1dc692a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,18 @@
# arch-tag: automatic-ChangeLog--jgoerzen at complete.org--projects/missingh--head--0.5
#
+2004-11-18 20:12:40 GMT John Goerzen <jgoerzen at complete.org> patch-83
+
+ Summary:
+ Streamlined parser a bit
+ Revision:
+ missingh--head--0.5--patch-83
+
+
+ modified files:
+ ChangeLog libsrc/MissingH/ConfigParser/Parser.hs
+
+
2004-11-18 20:08:19 GMT John Goerzen <jgoerzen at complete.org> patch-82
Summary:
diff --git a/libsrc/MissingH/ConfigParser/Parser.hs b/libsrc/MissingH/ConfigParser/Parser.hs
index 1efd389..7c978a4 100644
--- a/libsrc/MissingH/ConfigParser/Parser.hs
+++ b/libsrc/MissingH/ConfigParser/Parser.hs
@@ -38,7 +38,6 @@ module MissingH.ConfigParser.Parser
--empty_line, sectheader_chars, sectheader, oname_chars, value_chars,
--extension_line, optionkey, optionvalue, optionpair
- CPTok(..),
parse_string, parse_file, parse_handle, ParseOutput
) where
@@ -49,13 +48,6 @@ import System.IO(Handle, hGetContents)
type ParseOutput = [(String, [(String, String)])]
-data CPTok = EOFTOK
- | NEWSECTION String
- | NEWSECTION_EOF String
- | EXTENSIONLINE String
- | NEWOPTION (String, String)
- deriving (Eq, Show, Ord)
-
comment_chars = oneOf "#;"
eol = string "\n" <|> string "\r\n" <|> string "\r" <?> "End of line"
optionsep = oneOf ":=" <?> "Option separator"
@@ -78,28 +70,24 @@ sectheader = do ignorestuff
return sname
oname_chars = noneOf ":=\r\n"
value_chars = noneOf "\r\n"
-extension_line = do
- ignorestuff
- many1 whitespace_chars
- c1 <- noneOf "\r\n#;"
- remainder <- many value_chars
- return (c1 : remainder)
-
-optionkey = many1 oname_chars
-optionvalue = many1 value_chars
-optionpair = do
- ignorestuff
- key <- optionkey
- optionsep
- value <- optionvalue
- return (key, value)
-
-newsection = sectheader
-newoption = optionpair
-extension = extension_line
-
-main :: Parser [(String, [(String, String)])]
-main =
+extension_line = do ignorestuff
+ many1 whitespace_chars
+ c1 <- noneOf "\r\n#;"
+ remainder <- many value_chars
+ return (c1 : remainder)
+ <?> "extension line"
+
+optionkey = many1 oname_chars <?> "option key"
+optionvalue = many1 value_chars <?> "option value"
+optionpair = do ignorestuff
+ key <- optionkey
+ optionsep
+ value <- optionvalue
+ return (key, value)
+ <?> "option pair"
+
+parsemain :: Parser [(String, [(String, String)])]
+parsemain =
sectionlist
<|> try (do o <- optionlist
s <- sectionlist
@@ -122,22 +110,25 @@ sectionlist =
section = do {sh <- sectionhead; ol <- optionlist; return (sh, ol)}
-sectionhead = do {s <- newsection; return $ strip s}
+
+sectionhead = do {s <- sectheader; return $ strip s}
+ <?> "start of section"
optionlist =
try (do {c <- coption; ol <- optionlist; return $ c : ol})
<|> do {c <- coption; return $ [c]}
extensionlist =
- try (do {x <- extension; l <- extensionlist; return $ x : l})
- <|> do {x <- extension; return [x]}
+ try (do {x <- extension_line; l <- extensionlist; return $ x : l})
+ <|> do {x <- extension_line; return [x]}
coption =
- try (do o <- newoption
+ try (do o <- optionpair
l <- extensionlist
return (strip (fst o), valmerge ((snd o) : l))
)
- <|> do {o <- newoption; return $ (strip (fst o), strip (snd o))}
+ <|> do {o <- optionpair; return $ (strip (fst o), strip (snd o))}
+ <?> "an option"
valmerge :: [String] -> String
valmerge vallist =
@@ -154,15 +145,15 @@ procparse fp l =
parse_string :: String -> ParseOutput
parse_string s =
- procparse "(string)" $ parse main "(string)" s
+ procparse "(string)" $ parse parsemain "(string)" s
parse_file :: FilePath -> IO ParseOutput
-parse_file f = do r <- parseFromFile main f
+parse_file f = do r <- parseFromFile parsemain f
return (procparse f r)
parse_handle :: Handle -> IO ParseOutput
parse_handle h =
do s <- hGetContents h
- let r = parse main (show h) s
+ let r = parse parsemain (show h) s
return $ procparse "(Handle)" r
--
haskell-testpack
More information about the Pkg-haskell-commits
mailing list