summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/GF/Command/Commands.hs2
-rw-r--r--src/GF/GFCC/API.hs2
-rw-r--r--src/GF/GFCC/Macros.hs6
3 files changed, 8 insertions, 2 deletions
diff --git a/src/GF/Command/Commands.hs b/src/GF/Command/Commands.hs
index 573b15eb1..d5b5a8768 100644
--- a/src/GF/Command/Commands.hs
+++ b/src/GF/Command/Commands.hs
@@ -141,7 +141,7 @@ allCommands mgr = Map.fromAscList [
optLangs opts = case valIdOpts "lang" "" opts of
"" -> languages mgr
lang -> [lang]
- optCat opts = valIdOpts "cat" (lookAbsFlag gr (cid "startcat")) opts
+ optCat opts = valIdOpts "cat" (lookStartCat gr) opts
optNum opts = valIntOpts "number" 1 opts
optNumInf opts = valIntOpts "number" 1000000000 opts ---- 10^9
diff --git a/src/GF/GFCC/API.hs b/src/GF/GFCC/API.hs
index 9bfe98b95..c266a5553 100644
--- a/src/GF/GFCC/API.hs
+++ b/src/GF/GFCC/API.hs
@@ -122,7 +122,7 @@ languages mgr = [l | CId l <- cncnames (gfcc mgr)]
categories mgr = [c | CId c <- Map.keys (cats (abstract (gfcc mgr)))]
-startCat mgr = "S" ----
+startCat mgr = lookStartCat (gfcc mgr)
emptyMultiGrammar = MultiGrammar emptyGFCC
diff --git a/src/GF/GFCC/Macros.hs b/src/GF/GFCC/Macros.hs
index b9acd9fc5..4897aa667 100644
--- a/src/GF/GFCC/Macros.hs
+++ b/src/GF/GFCC/Macros.hs
@@ -5,7 +5,9 @@ import GF.GFCC.DataGFCC
import GF.Formalism.FCFG (FGrammar)
import GF.Parsing.FCFG.PInfo (FCFPInfo, fcfPInfoToFGrammar)
----import GF.GFCC.PrintGFCC
+import Control.Monad
import Data.Map
+import Data.Maybe
import Data.List
-- operations for manipulating GFCC grammars and objects
@@ -36,6 +38,10 @@ lookParser gfcc lang = parser $ lookMap (error "no lang") lang $ concretes gfcc
lookFCFG :: GFCC -> CId -> Maybe FGrammar
lookFCFG gfcc lang = fmap fcfPInfoToFGrammar $ lookParser gfcc lang
+lookStartCat :: GFCC -> String
+lookStartCat gfcc = fromMaybe "S" $ msum $ Data.List.map (Data.Map.lookup (CId "startcat"))
+ [gflags gfcc, aflags (abstract gfcc)]
+
lookGlobalFlag :: GFCC -> CId -> String
lookGlobalFlag gfcc f =
lookMap "?" f (gflags gfcc)