From 334394f3ea797e04cc361ee8aee42677bb2e2888 Mon Sep 17 00:00:00 2001 From: aarne Date: Thu, 26 Jun 2008 21:40:21 +0000 Subject: [PATCH] debugging arabic --- lib/resource/arabic/OrthoAra.gf | 2 + lib/resource/arabic/ParadigmsAra.gf | 5 +- src/GFI.hs | 101 +++++++++++++++------------- 3 files changed, 60 insertions(+), 48 deletions(-) diff --git a/lib/resource/arabic/OrthoAra.gf b/lib/resource/arabic/OrthoAra.gf index 011ded71b..62ebc9b58 100644 --- a/lib/resource/arabic/OrthoAra.gf +++ b/lib/resource/arabic/OrthoAra.gf @@ -1,5 +1,7 @@ resource OrthoAra = open Prelude, Predef in { +flags coding=utf8 ; + oper rectifyHmz: Str -> Str = \word -> diff --git a/lib/resource/arabic/ParadigmsAra.gf b/lib/resource/arabic/ParadigmsAra.gf index c9816e952..1d41b4f3e 100644 --- a/lib/resource/arabic/ParadigmsAra.gf +++ b/lib/resource/arabic/ParadigmsAra.gf @@ -27,7 +27,7 @@ resource ParadigmsAra = open Predef, Prelude, MorphoAra, - OrthoAra, + OrthoAra,(ResAra=ResAra), CatAra in { @@ -206,7 +206,8 @@ resource ParadigmsAra = open lock_V = <> } ; - + va : Vowel = ResAra.a ; + v1' : Str -> Vowel -> Vowel -> Verb = \rootStr,vPerf,vImpf -> let { root = mkRoot3 rootStr ; diff --git a/src/GFI.hs b/src/GFI.hs index 014fa327e..6165a54aa 100644 --- a/src/GFI.hs +++ b/src/GFI.hs @@ -55,61 +55,70 @@ loop opts gfenv0 = do pwords = case words s of w:ws -> getCommandOp w :ws ws -> ws - r <- runInterruptibly $ case pwords of + -- special commands, requiring source grammar in env - "!":ws -> do - system $ unwords ws - loopNewCPU gfenv - "cc":ws -> do - let - (style,term) = case ws of - ('-':w):ws2 -> (pTermPrintStyle w, ws2) - _ -> (TermPrintDefault, ws) - case pTerm (unwords term) >>= checkTerm sgr >>= computeTerm sgr of ---- pipe! - Ok x -> putStrLn $ enc (showTerm style x) - Bad s -> putStrLn $ enc s - loopNewCPU gfenv - "i":args -> do - gfenv' <- case parseOptions args of - Ok (opts',files) -> importInEnv gfenv (addOptions opts opts') files - Bad err -> do putStrLn $ "Command parse error: " ++ err - return gfenv - loopNewCPU gfenv' + + case pwords of + + "q":_ -> putStrLn "See you." >> return gfenv + + _ -> do + r <- runInterruptibly $ case pwords of + + "!":ws -> do + system $ unwords ws + loopNewCPU gfenv + "cc":ws -> do + let + (style,term) = case ws of + ('-':w):ws2 -> (pTermPrintStyle w, ws2) + _ -> (TermPrintDefault, ws) + case pTerm (unwords term) >>= checkTerm sgr >>= computeTerm sgr of + Ok x -> putStrLn $ enc (showTerm style x) + Bad s -> putStrLn $ enc s + loopNewCPU gfenv + "i":args -> do + gfenv' <- case parseOptions args of + Ok (opts',files) -> + importInEnv gfenv (addOptions opts opts') files + Bad err -> do + putStrLn $ "Command parse error: " ++ err + return gfenv + loopNewCPU gfenv' -- other special commands, working on GFEnv - "e":_ -> loopNewCPU $ gfenv { - commandenv=emptyCommandEnv, sourcegrammar = emptyGrammar - } - - "dc":f:ws -> do - case readCommandLine (unwords ws) of - Just comm -> loopNewCPU $ gfenv { - commandenv = env { - commandmacros = Map.insert f comm (commandmacros env) + "e":_ -> loopNewCPU $ gfenv { + commandenv=emptyCommandEnv, sourcegrammar = emptyGrammar } - } - _ -> putStrLn "command definition not parsed" >> loopNewCPU gfenv - "dt":f:ws -> do - case readTree (unwords ws) of - Just exp -> loopNewCPU $ gfenv { - commandenv = env { - expmacros = Map.insert f exp (expmacros env) - } - } - _ -> putStrLn "value definition not parsed" >> loopNewCPU gfenv + "dc":f:ws -> do + case readCommandLine (unwords ws) of + Just comm -> loopNewCPU $ gfenv { + commandenv = env { + commandmacros = Map.insert f comm (commandmacros env) + } + } + _ -> putStrLn "command definition not parsed" >> loopNewCPU gfenv - "ph":_ -> mapM_ (putStrLn . enc) (reverse (history gfenv0)) >> loopNewCPU gfenv - "se":c -> loopNewCPU $ gfenv {coding = s} + "dt":f:ws -> do + case readTree (unwords ws) of + Just exp -> loopNewCPU $ gfenv { + commandenv = env { + expmacros = Map.insert f exp (expmacros env) + } + } + _ -> putStrLn "value definition not parsed" >> loopNewCPU gfenv - "q":_ -> putStrLn "See you." >> return gfenv + "ph":_ -> + mapM_ (putStrLn . enc) (reverse (history gfenv0)) >> loopNewCPU gfenv + "se":c -> loopNewCPU $ gfenv {coding = s} -- ordinary commands, working on CommandEnv - _ -> do - interpretCommandLine enc env s - loopNewCPU gfenv - gfenv' <- return $ either (const gfenv) id r - loopNewCPU gfenv' + _ -> do + interpretCommandLine enc env s + loopNewCPU gfenv + gfenv' <- return $ either (const gfenv) id r + loopNewCPU gfenv' importInEnv :: GFEnv -> Options -> [FilePath] -> IO GFEnv importInEnv gfenv opts files