forked from GitHub/gf-core
ShellState.changeMain
This commit is contained in:
@@ -208,6 +208,16 @@ purgeShellState sh = ShSt {
|
|||||||
purge = nubBy (\x y -> fst x == fst y) . filter (flip elem needed . fst)
|
purge = nubBy (\x y -> fst x == fst y) . filter (flip elem needed . fst)
|
||||||
acncs = maybe [] singleton (abstract sh) ++ map (snd . fst) (concretes sh)
|
acncs = maybe [] singleton (abstract sh) ++ map (snd . fst) (concretes sh)
|
||||||
|
|
||||||
|
changeMain :: Maybe Ident -> ShellState -> Err ShellState
|
||||||
|
changeMain Nothing (ShSt _ _ cs ms ss cfs pis mos os rs acs s) =
|
||||||
|
return (ShSt Nothing Nothing cs ms ss cfs pis mos os rs acs s)
|
||||||
|
changeMain (Just c) (ShSt _ _ cs ms ss cfs pis mos os rs acs s) =
|
||||||
|
case lookup c (map fst cs) of
|
||||||
|
Just i -> do
|
||||||
|
a <- M.abstractOfConcrete ms i
|
||||||
|
return (ShSt (Just a) (Just i) cs ms ss cfs pis mos os rs acs s)
|
||||||
|
_ -> P.prtBad "The state has no concrete syntax named" c
|
||||||
|
|
||||||
-- form just one state grammar, if unique, from a canonical grammar
|
-- form just one state grammar, if unique, from a canonical grammar
|
||||||
|
|
||||||
grammar2stateGrammar :: Options -> CanonGrammar -> Err StateGrammar
|
grammar2stateGrammar :: Options -> CanonGrammar -> Err StateGrammar
|
||||||
|
|||||||
Reference in New Issue
Block a user