1
0
forked from GitHub/gf-core

fixed command abbreviations in GFI

This commit is contained in:
aarne
2008-06-17 12:34:02 +00:00
parent 327d0a6a4a
commit 7c097669d2
3 changed files with 12 additions and 8 deletions

View File

@@ -1,7 +1,8 @@
module GF.Command.Interpreter (
CommandEnv (..),
mkCommandEnv,
interpretCommandLine
interpretCommandLine,
getCommandOp
) where
import GF.Command.Commands
@@ -71,11 +72,11 @@ interpret env trees0 comm = case lookCommand co comms of
-- analyse command parse tree to a uniform datastructure, normalizing comm name
getCommand :: Command -> [Exp] -> (String,[Option],[Exp])
getCommand co ts = case co of
Command c opts (AExp t) -> (getOp c,opts,[t]) -- ignore piped
Command c opts ANoArg -> (getOp c,opts,ts) -- use piped
where
-- abbreviation convention from gf
getOp s = case break (=='_') s of
Command c opts (AExp t) -> (getCommandOp c,opts,[t]) -- ignore piped
Command c opts ANoArg -> (getCommandOp c,opts,ts) -- use piped
-- abbreviation convention from gf commands
getCommandOp s = case break (=='_') s of
(a:_,_:b:_) -> [a,b] -- axx_byy --> ab
_ -> case s of
[a,b] -> s -- ab --> ab

View File

@@ -23,7 +23,6 @@ pCommand = do
cmd <- pIdent
RP.skipSpaces
opts <- RP.sepBy pOption RP.skipSpaces
-- opts <- RP.many pOption
arg <- RP.option ANoArg (fmap AExp (pExp False))
return (Command cmd opts arg)

View File

@@ -45,7 +45,11 @@ loop opts gfenv0 = do
cpu' <- getCPUTime
putStrLnFlush (show ((cpu' - cputime gfenv') `div` 1000000000) ++ " msec")
loop opts $ gfenv' {cputime = cpu'}
case words s of
let
pwords = case words s of
w:ws -> getCommandOp w :ws
ws -> ws
case pwords of
-- special commands, requiring source grammar in env
"!":ws -> do
system $ unwords ws