From f439895ef9b008cf0e3e7224b0ee3f95215fee79 Mon Sep 17 00:00:00 2001 From: bringert Date: Mon, 7 Apr 2008 15:57:04 +0000 Subject: [PATCH] Added GF.GFCC.Macros.lookStartCat. Changed GF.GFCC:API to use it (before, startCat always returned "S"!). GFCCtoJS has not been changed, Moises will do that. --- src/GF/Command/Commands.hs | 2 +- src/GF/GFCC/API.hs | 2 +- src/GF/GFCC/Macros.hs | 6 ++++++ 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)