eqStr ; pipe to system

This commit is contained in:
aarne
2005-10-06 13:21:33 +00:00
parent edd17b54f2
commit faadd04af9
5 changed files with 55 additions and 21 deletions

View File

@@ -5,9 +5,9 @@
-- Stability : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/06/26 20:40:33 $
-- > CVS $Date: 2005/10/06 14:21:34 $
-- > CVS $Author: aarne $
-- > CVS $Revision: 1.12 $
-- > CVS $Revision: 1.13 $
--
-- Predefined function type signatures and definitions.
-----------------------------------------------------------------------------
@@ -71,7 +71,7 @@ appPredefined t = case t of
-- two-place functions
App (Q (IC "Predef") (IC f)) z0 -> do
(z,_) <- appPredefined z0
case (f, z, x) of
case (f, norm z, norm x) of
("drop", EInt i, K s) -> retb $ K (drop i s)
("take", EInt i, K s) -> retb $ K (take i s)
("tk", EInt i, K s) -> retb $ K (take (max 0 (length s - i)) s)
@@ -102,6 +102,9 @@ appPredefined t = case t of
where
retb t = return (t,True) -- no further computing needed
retf t = return (t,False) -- must be computed further
norm t = case t of
Empty -> K []
_ -> t
-- read makes variables into constants

View File

@@ -5,9 +5,9 @@
-- Stability : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/10/06 10:02:33 $
-- > CVS $Date: 2005/10/06 14:21:34 $
-- > CVS $Author: aarne $
-- > CVS $Revision: 1.44 $
-- > CVS $Revision: 1.45 $
--
-- GF shell command interpreter.
-----------------------------------------------------------------------------
@@ -313,7 +313,9 @@ execC co@(comm, opts0) sa@(sh@(st,(h,_,_,_)),a) = checkOptions st co >> case com
CWriteFile file -> justOutputArg opts (writeFile file) sa
CAppendFile file -> justOutputArg opts (appendFile file) sa
CSpeakAloud -> justOutputArg opts (speechGenerate opts) sa
CSystemCommand s -> justOutput opts (system s >> return ()) sa
CSystemCommand s -> case a of
AUnit -> justOutput opts (system s >> return ()) sa
_ -> systemArg opts a s sa
CPutString -> changeArg (opSS2CommandArg (optStringCommand opts gro)) sa
----- CShowTerm -> changeArg (opTS2CommandArg (optPrintTerm opts gro) . s2t) sa
CGrep ms -> changeArg (AString . unlines . filter (grep ms) . lines . prCommandArg) sa
@@ -417,6 +419,16 @@ justOutputArg opts f sa@(st,a) = f (utf (prCommandArg a)) >> return (st, AUnit)
justOutput :: Options -> IO () -> ShellIO
justOutput opts = justOutputArg opts . const
systemArg :: Options -> CommandArg -> String -> ShellIO
systemArg _ cont syst sa = do
writeFile tmpi $ prCommandArg cont
system $ syst ++ " <" ++ tmpi ++ " >" ++ tmpo
s <- readFile tmpo
returnArg (AString s) sa
where
tmpi = "_tmpi" ---
tmpo = "_tmpo"
-- | type system for command arguments; instead of plain strings...
data CommandArg =
AError String

View File

@@ -5,9 +5,9 @@
-- Stability : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/10/06 10:02:34 $
-- > CVS $Date: 2005/10/06 14:21:34 $
-- > CVS $Author: aarne $
-- > CVS $Revision: 1.15 $
-- > CVS $Revision: 1.16 $
--
-- Help on shell commands. Generated from HelpFile by 'make help'.
-- PLEASE DON'T EDIT THIS FILE.
@@ -93,16 +93,19 @@ txtHelpFile =
"\ndc, define_command Name Anything" ++
"\n Add a new defined command. The Name must star with '%'. Later," ++
"\n if 'Name X' is used, it is replaced by Anything where #1 is replaced" ++
"\n by X. Currently at most one argument is possible. To see" ++
"\n definitions in scope, use help -defs." ++
"\n by X. " ++
"\n Restrictions: Currently at most one argument is possible, and a defined" ++
"\n command cannot appear in a pipe. " ++
"\n To see what definitions are in scope, use help -defs." ++
"\n examples:" ++
"\n dc %tnp p -cat=NP -lang=Eng #1 | l -lang=Swe -- translate NPs" ++
"\n %tnp \"this man\" | p -lang=Swe -- translate and parse" ++
"\n %tnp \"this man\" -- translate and parse" ++
"\n" ++
"\ndt, define_term Name Tree" ++
"\n Add a constant for a tree. The constant can later be called by" ++
"\n prefixing it with '$'. It is not yet usable as a subterm. To see" ++
"\n definitions in scope, use help -defs." ++
"\n prefixing it with '$'. " ++
"\n Restriction: These terms are not yet usable as a subterm. " ++
"\n To see what definitions are in scope, use help -defs." ++
"\n examples:" ++
"\n p -cat=NP \"this man\" | dt tm -- define tm as parse result" ++
"\n l -all $tm -- linearize tm in all forms" ++
@@ -476,6 +479,12 @@ txtHelpFile =
"\n example:" ++
"\n ! ls" ++
"\n" ++
"\n?, system_command: ? String" ++
"\n Issues a system command that receives its arguments from GF pipe" ++
"\n and returns a value to GF." ++
"\n example:" ++
"\n h | ? 'wc -l' | p -cat=Num" ++
"\n" ++
"\n" ++
"\n-- Flags. The availability of flags is defined separately for each command." ++
"\n" ++

View File

@@ -5,9 +5,9 @@
-- Stability : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/10/06 10:02:34 $
-- > CVS $Date: 2005/10/06 14:21:34 $
-- > CVS $Author: aarne $
-- > CVS $Revision: 1.27 $
-- > CVS $Revision: 1.28 $
--
-- parsing GF shell commands. AR 11\/11\/2001
-----------------------------------------------------------------------------
@@ -62,6 +62,7 @@ unquote (x:xs@(_:_)) | x `elem` "\"'" && x == last xs = init xs
unquote s = s
pCommandLine :: HState -> [String] -> CommandLine
pCommandLine st (c@('%':_):args) = pCommandLine st $ resolveShMacro st c args
pCommandLine st (dc:c:def) | abbrevCommand dc == "dc" = ((CDefineCommand c def, noOptions),AUnit,[])
pCommandLine st s = pFirst (chks s) where
pFirst cos = case cos of
@@ -73,7 +74,6 @@ pCommandLine st s = pFirst (chks s) where
chks = map (pCommandOpt st) . chunks "|"
pCommandOpt :: HState -> [String] -> (Command, Options, [CommandArg])
pCommandOpt st (c@('%':_):args) = pCommandOpt st $ resolveShMacro st c args
pCommandOpt _ (w:ws) = let
(os, co) = getOptions "-" ws
(comm, args) = pCommand (abbrevCommand w:co)
@@ -136,6 +136,7 @@ pCommand ws = case ws of
"ps" : s -> aString CPutString s
"st" : s -> aTerm CShowTerm s
"!" : s -> aUnit (CSystemCommand (unwords s))
"?" : s : x -> aString (CSystemCommand (unquote s)) x
"sc" : s -> aUnit (CSystemCommand (unwords s))
"g" : f : s -> aString (CGrep (unquote f)) s

View File

@@ -64,16 +64,19 @@ s, strip: s
dc, define_command Name Anything
Add a new defined command. The Name must star with '%'. Later,
if 'Name X' is used, it is replaced by Anything where #1 is replaced
by X. Currently at most one argument is possible. To see
definitions in scope, use help -defs.
by X.
Restrictions: Currently at most one argument is possible, and a defined
command cannot appear in a pipe.
To see what definitions are in scope, use help -defs.
examples:
dc %tnp p -cat=NP -lang=Eng #1 | l -lang=Swe -- translate NPs
%tnp "this man" | p -lang=Swe -- translate and parse
%tnp "this man" -- translate and parse
dt, define_term Name Tree
Add a constant for a tree. The constant can later be called by
prefixing it with '$'. It is not yet usable as a subterm. To see
definitions in scope, use help -defs.
prefixing it with '$'.
Restriction: These terms are not yet usable as a subterm.
To see what definitions are in scope, use help -defs.
examples:
p -cat=NP "this man" | dt tm -- define tm as parse result
l -all $tm -- linearize tm in all forms
@@ -447,6 +450,12 @@ q, quit: q
example:
! ls
?, system_command: ? String
Issues a system command that receives its arguments from GF pipe
and returns a value to GF.
example:
h | ? 'wc -l' | p -cat=Num
-- Flags. The availability of flags is defined separately for each command.