[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