module MsgParser where

import Parsec
--import ParsecExpr
import ParsecToken
--import Char
--import StdTokenDef
import ParsecLanguage (haskellDef)
import Int




fnumber :: Parser Double
fnumber  = do{ ds <- integer (makeTokenParser haskellDef)
	     ; return (fromInteger ds)
	     }

myfloat :: Parser Double
myfloat = do { s <- mysign;
		-- real float
		try ( do {f <- float (makeTokenParser haskellDef); return (s f)})   
		-- integer returned as float
		<|> try( do {f' <- fnumber;  return (s f')})}

manyfloat = many1 myfloat
mysign            :: Parser (Double -> Double)
mysign            =   (char '-' >> return negate)
                    <|> (char '+' >> return id)
                    <|> return id

runTest :: Show a => Parser a -> String -> IO ()
runTest p input = case (parse p "" input) of
		  Left err -> do{ putStr "parse error at "
				; print err
				}
		  Right x  -> print x

runTest' p input = case (parse p "" input) of
		  Left err -> 0
		  Right x  -> x

runTest2 p input = case (parse p "" input) of
		  Left err -> []
		  Right x  -> x

parseFloat p input = case (parse p "" input) of
		  Left err -> []
		  Right x  -> x