diff options
| author | peb <unknown> | 2005-02-24 10:46:37 +0000 |
|---|---|---|
| committer | peb <unknown> | 2005-02-24 10:46:37 +0000 |
| commit | bf436aebaa5b84bbb50e305e8f7dc9ca4ae34299 (patch) | |
| tree | 346ac1e13a90d7b2c992c69f45b3e19c22f4bfe2 /src/GF/Compile/ShellState.hs | |
| parent | 0137dd5511a83ea4672619ad3dc22fe7c51ab4bf (diff) | |
"Committed_by_peb"
Diffstat (limited to 'src/GF/Compile/ShellState.hs')
| -rw-r--r-- | src/GF/Compile/ShellState.hs | 43 |
1 files changed, 39 insertions, 4 deletions
diff --git a/src/GF/Compile/ShellState.hs b/src/GF/Compile/ShellState.hs index 1586674ca..1f9c71edd 100644 --- a/src/GF/Compile/ShellState.hs +++ b/src/GF/Compile/ShellState.hs @@ -5,9 +5,9 @@ -- Stability : (stable) -- Portability : (portable) -- --- > CVS $Date: 2005/02/18 19:21:09 $ +-- > CVS $Date: 2005/02/24 11:46:34 $ -- > CVS $Author: peb $ --- > CVS $Revision: 1.35 $ +-- > CVS $Revision: 1.36 $ -- -- (Description of the module) ----------------------------------------------------------------------------- @@ -68,6 +68,7 @@ data Statistics = --- -- etc deriving (Eq,Ord) +emptyShellState :: ShellState emptyShellState = ShSt { abstract = Nothing, concrete = Nothing, @@ -83,10 +84,15 @@ emptyShellState = ShSt { statistics = [] } +optInitShellState :: Options -> ShellState optInitShellState os = addGlobalOptions os emptyShellState type Language = Ident + +language :: String -> Language language = identC + +prLanguage :: Language -> String prLanguage = prIdent -- | grammar for one language in a state, comprising its abs and cnc @@ -100,6 +106,7 @@ data StateGrammar = StGr { loptions :: Options } +emptyStateGrammar :: StateGrammar emptyStateGrammar = StGr { absId = identC "#EMPTY", --- cncId = identC "#EMPTY", --- @@ -110,7 +117,15 @@ emptyStateGrammar = StGr { loptions = noOptions } --- | analysing shell grammar into parts +-- analysing shell grammar into parts + +stateGrammarST :: StateGrammar -> CanonGrammar +stateCF :: StateGrammar -> CF +statePInfo :: StateGrammar -> Cnv.PInfo +stateMorpho :: StateGrammar -> Morpho +stateOptions :: StateGrammar -> Options +stateGrammarWords :: StateGrammar -> [String] + stateGrammarST = grammar stateCF = cf statePInfo = pInfo @@ -118,6 +133,7 @@ stateMorpho = morpho stateOptions = loptions stateGrammarWords = allMorphoWords . stateMorpho +cncModuleIdST :: StateGrammar -> CanonGrammar cncModuleIdST = stateGrammarST -- | form a shell state from a canonical grammar @@ -201,6 +217,7 @@ testSameAbstract sh mcnc = do _ -> return a' -} +abstractName :: ShellState -> String abstractName sh = maybe "(none)" P.prt (abstract sh) -- | throw away those abstracts that are not needed --- could be more aggressive @@ -278,6 +295,11 @@ stateGrammarOfLang st l = StGr { can = M.partOfGrammar allCan (l, maybe M.emptyModInfo id (lookup l (M.modules allCan))) +grammarOfLang :: ShellState -> Language -> CanonGrammar +cfOfLang :: ShellState -> Language -> CF +morphoOfLang :: ShellState -> Language -> Morpho +optionsOfLang :: ShellState -> Language -> Options + grammarOfLang st = stateGrammarST . stateGrammarOfLang st cfOfLang st = stateCF . stateGrammarOfLang st morphoOfLang st = stateMorpho . stateGrammarOfLang st @@ -304,7 +326,17 @@ stateAbstractGrammar st = StGr { } --- | analysing shell state into parts +-- analysing shell state into parts + +globalOptions :: ShellState -> Options +allLanguages :: ShellState -> [Language] +allCategories :: ShellState -> [G.Cat] +allStateGrammars :: ShellState -> [StateGrammar] +allStateGrammarsWithNames :: ShellState -> [(Language, StateGrammar)] +allGrammarFileNames :: ShellState -> [String] +allActiveStateGrammarsWithNames :: ShellState -> [(Language, StateGrammar)] +allActiveGrammars :: ShellState -> [StateGrammar] + globalOptions = gloptions allLanguages = map (fst . fst) . concretes allCategories = map fst . allCatsOf . canModules @@ -350,6 +382,7 @@ firstAbsCat :: Options -> StateGrammar -> G.QIdent firstAbsCat opts = cfCat2Cat . firstCatOpts opts -- | a grammar can have start category as option startcat=foo ; default is S +stateFirstCat :: StateGrammar -> CFCat stateFirstCat sgr = maybe (string2CFCat a "S") (string2CFCat a) $ getOptVal (stateOptions sgr) gStartCat @@ -369,6 +402,7 @@ hasStateAbstract = maybe False (const True) . maybeStateAbstract abstractOfState = maybe emptyAbstractST id . maybeStateAbstract -} +stateIsWord :: StateGrammar -> String -> Bool stateIsWord sg = isKnownWord (stateMorpho sg) @@ -420,6 +454,7 @@ type ShellStateOperErr = ShellState -> Err ShellState reinitShellState :: ShellStateOper reinitShellState = const emptyShellState +languageOn, languageOff :: Language -> ShellStateOper languageOn = languageOnOff True languageOff = languageOnOff False |
