moved interruption to GFI level to capture all commands

This commit is contained in:
aarne
2008-06-26 21:01:51 +00:00
parent 9d909f32cf
commit 4a9bc587a5
8 changed files with 15 additions and 6 deletions

View File

@@ -7,7 +7,7 @@ concrete LexiconAra of Lexicon = CatAra ** open
Prelude in { Prelude in {
flags flags
optimize=values ; optimize=values ; coding=utf8 ;
lin lin

View File

@@ -1,6 +1,6 @@
resource MorphoAra = ResAra ** open Prelude in { resource MorphoAra = ResAra ** open Prelude in {
flags optimize = all ;--noexpand; flags optimize = all ;--noexpand; coding=utf8 ;
oper oper

View File

@@ -31,7 +31,7 @@ resource ParadigmsAra = open
CatAra CatAra
in { in {
flags optimize = noexpand; flags optimize = noexpand; coding=utf8 ;
oper oper

View File

@@ -1,5 +1,7 @@
resource PatternsAra = { resource PatternsAra = {
flags coding=utf8 ;
oper oper
fA' = { h = "" ; m1 = ""; m2 = ""; t = "َاء"} ; fA' = { h = "" ; m1 = ""; m2 = ""; t = "َاء"} ;

View File

@@ -9,7 +9,7 @@
-- --
resource ResAra = PatternsAra ** open Prelude, Predef in { resource ResAra = PatternsAra ** open Prelude, Predef in {
flags optimize=noexpand ; flags optimize=noexpand ; coding=utf8 ;
param param

View File

@@ -1,7 +1,7 @@
concrete StructuralAra of Structural = CatAra ** concrete StructuralAra of Structural = CatAra **
open MorphoAra, ResAra, ParadigmsAra, Prelude in { open MorphoAra, ResAra, ParadigmsAra, Prelude in {
flags optimize=all ; flags optimize=all ; coding=utf8 ;
lin lin
above_Prep = ss "فَوْقَ" ; above_Prep = ss "فَوْقَ" ;

View File

@@ -38,10 +38,13 @@ interpretCommandLine :: (String -> String) -> CommandEnv -> String -> IO ()
interpretCommandLine enc env line = interpretCommandLine enc env line =
case readCommandLine line of case readCommandLine line of
Just [] -> return () Just [] -> return ()
Just pipes -> mapM_ (interpretPipe enc env) pipes
{-
Just pipes -> do res <- runInterruptibly (mapM_ (interpretPipe enc env) pipes) Just pipes -> do res <- runInterruptibly (mapM_ (interpretPipe enc env) pipes)
case res of case res of
Left ex -> putStrLnFlush $ enc (show ex) Left ex -> putStrLnFlush $ enc (show ex)
Right x -> return x Right x -> return x
-}
Nothing -> putStrLnFlush "command not parsed" Nothing -> putStrLnFlush "command not parsed"
interpretPipe enc env cs = do interpretPipe enc env cs = do

View File

@@ -26,6 +26,8 @@ import System.Cmd
import System.CPUTime import System.CPUTime
import Control.Exception import Control.Exception
import Data.Version import Data.Version
import GF.System.Signal
import Paths_gf import Paths_gf
@@ -53,7 +55,7 @@ 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
case pwords of r <- runInterruptibly $ case pwords of
-- special commands, requiring source grammar in env -- special commands, requiring source grammar in env
"!":ws -> do "!":ws -> do
system $ unwords ws system $ unwords ws
@@ -106,6 +108,8 @@ loop opts gfenv0 = do
_ -> do _ -> do
interpretCommandLine enc env s interpretCommandLine enc env s
loopNewCPU gfenv loopNewCPU gfenv
gfenv' <- return $ either (const gfenv) id r
loopNewCPU gfenv'
importInEnv :: GFEnv -> Options -> [FilePath] -> IO GFEnv importInEnv :: GFEnv -> Options -> [FilePath] -> IO GFEnv
importInEnv gfenv opts files importInEnv gfenv opts files