summaryrefslogtreecommitdiff
path: root/src-3.0/GF/Command
diff options
context:
space:
mode:
Diffstat (limited to 'src-3.0/GF/Command')
-rw-r--r--src-3.0/GF/Command/Commands.hs20
-rw-r--r--src-3.0/GF/Command/Interpreter.hs2
-rw-r--r--src-3.0/GF/Command/Parse.hs3
3 files changed, 13 insertions, 12 deletions
diff --git a/src-3.0/GF/Command/Commands.hs b/src-3.0/GF/Command/Commands.hs
index 292e802b9..7e28ba40b 100644
--- a/src-3.0/GF/Command/Commands.hs
+++ b/src-3.0/GF/Command/Commands.hs
@@ -133,16 +133,12 @@ allCommands pgf = Map.fromList [
("l", emptyCommandInfo {
longname = "linearize",
synopsis = "convert an abstract syntax expression to string",
- explanation = "Shows all linearization forms of Tree by the actual grammar\n"++
- "(which is overridden by the -lang flag).\n"++
- "The pattern list has the form [P, ... ,Q] where P,...,Q follow GF\n"++
- "syntax for patterns. All those forms are generated that match with the\n"++
- "pattern list. Too short lists are filled with variables in the end.\n"++
- "Only the -table flag is available if a pattern list is specified.\n"++
- "HINT: see GF language specification for the syntax of Pattern and Term.\n"++
- "You can also copy and past parsing results.",
+ explanation = unlines [
+ "Shows the linearization of a Tree by the actual grammar",
+ "(which is overridden by the -lang flag)."
+ ],
exec = \opts -> return . fromStrings . map (optLin opts),
- options = ["all","record","table","term"],
+ options = ["all","record","table","term", "treebank"],
flags = ["lang"]
}),
@@ -207,7 +203,11 @@ allCommands pgf = Map.fromList [
lin opts t = unlines [linearize pgf lang t | lang <- optLangs opts]
par opts s = concat [parse pgf lang (optCat opts) s | lang <- optLangs opts]
- optLin opts t = unlines [linea lang t | lang <- optLangs opts] where
+ optLin opts t = case opts of
+ _ | isOpt "treebank" opts -> unlines $ (abstractName pgf ++ ": " ++ showExp t) :
+ [lang ++ ": " ++ linea lang t | lang <- optLangs opts]
+ _ -> unlines [linea lang t | lang <- optLangs opts]
+ where
linea lang = case opts of
_ | isOpt "all" opts -> allLinearize pgf (mkCId lang)
_ | isOpt "table" opts -> tableLinearize pgf (mkCId lang)
diff --git a/src-3.0/GF/Command/Interpreter.hs b/src-3.0/GF/Command/Interpreter.hs
index 6bac6eca0..97ecb89b8 100644
--- a/src-3.0/GF/Command/Interpreter.hs
+++ b/src-3.0/GF/Command/Interpreter.hs
@@ -61,7 +61,7 @@ interpret env trees0 comm = case lookCommand co comms of
comms = commands env
checkOpts info =
case
- [o | OOpt o <- opts, notElem o (options info)] ++
+ [o | OOpt o <- opts, notElem o ("tr" : options info)] ++
[o | OFlag o _ <- opts, notElem o (flags info)]
of
[] -> return ()
diff --git a/src-3.0/GF/Command/Parse.hs b/src-3.0/GF/Command/Parse.hs
index dfab70128..0cf7adec5 100644
--- a/src-3.0/GF/Command/Parse.hs
+++ b/src-3.0/GF/Command/Parse.hs
@@ -20,7 +20,8 @@ pPipe = RP.sepBy (RP.skipSpaces >> pCommand) (RP.skipSpaces >> RP.char '|')
pCommand = do
cmd <- pIdent
RP.skipSpaces
- opts <- RP.many pOption
+ opts <- RP.sepBy pOption RP.skipSpaces
+-- opts <- RP.many pOption
arg <- RP.option ANoArg (fmap AExp (pExp False))
return (Command cmd opts arg)