1
0
forked from GitHub/gf-core

debugging arabic

This commit is contained in:
aarne
2008-06-26 21:40:21 +00:00
parent d1a491653c
commit 334394f3ea
3 changed files with 60 additions and 48 deletions

View File

@@ -1,5 +1,7 @@
resource OrthoAra = open Prelude, Predef in { resource OrthoAra = open Prelude, Predef in {
flags coding=utf8 ;
oper oper
rectifyHmz: Str -> Str = \word -> rectifyHmz: Str -> Str = \word ->

View File

@@ -27,7 +27,7 @@ resource ParadigmsAra = open
Predef, Predef,
Prelude, Prelude,
MorphoAra, MorphoAra,
OrthoAra, OrthoAra,(ResAra=ResAra),
CatAra CatAra
in { in {
@@ -206,7 +206,8 @@ resource ParadigmsAra = open
lock_V = <> lock_V = <>
} ; } ;
va : Vowel = ResAra.a ;
v1' : Str -> Vowel -> Vowel -> Verb = v1' : Str -> Vowel -> Vowel -> Verb =
\rootStr,vPerf,vImpf -> \rootStr,vPerf,vImpf ->
let { root = mkRoot3 rootStr ; let { root = mkRoot3 rootStr ;

View File

@@ -55,61 +55,70 @@ loop opts gfenv0 = do
pwords = case words s of pwords = case words s of
w:ws -> getCommandOp w :ws w:ws -> getCommandOp w :ws
ws -> ws ws -> ws
r <- runInterruptibly $ case pwords of
-- special commands, requiring source grammar in env -- special commands, requiring source grammar in env
"!":ws -> do
system $ unwords ws case pwords of
loopNewCPU gfenv
"cc":ws -> do "q":_ -> putStrLn "See you." >> return gfenv
let
(style,term) = case ws of _ -> do
('-':w):ws2 -> (pTermPrintStyle w, ws2) r <- runInterruptibly $ case pwords of
_ -> (TermPrintDefault, ws)
case pTerm (unwords term) >>= checkTerm sgr >>= computeTerm sgr of ---- pipe! "!":ws -> do
Ok x -> putStrLn $ enc (showTerm style x) system $ unwords ws
Bad s -> putStrLn $ enc s loopNewCPU gfenv
loopNewCPU gfenv "cc":ws -> do
"i":args -> do let
gfenv' <- case parseOptions args of (style,term) = case ws of
Ok (opts',files) -> importInEnv gfenv (addOptions opts opts') files ('-':w):ws2 -> (pTermPrintStyle w, ws2)
Bad err -> do putStrLn $ "Command parse error: " ++ err _ -> (TermPrintDefault, ws)
return gfenv case pTerm (unwords term) >>= checkTerm sgr >>= computeTerm sgr of
loopNewCPU gfenv' 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 -- other special commands, working on GFEnv
"e":_ -> loopNewCPU $ gfenv { "e":_ -> loopNewCPU $ gfenv {
commandenv=emptyCommandEnv, sourcegrammar = emptyGrammar 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)
} }
}
_ -> putStrLn "command definition not parsed" >> loopNewCPU gfenv
"dt":f:ws -> do "dc":f:ws -> do
case readTree (unwords ws) of case readCommandLine (unwords ws) of
Just exp -> loopNewCPU $ gfenv { Just comm -> loopNewCPU $ gfenv {
commandenv = env { commandenv = env {
expmacros = Map.insert f exp (expmacros env) commandmacros = Map.insert f comm (commandmacros env)
} }
} }
_ -> putStrLn "value definition not parsed" >> loopNewCPU gfenv _ -> putStrLn "command definition not parsed" >> loopNewCPU gfenv
"ph":_ -> mapM_ (putStrLn . enc) (reverse (history gfenv0)) >> loopNewCPU gfenv "dt":f:ws -> do
"se":c -> loopNewCPU $ gfenv {coding = s} 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 -- ordinary commands, working on CommandEnv
_ -> do _ -> do
interpretCommandLine enc env s interpretCommandLine enc env s
loopNewCPU gfenv loopNewCPU gfenv
gfenv' <- return $ either (const gfenv) id r gfenv' <- return $ either (const gfenv) id r
loopNewCPU gfenv' loopNewCPU gfenv'
importInEnv :: GFEnv -> Options -> [FilePath] -> IO GFEnv importInEnv :: GFEnv -> Options -> [FilePath] -> IO GFEnv
importInEnv gfenv opts files importInEnv gfenv opts files