diff options
Diffstat (limited to 'old-examples/big/postedit.hs')
| -rw-r--r-- | old-examples/big/postedit.hs | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/old-examples/big/postedit.hs b/old-examples/big/postedit.hs new file mode 100644 index 000000000..628b64752 --- /dev/null +++ b/old-examples/big/postedit.hs @@ -0,0 +1,49 @@ +import Char +import System + +infile = "BigLexEng.gf" +tmp = "tm" + +main = do + writeFile tmp "" + s <- readFile infile + mapM_ (appendFile tmp . mkTwo) $ lines s --- $ chop s + system "cp BigLexEng.gf bak" + system "mv tm BigLexEng.gf" + +chop s = case s of + ';':cs -> ";\n"++chop cs + c:cs -> c:chop cs + _ -> s + +mkTwo s = case words s of + lin:tie:eq:"dirV3":tie_V:ws -> + let prep = case reverse (takeWhile (/='_') (reverse tie)) of + "loc" -> "in" --- + p -> p + in unwords $ + [lin,tie,eq,"dirV3",show (take (length tie_V - 2) tie_V),show prep] ++ + ws ++ ["\n"] + _ -> s ++ "\n" + +mkOne s = case words s of + lin:a2:eq:pa2:ws | take 6 pa2 == "prepA2" -> + unwords $ [lin,a2,eq,"prepA2"] ++ ws ++ ["\n"] + lin:a2:eq:pa2:ws | take 6 pa2 == "prepV2" -> + unwords $ [lin,a2,eq,"prepV2"] ++ ws ++ ["\n"] + lin:v2:eq:"mkV2":v:_:ws -> + unwords $ [lin,v2,eq,"mkV2",(read v ++ "_V")] ++ ws ++ ["\n"] + lin:v2:eq:"mkV3":v:_:ws -> + unwords $ [lin,v2,eq,"dirV3",(read v ++ "_V")] ++ ws ++ ["\n"] + lin:a2:eq:pa2:ws | take 4 pa2 == "mkV2" -> + unwords $ [lin,a2,eq,"mkV2"] ++ ws ++ ["\n"] + lin:a2:eq:pa2:ws | take 6 pa2 == "prepN2" -> + unwords $ [lin,a2,eq,"prepN2"] ++ ws ++ ["\n"] + lin:a2:eq:pa2:ws | take 4 pa2 == "mkV3" -> + unwords $ [lin,a2,eq,"mkV3"] ++ ws ++ ["\n"] + + lin:v2:eq:"irreg":v:_:ws -> + unwords $ [lin,v2,eq,"dirV2",(read v ++ "_V")] ++ ws ++ ["\n"] + + + _ -> s ++ "\n" |
