Combined-line mode checks bidirectionalizability
authorKazutaka Matsuda <kztk@kb.ecei.tohoku.ac.jp>
Tue, 14 Sep 2010 05:38:11 +0000 (05:38 +0000)
committerKazutaka Matsuda <kztk@kb.ecei.tohoku.ac.jp>
Tue, 14 Sep 2010 05:38:11 +0000 (05:38 +0000)
Main.hs
SemSyn.hs

diff --git a/Main.hs b/Main.hs
index f9f9119..7a3ba06 100644 (file)
--- a/Main.hs
+++ b/Main.hs
@@ -257,7 +257,21 @@ main = do { args <- getArgs
 --                                       ; print $ ppr p1 $$ ppr p2 $$ ppr p3
 --                                       ; putStrLn ""
 --                                       }
-                               _ -> print $ renderCode conf cprog
+                               _ | isNormalMode conf ->
+                                     print $ outputCode conf False (cprog) (typeInference cprog)
+                               _ | isShapifyMode conf -> 
+                                     print $ outputCode conf False (cprog) (shapify $ typeInference cprog)
+                               _ | isShapifyPlusMode conf -> 
+                                     print $ outputCode conf True  (cprog) (introNat $ shapify $ typeInference cprog)
+                               _ ->
+                                   print $ outputCode conf True  (cprog) (introNat $ shapify $ typeInference cprog)
                      }
           }
+              where checkAndDoBidirectionalize conf isShapify orig ast =
+                        if b18nMode conf == NoB18n || b18nMode conf == SemanticB18n then 
+                            (print $ outputCode conf isShapify orig ast)
+                        else
+                            maybe (print $ outputCode conf isShapify orig ast)
+                                  putStrLn 
+                                  (checkBidirectionalizability ast)
 
index d5e0479..7733fe4 100644 (file)
--- a/SemSyn.hs
+++ b/SemSyn.hs
@@ -220,7 +220,7 @@ checkBidirectionalizability ast =
 -- msum (m:ms) = mplus m (msum ms)
 
 -- Nothing    : treeless
--- Just (e,d) : not treeless because of d 
+-- Just (e,d) : not treeless because of e in 
 checkTreeless :: AST -> Maybe (Exp, Decl)
 checkTreeless (AST decls) = msum $ map checkTreelessD decls
     where
@@ -232,8 +232,8 @@ checkTreeless (AST decls) = msum $ map checkTreelessD decls
       isVariable (EVar _ _ _) = True 
       isVariable e            = False
 
--- Nothing    : treeless
--- Just (e,d) : not treeless because of d 
+-- Nothing     : affine
+-- Just (vs,d) : not affine because of vs in d 
 checkAffine :: AST -> Maybe ([Name],Decl)
 checkAffine (AST decls) = msum $ map checkAffineD decls
     where