extended cf syntax; Det experiment

This commit is contained in:
aarne
2005-11-15 10:43:32 +00:00
parent f339b8839b
commit 1fd1f44fcc
6 changed files with 591 additions and 17 deletions

20
examples/CLE/CF2GF.hs Normal file
View File

@@ -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