diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-09-20 09:10:37 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-09-20 09:10:37 +0000 |
| commit | 3707eb45762932b22d96ad03163c46dd1ba9fd8d (patch) | |
| tree | f18b766c2ca32a5f21c77a40929a170a7814dff5 /src/GF/Infra | |
| parent | ef389db5694a52eb9c171fe76b952f37216e4c09 (diff) | |
refactored FCFG parsing to fit in GFCC shell
Diffstat (limited to 'src/GF/Infra')
| -rw-r--r-- | src/GF/Infra/Print.hs | 61 | ||||
| -rw-r--r-- | src/GF/Infra/PrintClass.hs | 56 |
2 files changed, 59 insertions, 58 deletions
diff --git a/src/GF/Infra/Print.hs b/src/GF/Infra/Print.hs index fe3ffa207..c4a310c29 100644 --- a/src/GF/Infra/Print.hs +++ b/src/GF/Infra/Print.hs @@ -12,16 +12,14 @@ ----------------------------------------------------------------------------- module GF.Infra.Print - (Print(..), - prtBefore, prtAfter, prtSep, - prtBeforeAfter, prtPairList, - prIO + (module GF.Infra.PrintClass ) where -- haskell modules: -import Data.List (intersperse) import Data.Char (toUpper) -- gf modules: + +import GF.Infra.PrintClass import GF.Data.Operations (Err(..)) import GF.Infra.Ident (Ident(..)) import GF.Canon.AbsGFC @@ -31,59 +29,6 @@ import qualified GF.Canon.PrintGFC as P ------------------------------------------------------------ -prtBefore :: Print a => String -> [a] -> String -prtBefore before = prtBeforeAfter before "" - -prtAfter :: Print a => String -> [a] -> String -prtAfter after = prtBeforeAfter "" after - -prtSep :: Print a => String -> [a] -> String -prtSep sep = concat . intersperse sep . map prt - -prtBeforeAfter :: Print a => String -> String -> [a] -> String -prtBeforeAfter before after as = concat [ before ++ prt a ++ after | a <- as ] - -prtPairList :: (Print a, Print b) => String -> String -> [(a,b)] -> String -prtPairList comma sep xys = prtSep sep [ prt x ++ comma ++ prt y | (x,y) <- xys ] - -prIO :: Print a => a -> IO () -prIO = putStr . prt - -class Print a where - prt :: a -> String - prtList :: [a] -> String - prtList as = "[" ++ prtSep "," as ++ "]" - -instance Print a => Print [a] where - prt = prtList - -instance (Print a, Print b) => Print (a, b) where - prt (a, b) = "(" ++ prt a ++ "," ++ prt b ++ ")" - -instance (Print a, Print b, Print c) => Print (a, b, c) where - prt (a, b, c) = "(" ++ prt a ++ "," ++ prt b ++ "," ++ prt c ++ ")" - -instance (Print a, Print b, Print c, Print d) => Print (a, b, c, d) where - prt (a, b, c, d) = "(" ++ prt a ++ "," ++ prt b ++ "," ++ prt c ++ "," ++ prt d ++ ")" - -instance Print Char where - prt = return - prtList = id - -instance Print Int where - prt = show - -instance Print Integer where - prt = show - -instance Print a => Print (Maybe a) where - prt (Just a) = prt a - prt Nothing = "Nothing" - -instance Print a => Print (Err a) where - prt (Ok a) = prt a - prt (Bad str) = str - ---------------------------------------------------------------------- instance Print Ident where diff --git a/src/GF/Infra/PrintClass.hs b/src/GF/Infra/PrintClass.hs new file mode 100644 index 000000000..93d7366b6 --- /dev/null +++ b/src/GF/Infra/PrintClass.hs @@ -0,0 +1,56 @@ +module GF.Infra.PrintClass where + +import Data.List (intersperse) +import GF.Data.Operations (Err(..)) + +class Print a where + prt :: a -> String + prtList :: [a] -> String + prtList as = "[" ++ prtSep "," as ++ "]" + +prtSep :: Print a => String -> [a] -> String +prtSep sep = concat . intersperse sep . map prt + +prtBefore :: Print a => String -> [a] -> String +prtBefore before = prtBeforeAfter before "" + +prtAfter :: Print a => String -> [a] -> String +prtAfter after = prtBeforeAfter "" after + +prtBeforeAfter :: Print a => String -> String -> [a] -> String +prtBeforeAfter before after as = concat [ before ++ prt a ++ after | a <- as ] + +prtPairList :: (Print a, Print b) => String -> String -> [(a,b)] -> String +prtPairList comma sep xys = prtSep sep [ prt x ++ comma ++ prt y | (x,y) <- xys ] +prIO :: Print a => a -> IO () +prIO = putStr . prt + +instance Print a => Print [a] where + prt = prtList + +instance (Print a, Print b) => Print (a, b) where + prt (a, b) = "(" ++ prt a ++ "," ++ prt b ++ ")" + +instance (Print a, Print b, Print c) => Print (a, b, c) where + prt (a, b, c) = "(" ++ prt a ++ "," ++ prt b ++ "," ++ prt c ++ ")" + +instance (Print a, Print b, Print c, Print d) => Print (a, b, c, d) where + prt (a, b, c, d) = "(" ++ prt a ++ "," ++ prt b ++ "," ++ prt c ++ "," ++ prt d ++ ")" + +instance Print Char where + prt = return + prtList = id + +instance Print Int where + prt = show + +instance Print Integer where + prt = show + +instance Print a => Print (Maybe a) where + prt (Just a) = prt a + prt Nothing = "Nothing" + +instance Print a => Print (Err a) where + prt (Ok a) = prt a + prt (Bad str) = str |
