From 1fd1f44fcc81149b286992dd13b3128d42c4736e Mon Sep 17 00:00:00 2001 From: aarne Date: Tue, 15 Nov 2005 10:43:32 +0000 Subject: extended cf syntax; Det experiment --- examples/CLE/CF2GF.hs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 examples/CLE/CF2GF.hs (limited to 'examples/CLE/CF2GF.hs') diff --git a/examples/CLE/CF2GF.hs b/examples/CLE/CF2GF.hs new file mode 100644 index 000000000..1bb1d6611 --- /dev/null +++ b/examples/CLE/CF2GF.hs @@ -0,0 +1,20 @@ +import Data.List (intersperse) +import Data.Char (isAlpha) + +-- to massage cf rules to funs, in order, preserving comments +-- to get cats, use pg -printer=gf + +cf2gf :: FilePath -> IO () +cf2gf file = do + ss <- readFile file >>= return . lines + mapM_ (putStrLn . mkOne) ss + +mkOne line = case words line of + fun : cat : "::=" : cats -> + let + (cats0,cats2) = span (/=";") cats + cats1 = filter (isAlpha . head) cats0 ++ [cat] + in + unwords $ [init fun, ":"] ++ intersperse "->" cats1 ++ cats2 + _ -> line + \ No newline at end of file -- cgit v1.2.3