From daccb10def9fced61db4ccf43589c594ef9d00a2 Mon Sep 17 00:00:00 2001 From: aarne Date: Tue, 31 Oct 2006 16:33:38 +0000 Subject: biglex experiment --- examples/big/extract2gf.hs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 examples/big/extract2gf.hs (limited to 'examples/big/extract2gf.hs') diff --git a/examples/big/extract2gf.hs b/examples/big/extract2gf.hs new file mode 100644 index 000000000..6fbc1f5da --- /dev/null +++ b/examples/big/extract2gf.hs @@ -0,0 +1,28 @@ +import System +import Char + +-- usage: extract2gf + +main = do + la:f:_ <- getArgs + let cnc = f ++ ".gf" + let abs = f ++ "Abs.gf" + s <- readFile f + writeFile abs $ "abstract " ++ f ++ "Abs = Cat ** {\n" + writeFile cnc $ "concrete " ++ f ++ " of " ++ f ++ + "Abs = Cat" ++ la ++ " ** open Paradigms" ++ la ++ " in {\n" + mapM_ (mkOne abs cnc . words) $ filter (not . empty) $ lines s + appendFile abs "}" + appendFile cnc "}" + +-- format: cat oper args + +mkOne abs cnc (cat : oper : args@(a1:_)) = do + appendFile abs $ " fun " ++ fun ++ " : " ++ cat ++ " ;\n" + appendFile cnc $ " lin " ++ fun ++ " = " ++ lin ++ " ;\n" + where + fun = a1 ++ "_" ++ cat ++ "_" ++ oper + lin = unwords $ oper:["\"" ++ s ++ "\"" | s <- args] +mkOne _ _ ws = putStrLn $ unwords ws + +empty s = all isSpace s || take 2 s == "--" -- cgit v1.2.3