{-# LANGUAGE TypeFamilies, Rank2Types #-}
module GOOL.Drasil.CodeInfo (CodeInfo(..)) where
import GOOL.Drasil.ClassInterface (MSBody, VSType, SValue, MSStatement,
SMethod, OOProg, ProgramSym(..), FileSym(..), PermanenceSym(..), BodySym(..),
BlockSym(..), TypeSym(..), TypeElim(..), VariableSym(..), VariableElim(..),
ValueSym(..), Argument(..), Literal(..), MathConstant(..), VariableValue(..),
CommandLineArgs(..), NumericExpression(..), BooleanExpression(..),
Comparison(..), ValueExpression(..), InternalValueExp(..), FunctionSym(..),
GetSet(..), List(..), InternalList(..), StatementSym(..),
AssignStatement(..), DeclStatement(..), IOStatement(..), StringStatement(..),
FuncAppStatement(..), CommentStatement(..), ControlStatement(..),
StatePattern(..), ObserverPattern(..), StrategyPattern(..), ScopeSym(..),
ParameterSym(..), MethodSym(..), StateVarSym(..), ClassSym(..), ModuleSym(..))
import GOOL.Drasil.CodeType (CodeType(Void))
import GOOL.Drasil.AST (ScopeTag(..), qualName)
import GOOL.Drasil.CodeAnalysis (ExceptionType(..))
import GOOL.Drasil.Helpers (toCode, toState)
import GOOL.Drasil.State (GOOLState, VS, lensGStoFS, lensFStoCS, lensFStoMS,
lensCStoMS, lensMStoVS, lensVStoFS, lensCStoFS, modifyReturn,
setClassName, getClassName, setModuleName, getModuleName, addClass,
updateClassMap, addException, updateMethodExcMap, updateCallMap, addCall,
callMapTransClosure, updateMEMWithCalls)
import Control.Monad.State (State, modify)
import qualified Control.Monad.State as S (get)
import Control.Lens.Zoom (zoom)
import Data.Maybe (fromMaybe)
newtype CodeInfo a = CI {CodeInfo a -> a
unCI :: a} deriving CodeInfo a -> CodeInfo a -> Bool
(CodeInfo a -> CodeInfo a -> Bool)
-> (CodeInfo a -> CodeInfo a -> Bool) -> Eq (CodeInfo a)
forall a. Eq a => CodeInfo a -> CodeInfo a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CodeInfo a -> CodeInfo a -> Bool
$c/= :: forall a. Eq a => CodeInfo a -> CodeInfo a -> Bool
== :: CodeInfo a -> CodeInfo a -> Bool
$c== :: forall a. Eq a => CodeInfo a -> CodeInfo a -> Bool
Eq
instance Functor CodeInfo where
fmap :: (a -> b) -> CodeInfo a -> CodeInfo b
fmap f :: a -> b
f (CI x :: a
x) = b -> CodeInfo b
forall a. a -> CodeInfo a
CI (a -> b
f a
x)
instance Applicative CodeInfo where
pure :: a -> CodeInfo a
pure = a -> CodeInfo a
forall a. a -> CodeInfo a
CI
(CI f :: a -> b
f) <*> :: CodeInfo (a -> b) -> CodeInfo a -> CodeInfo b
<*> (CI x :: a
x) = b -> CodeInfo b
forall a. a -> CodeInfo a
CI (a -> b
f a
x)
instance Monad CodeInfo where
return :: a -> CodeInfo a
return = a -> CodeInfo a
forall a. a -> CodeInfo a
CI
CI x :: a
x >>= :: CodeInfo a -> (a -> CodeInfo b) -> CodeInfo b
>>= f :: a -> CodeInfo b
f = a -> CodeInfo b
f a
x
instance OOProg CodeInfo where
instance ProgramSym CodeInfo where
type Program CodeInfo = GOOLState
prog :: Label -> [SFile CodeInfo] -> GSProgram CodeInfo
prog _ fs :: [SFile CodeInfo]
fs = do
(StateT FileState Identity (CodeInfo ())
-> StateT GOOLState Identity (CodeInfo ()))
-> [StateT FileState Identity (CodeInfo ())]
-> StateT GOOLState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (LensLike'
(Zoomed (StateT FileState Identity) (CodeInfo ()))
GOOLState
FileState
-> StateT FileState Identity (CodeInfo ())
-> StateT GOOLState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT FileState Identity) (CodeInfo ()))
GOOLState
FileState
Lens' GOOLState FileState
lensGStoFS) [StateT FileState Identity (CodeInfo ())]
[SFile CodeInfo]
fs
(GOOLState -> GOOLState) -> StateT GOOLState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (GOOLState -> GOOLState
updateMEMWithCalls (GOOLState -> GOOLState)
-> (GOOLState -> GOOLState) -> GOOLState -> GOOLState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GOOLState -> GOOLState
callMapTransClosure)
GOOLState
s <- StateT GOOLState Identity GOOLState
forall s (m :: * -> *). MonadState s m => m s
S.get
CodeInfo GOOLState -> State GOOLState (CodeInfo GOOLState)
forall a s. a -> State s a
toState (CodeInfo GOOLState -> State GOOLState (CodeInfo GOOLState))
-> CodeInfo GOOLState -> State GOOLState (CodeInfo GOOLState)
forall a b. (a -> b) -> a -> b
$ GOOLState -> CodeInfo GOOLState
forall (r :: * -> *) a. Monad r => a -> r a
toCode GOOLState
s
instance FileSym CodeInfo where
type File CodeInfo = ()
fileDoc :: FSModule CodeInfo -> SFile CodeInfo
fileDoc = FSModule CodeInfo -> SFile CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
docMod :: Label -> [Label] -> Label -> SFile CodeInfo -> SFile CodeInfo
docMod _ _ _ = SFile CodeInfo -> SFile CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
instance PermanenceSym CodeInfo where
type Permanence CodeInfo = ()
static :: CodeInfo (Permanence CodeInfo)
static = () -> CodeInfo ()
forall (r :: * -> *) a. Monad r => a -> r a
toCode ()
dynamic :: CodeInfo (Permanence CodeInfo)
dynamic = () -> CodeInfo ()
forall (r :: * -> *) a. Monad r => a -> r a
toCode ()
instance BodySym CodeInfo where
type Body CodeInfo = ()
body :: [MSBlock CodeInfo] -> MSBody CodeInfo
body = [MSBlock CodeInfo] -> MSBody CodeInfo
forall a. [State a (CodeInfo ())] -> State a (CodeInfo ())
executeList
addComments :: Label -> MSBody CodeInfo -> MSBody CodeInfo
addComments _ _ = MSBody CodeInfo
forall s. State s (CodeInfo ())
noInfo
instance BlockSym CodeInfo where
type Block CodeInfo = ()
block :: [MSStatement CodeInfo] -> MSBlock CodeInfo
block = [MSStatement CodeInfo] -> MSBlock CodeInfo
forall a. [State a (CodeInfo ())] -> State a (CodeInfo ())
executeList
instance TypeSym CodeInfo where
type Type CodeInfo = String
bool :: VSType CodeInfo
bool = VSType CodeInfo
forall s. State s (CodeInfo Label)
noInfoType
int :: VSType CodeInfo
int = VSType CodeInfo
forall s. State s (CodeInfo Label)
noInfoType
float :: VSType CodeInfo
float = VSType CodeInfo
forall s. State s (CodeInfo Label)
noInfoType
double :: VSType CodeInfo
double = VSType CodeInfo
forall s. State s (CodeInfo Label)
noInfoType
char :: VSType CodeInfo
char = VSType CodeInfo
forall s. State s (CodeInfo Label)
noInfoType
string :: VSType CodeInfo
string = VSType CodeInfo
forall s. State s (CodeInfo Label)
noInfoType
infile :: VSType CodeInfo
infile = VSType CodeInfo
forall s. State s (CodeInfo Label)
noInfoType
outfile :: VSType CodeInfo
outfile = VSType CodeInfo
forall s. State s (CodeInfo Label)
noInfoType
listType :: VSType CodeInfo -> VSType CodeInfo
listType _ = VSType CodeInfo
forall s. State s (CodeInfo Label)
noInfoType
arrayType :: VSType CodeInfo -> VSType CodeInfo
arrayType _ = VSType CodeInfo
forall s. State s (CodeInfo Label)
noInfoType
listInnerType :: VSType CodeInfo -> VSType CodeInfo
listInnerType _ = VSType CodeInfo
forall s. State s (CodeInfo Label)
noInfoType
obj :: Label -> VSType CodeInfo
obj = CodeInfo Label -> State ValueState (CodeInfo Label)
forall a s. a -> State s a
toState (CodeInfo Label -> State ValueState (CodeInfo Label))
-> (Label -> CodeInfo Label)
-> Label
-> State ValueState (CodeInfo Label)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Label -> CodeInfo Label
forall (r :: * -> *) a. Monad r => a -> r a
toCode
funcType :: [VSType CodeInfo] -> VSType CodeInfo -> VSType CodeInfo
funcType _ _ = VSType CodeInfo
forall s. State s (CodeInfo Label)
noInfoType
void :: VSType CodeInfo
void = VSType CodeInfo
forall s. State s (CodeInfo Label)
noInfoType
instance TypeElim CodeInfo where
getType :: CodeInfo (Type CodeInfo) -> CodeType
getType _ = CodeType
Void
getTypeString :: CodeInfo (Type CodeInfo) -> Label
getTypeString = CodeInfo (Type CodeInfo) -> Label
forall a. CodeInfo a -> a
unCI
instance VariableSym CodeInfo where
type Variable CodeInfo = ()
var :: Label -> VSType CodeInfo -> SVariable CodeInfo
var _ _ = SVariable CodeInfo
forall s. State s (CodeInfo ())
noInfo
staticVar :: Label -> VSType CodeInfo -> SVariable CodeInfo
staticVar _ _ = SVariable CodeInfo
forall s. State s (CodeInfo ())
noInfo
const :: Label -> VSType CodeInfo -> SVariable CodeInfo
const _ _ = SVariable CodeInfo
forall s. State s (CodeInfo ())
noInfo
extVar :: Label -> Label -> VSType CodeInfo -> SVariable CodeInfo
extVar _ _ _ = SVariable CodeInfo
forall s. State s (CodeInfo ())
noInfo
self :: SVariable CodeInfo
self = SVariable CodeInfo
forall s. State s (CodeInfo ())
noInfo
classVar :: VSType CodeInfo -> SVariable CodeInfo -> SVariable CodeInfo
classVar _ _ = SVariable CodeInfo
forall s. State s (CodeInfo ())
noInfo
extClassVar :: VSType CodeInfo -> SVariable CodeInfo -> SVariable CodeInfo
extClassVar _ _ = SVariable CodeInfo
forall s. State s (CodeInfo ())
noInfo
objVar :: SVariable CodeInfo -> SVariable CodeInfo -> SVariable CodeInfo
objVar _ _ = SVariable CodeInfo
forall s. State s (CodeInfo ())
noInfo
objVarSelf :: SVariable CodeInfo -> SVariable CodeInfo
objVarSelf _ = SVariable CodeInfo
forall s. State s (CodeInfo ())
noInfo
arrayElem :: Integer -> SVariable CodeInfo -> SVariable CodeInfo
arrayElem _ _ = SVariable CodeInfo
forall s. State s (CodeInfo ())
noInfo
instance VariableElim CodeInfo where
variableName :: CodeInfo (Variable CodeInfo) -> Label
variableName _ = ""
variableType :: CodeInfo (Variable CodeInfo) -> CodeInfo (Type CodeInfo)
variableType _ = Label -> CodeInfo Label
forall (r :: * -> *) a. Monad r => a -> r a
toCode ""
instance ValueSym CodeInfo where
type Value CodeInfo = ()
valueType :: CodeInfo (Value CodeInfo) -> CodeInfo (Type CodeInfo)
valueType _ = Label -> CodeInfo Label
forall (r :: * -> *) a. Monad r => a -> r a
toCode ""
instance Argument CodeInfo where
pointerArg :: SValue CodeInfo -> SValue CodeInfo
pointerArg = SValue CodeInfo -> SValue CodeInfo
forall a. a -> a
id
instance Literal CodeInfo where
litTrue :: SValue CodeInfo
litTrue = SValue CodeInfo
forall s. State s (CodeInfo ())
noInfo
litFalse :: SValue CodeInfo
litFalse = SValue CodeInfo
forall s. State s (CodeInfo ())
noInfo
litChar :: Char -> SValue CodeInfo
litChar _ = SValue CodeInfo
forall s. State s (CodeInfo ())
noInfo
litDouble :: Double -> SValue CodeInfo
litDouble _ = SValue CodeInfo
forall s. State s (CodeInfo ())
noInfo
litFloat :: Float -> SValue CodeInfo
litFloat _ = SValue CodeInfo
forall s. State s (CodeInfo ())
noInfo
litInt :: Integer -> SValue CodeInfo
litInt _ = SValue CodeInfo
forall s. State s (CodeInfo ())
noInfo
litString :: Label -> SValue CodeInfo
litString _ = SValue CodeInfo
forall s. State s (CodeInfo ())
noInfo
litArray :: VSType CodeInfo -> [SValue CodeInfo] -> SValue CodeInfo
litArray _ = [SValue CodeInfo] -> SValue CodeInfo
forall a. [State a (CodeInfo ())] -> State a (CodeInfo ())
executeList
litList :: VSType CodeInfo -> [SValue CodeInfo] -> SValue CodeInfo
litList _ = [SValue CodeInfo] -> SValue CodeInfo
forall a. [State a (CodeInfo ())] -> State a (CodeInfo ())
executeList
instance MathConstant CodeInfo where
pi :: SValue CodeInfo
pi = SValue CodeInfo
forall s. State s (CodeInfo ())
noInfo
instance VariableValue CodeInfo where
valueOf :: SVariable CodeInfo -> SValue CodeInfo
valueOf _ = SValue CodeInfo
forall s. State s (CodeInfo ())
noInfo
instance CommandLineArgs CodeInfo where
arg :: Integer -> SValue CodeInfo
arg _ = SValue CodeInfo
forall s. State s (CodeInfo ())
noInfo
argsList :: SValue CodeInfo
argsList = SValue CodeInfo
forall s. State s (CodeInfo ())
noInfo
argExists :: Integer -> SValue CodeInfo
argExists _ = SValue CodeInfo
forall s. State s (CodeInfo ())
noInfo
instance NumericExpression CodeInfo where
#~ :: SValue CodeInfo -> SValue CodeInfo
(#~) = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
#/^ :: SValue CodeInfo -> SValue CodeInfo
(#/^) = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
#| :: SValue CodeInfo -> SValue CodeInfo
(#|) = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
#+ :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
(#+) = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
#- :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
(#-) = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
#* :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
(#*) = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
#/ :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
(#/) = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
#% :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
(#%) = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
#^ :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
(#^) = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
log :: SValue CodeInfo -> SValue CodeInfo
log = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
ln :: SValue CodeInfo -> SValue CodeInfo
ln = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
exp :: SValue CodeInfo -> SValue CodeInfo
exp = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
sin :: SValue CodeInfo -> SValue CodeInfo
sin = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
cos :: SValue CodeInfo -> SValue CodeInfo
cos = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
tan :: SValue CodeInfo -> SValue CodeInfo
tan = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
csc :: SValue CodeInfo -> SValue CodeInfo
csc = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
sec :: SValue CodeInfo -> SValue CodeInfo
sec = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
cot :: SValue CodeInfo -> SValue CodeInfo
cot = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
arcsin :: SValue CodeInfo -> SValue CodeInfo
arcsin = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
arccos :: SValue CodeInfo -> SValue CodeInfo
arccos = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
arctan :: SValue CodeInfo -> SValue CodeInfo
arctan = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
floor :: SValue CodeInfo -> SValue CodeInfo
floor = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
ceil :: SValue CodeInfo -> SValue CodeInfo
ceil = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
instance BooleanExpression CodeInfo where
?! :: SValue CodeInfo -> SValue CodeInfo
(?!) = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
?&& :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
(?&&) = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
?|| :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
(?||) = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
instance Comparison CodeInfo where
?< :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
(?<) = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
?<= :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
(?<=) = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
?> :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
(?>) = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
?>= :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
(?>=) = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
?== :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
(?==) = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
?!= :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
(?!=) = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
instance ValueExpression CodeInfo where
inlineIf :: SValue CodeInfo
-> SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
inlineIf = SValue CodeInfo
-> SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
execute3
funcAppMixedArgs :: MixedCall CodeInfo
funcAppMixedArgs n :: Label
n _ = Label
-> [VS (CodeInfo ())]
-> [(VS (CodeInfo ()), VS (CodeInfo ()))]
-> VS (CodeInfo ())
currModCall Label
n
selfFuncAppMixedArgs :: MixedCall CodeInfo
selfFuncAppMixedArgs = MixedCall CodeInfo
forall (r :: * -> *). ValueExpression r => MixedCall r
funcAppMixedArgs
extFuncAppMixedArgs :: Label -> MixedCall CodeInfo
extFuncAppMixedArgs l :: Label
l n :: Label
n _ vs :: [SValue CodeInfo]
vs ns :: [(SVariable CodeInfo, SValue CodeInfo)]
ns = do
[VS (CodeInfo ())] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [VS (CodeInfo ())]
[SValue CodeInfo]
vs
[(VS (CodeInfo ()), VS (CodeInfo ()))] -> VS (CodeInfo ())
forall a.
[(State a (CodeInfo ()), State a (CodeInfo ()))]
-> State a (CodeInfo ())
executePairList [(VS (CodeInfo ()), VS (CodeInfo ()))]
[(SVariable CodeInfo, SValue CodeInfo)]
ns
Label -> Label -> SValue CodeInfo
addExternalCall Label
l Label
n
libFuncAppMixedArgs :: Label -> MixedCall CodeInfo
libFuncAppMixedArgs = Label -> MixedCall CodeInfo
forall (r :: * -> *). ValueExpression r => Label -> MixedCall r
extFuncAppMixedArgs
newObjMixedArgs :: MixedCtorCall CodeInfo
newObjMixedArgs ot :: VSType CodeInfo
ot vs :: [SValue CodeInfo]
vs ns :: [(SVariable CodeInfo, SValue CodeInfo)]
ns = do
[VS (CodeInfo ())] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [VS (CodeInfo ())]
[SValue CodeInfo]
vs
[(VS (CodeInfo ()), VS (CodeInfo ()))] -> VS (CodeInfo ())
forall a.
[(State a (CodeInfo ()), State a (CodeInfo ()))]
-> State a (CodeInfo ())
executePairList [(VS (CodeInfo ()), VS (CodeInfo ()))]
[(SVariable CodeInfo, SValue CodeInfo)]
ns
VSType CodeInfo -> SValue CodeInfo
addCurrModConstructorCall VSType CodeInfo
ot
extNewObjMixedArgs :: MixedCall CodeInfo
extNewObjMixedArgs l :: Label
l ot :: VSType CodeInfo
ot vs :: [SValue CodeInfo]
vs ns :: [(SVariable CodeInfo, SValue CodeInfo)]
ns = do
[VS (CodeInfo ())] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [VS (CodeInfo ())]
[SValue CodeInfo]
vs
[(VS (CodeInfo ()), VS (CodeInfo ()))] -> VS (CodeInfo ())
forall a.
[(State a (CodeInfo ()), State a (CodeInfo ()))]
-> State a (CodeInfo ())
executePairList [(VS (CodeInfo ()), VS (CodeInfo ()))]
[(SVariable CodeInfo, SValue CodeInfo)]
ns
Label -> VSType CodeInfo -> SValue CodeInfo
addExternalConstructorCall Label
l VSType CodeInfo
ot
libNewObjMixedArgs :: MixedCall CodeInfo
libNewObjMixedArgs = MixedCall CodeInfo
forall (r :: * -> *). ValueExpression r => MixedCall r
extNewObjMixedArgs
lambda :: [SVariable CodeInfo] -> SValue CodeInfo -> SValue CodeInfo
lambda _ = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
notNull :: SValue CodeInfo -> SValue CodeInfo
notNull = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
instance InternalValueExp CodeInfo where
objMethodCallMixedArgs' :: Label
-> VSType CodeInfo
-> SValue CodeInfo
-> [SValue CodeInfo]
-> [(SVariable CodeInfo, SValue CodeInfo)]
-> SValue CodeInfo
objMethodCallMixedArgs' n :: Label
n _ v :: SValue CodeInfo
v vs :: [SValue CodeInfo]
vs ns :: [(SVariable CodeInfo, SValue CodeInfo)]
ns = VS (CodeInfo ())
SValue CodeInfo
v VS (CodeInfo ()) -> VS (CodeInfo ()) -> VS (CodeInfo ())
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Label
-> [VS (CodeInfo ())]
-> [(VS (CodeInfo ()), VS (CodeInfo ()))]
-> VS (CodeInfo ())
currModCall Label
n [VS (CodeInfo ())]
[SValue CodeInfo]
vs [(VS (CodeInfo ()), VS (CodeInfo ()))]
[(SVariable CodeInfo, SValue CodeInfo)]
ns
instance FunctionSym CodeInfo where
type Function CodeInfo = ()
func :: Label
-> VSType CodeInfo -> [SValue CodeInfo] -> VSFunction CodeInfo
func _ _ = [SValue CodeInfo] -> VSFunction CodeInfo
forall a. [State a (CodeInfo ())] -> State a (CodeInfo ())
executeList
objAccess :: SValue CodeInfo -> VSFunction CodeInfo -> SValue CodeInfo
objAccess = SValue CodeInfo -> VSFunction CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
instance GetSet CodeInfo where
get :: SValue CodeInfo -> SVariable CodeInfo -> SValue CodeInfo
get v :: SValue CodeInfo
v _ = VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1 VS (CodeInfo ())
SValue CodeInfo
v
set :: SValue CodeInfo
-> SVariable CodeInfo -> SValue CodeInfo -> SValue CodeInfo
set v :: SValue CodeInfo
v _ = VS (CodeInfo ()) -> VS (CodeInfo ()) -> VS (CodeInfo ())
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2 VS (CodeInfo ())
SValue CodeInfo
v
instance List CodeInfo where
listSize :: SValue CodeInfo -> SValue CodeInfo
listSize = SValue CodeInfo -> SValue CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
listAdd :: SValue CodeInfo
-> SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
listAdd = SValue CodeInfo
-> SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
execute3
listAppend :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
listAppend = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
listAccess :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
listAccess = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
listSet :: SValue CodeInfo
-> SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
listSet = SValue CodeInfo
-> SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
execute3
indexOf :: SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
indexOf = SValue CodeInfo -> SValue CodeInfo -> SValue CodeInfo
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2
instance InternalList CodeInfo where
listSlice' :: Maybe (SValue CodeInfo)
-> Maybe (SValue CodeInfo)
-> Maybe (SValue CodeInfo)
-> SVariable CodeInfo
-> SValue CodeInfo
-> MSBlock CodeInfo
listSlice' b :: Maybe (SValue CodeInfo)
b e :: Maybe (SValue CodeInfo)
e s :: Maybe (SValue CodeInfo)
s _ vl :: SValue CodeInfo
vl = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> MSBlock CodeInfo)
-> VS (CodeInfo ()) -> MSBlock CodeInfo
forall a b. (a -> b) -> a -> b
$ do
(Maybe (VS (CodeInfo ())) -> VS (CodeInfo ()))
-> [Maybe (VS (CodeInfo ()))] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (VS (CodeInfo ()) -> Maybe (VS (CodeInfo ())) -> VS (CodeInfo ())
forall a. a -> Maybe a -> a
fromMaybe VS (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo) [Maybe (VS (CodeInfo ()))
Maybe (SValue CodeInfo)
b,Maybe (VS (CodeInfo ()))
Maybe (SValue CodeInfo)
e,Maybe (VS (CodeInfo ()))
Maybe (SValue CodeInfo)
s]
CodeInfo ()
_ <- VS (CodeInfo ())
SValue CodeInfo
vl
VS (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo
instance StatementSym CodeInfo where
type Statement CodeInfo = ()
valStmt :: SValue CodeInfo -> MSStatement CodeInfo
valStmt = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
multi :: [MSStatement CodeInfo] -> MSStatement CodeInfo
multi = [MSStatement CodeInfo] -> MSStatement CodeInfo
forall a. [State a (CodeInfo ())] -> State a (CodeInfo ())
executeList
instance AssignStatement CodeInfo where
assign :: SVariable CodeInfo -> SValue CodeInfo -> MSStatement CodeInfo
assign _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
&-= :: SVariable CodeInfo -> SValue CodeInfo -> MSStatement CodeInfo
(&-=) _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
&+= :: SVariable CodeInfo -> SValue CodeInfo -> MSStatement CodeInfo
(&+=) _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
&++ :: SVariable CodeInfo -> MSStatement CodeInfo
(&++) _ = MSStatement CodeInfo
forall s. State s (CodeInfo ())
noInfo
&-- :: SVariable CodeInfo -> MSStatement CodeInfo
(&--) _ = MSStatement CodeInfo
forall s. State s (CodeInfo ())
noInfo
instance DeclStatement CodeInfo where
varDec :: SVariable CodeInfo -> MSStatement CodeInfo
varDec _ = MSStatement CodeInfo
forall s. State s (CodeInfo ())
noInfo
varDecDef :: SVariable CodeInfo -> SValue CodeInfo -> MSStatement CodeInfo
varDecDef _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
listDec :: Integer -> SVariable CodeInfo -> MSStatement CodeInfo
listDec _ _ = MSStatement CodeInfo
forall s. State s (CodeInfo ())
noInfo
listDecDef :: SVariable CodeInfo -> [SValue CodeInfo] -> MSStatement CodeInfo
listDecDef _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> ([VS (CodeInfo ())] -> VS (CodeInfo ()))
-> [VS (CodeInfo ())]
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [VS (CodeInfo ())] -> VS (CodeInfo ())
forall a. [State a (CodeInfo ())] -> State a (CodeInfo ())
executeList
arrayDec :: Integer -> SVariable CodeInfo -> MSStatement CodeInfo
arrayDec _ _ = MSStatement CodeInfo
forall s. State s (CodeInfo ())
noInfo
arrayDecDef :: SVariable CodeInfo -> [SValue CodeInfo] -> MSStatement CodeInfo
arrayDecDef _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> ([VS (CodeInfo ())] -> VS (CodeInfo ()))
-> [VS (CodeInfo ())]
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [VS (CodeInfo ())] -> VS (CodeInfo ())
forall a. [State a (CodeInfo ())] -> State a (CodeInfo ())
executeList
objDecDef :: SVariable CodeInfo -> SValue CodeInfo -> MSStatement CodeInfo
objDecDef _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
objDecNew :: SVariable CodeInfo -> [SValue CodeInfo] -> MSStatement CodeInfo
objDecNew _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> ([VS (CodeInfo ())] -> VS (CodeInfo ()))
-> [VS (CodeInfo ())]
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [VS (CodeInfo ())] -> VS (CodeInfo ())
forall a. [State a (CodeInfo ())] -> State a (CodeInfo ())
executeList
extObjDecNew :: Label
-> SVariable CodeInfo -> [SValue CodeInfo] -> MSStatement CodeInfo
extObjDecNew _ _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> ([VS (CodeInfo ())] -> VS (CodeInfo ()))
-> [VS (CodeInfo ())]
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [VS (CodeInfo ())] -> VS (CodeInfo ())
forall a. [State a (CodeInfo ())] -> State a (CodeInfo ())
executeList
constDecDef :: SVariable CodeInfo -> SValue CodeInfo -> MSStatement CodeInfo
constDecDef _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
funcDecDef :: SVariable CodeInfo
-> [SVariable CodeInfo] -> MSBody CodeInfo -> MSStatement CodeInfo
funcDecDef _ _ = MSBody CodeInfo -> MSStatement CodeInfo
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
instance IOStatement CodeInfo where
print :: SValue CodeInfo -> MSStatement CodeInfo
print = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
printLn :: SValue CodeInfo -> MSStatement CodeInfo
printLn = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
printStr :: Label -> MSStatement CodeInfo
printStr _ = MSStatement CodeInfo
forall s. State s (CodeInfo ())
noInfo
printStrLn :: Label -> MSStatement CodeInfo
printStrLn _ = MSStatement CodeInfo
forall s. State s (CodeInfo ())
noInfo
printFile :: SValue CodeInfo -> SValue CodeInfo -> MSStatement CodeInfo
printFile v :: SValue CodeInfo
v = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ()) -> VS (CodeInfo ())
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2 VS (CodeInfo ())
SValue CodeInfo
v
printFileLn :: SValue CodeInfo -> SValue CodeInfo -> MSStatement CodeInfo
printFileLn v :: SValue CodeInfo
v = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ()) -> VS (CodeInfo ())
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2 VS (CodeInfo ())
SValue CodeInfo
v
printFileStr :: SValue CodeInfo -> Label -> MSStatement CodeInfo
printFileStr v :: SValue CodeInfo
v _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> MSStatement CodeInfo)
-> VS (CodeInfo ()) -> MSStatement CodeInfo
forall a b. (a -> b) -> a -> b
$ VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1 VS (CodeInfo ())
SValue CodeInfo
v
printFileStrLn :: SValue CodeInfo -> Label -> MSStatement CodeInfo
printFileStrLn v :: SValue CodeInfo
v _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> MSStatement CodeInfo)
-> VS (CodeInfo ()) -> MSStatement CodeInfo
forall a b. (a -> b) -> a -> b
$ VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1 VS (CodeInfo ())
SValue CodeInfo
v
getInput :: SVariable CodeInfo -> MSStatement CodeInfo
getInput _ = MSStatement CodeInfo
forall s. State s (CodeInfo ())
noInfo
discardInput :: MSStatement CodeInfo
discardInput = MSStatement CodeInfo
forall s. State s (CodeInfo ())
noInfo
getFileInput :: SValue CodeInfo -> SVariable CodeInfo -> MSStatement CodeInfo
getFileInput v :: SValue CodeInfo
v _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> MSStatement CodeInfo)
-> VS (CodeInfo ()) -> MSStatement CodeInfo
forall a b. (a -> b) -> a -> b
$ VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1 VS (CodeInfo ())
SValue CodeInfo
v
discardFileInput :: SValue CodeInfo -> MSStatement CodeInfo
discardFileInput = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
openFileR :: SVariable CodeInfo -> SValue CodeInfo -> MSStatement CodeInfo
openFileR _ v :: SValue CodeInfo
v = (MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (ExceptionType -> MethodState -> MethodState
addException ExceptionType
FileNotFound) StateT MethodState Identity ()
-> StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1 (LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS VS (CodeInfo ())
SValue CodeInfo
v)
openFileW :: SVariable CodeInfo -> SValue CodeInfo -> MSStatement CodeInfo
openFileW _ v :: SValue CodeInfo
v = (MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (ExceptionType -> MethodState -> MethodState
addException ExceptionType
IO) StateT MethodState Identity ()
-> StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1 (LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS VS (CodeInfo ())
SValue CodeInfo
v)
openFileA :: SVariable CodeInfo -> SValue CodeInfo -> MSStatement CodeInfo
openFileA _ v :: SValue CodeInfo
v = (MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (ExceptionType -> MethodState -> MethodState
addException ExceptionType
IO) StateT MethodState Identity ()
-> StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1 (LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS VS (CodeInfo ())
SValue CodeInfo
v)
closeFile :: SValue CodeInfo -> MSStatement CodeInfo
closeFile = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
getFileInputLine :: SValue CodeInfo -> SVariable CodeInfo -> MSStatement CodeInfo
getFileInputLine v :: SValue CodeInfo
v _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> MSStatement CodeInfo)
-> VS (CodeInfo ()) -> MSStatement CodeInfo
forall a b. (a -> b) -> a -> b
$ VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1 VS (CodeInfo ())
SValue CodeInfo
v
discardFileLine :: SValue CodeInfo -> MSStatement CodeInfo
discardFileLine = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
getFileInputAll :: SValue CodeInfo -> SVariable CodeInfo -> MSStatement CodeInfo
getFileInputAll v :: SValue CodeInfo
v _ = StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1 (LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS VS (CodeInfo ())
SValue CodeInfo
v)
instance StringStatement CodeInfo where
stringSplit :: Char
-> SVariable CodeInfo -> SValue CodeInfo -> MSStatement CodeInfo
stringSplit _ _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
stringListVals :: [SVariable CodeInfo] -> SValue CodeInfo -> MSStatement CodeInfo
stringListVals _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
stringListLists :: [SVariable CodeInfo] -> SValue CodeInfo -> MSStatement CodeInfo
stringListLists _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
instance FuncAppStatement CodeInfo where
inOutCall :: InOutCall CodeInfo
inOutCall n :: Label
n vs :: [SValue CodeInfo]
vs _ _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> MSStatement CodeInfo)
-> VS (CodeInfo ()) -> MSStatement CodeInfo
forall a b. (a -> b) -> a -> b
$ do
[VS (CodeInfo ())] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [VS (CodeInfo ())]
[SValue CodeInfo]
vs
Label -> SValue CodeInfo
addCurrModCall Label
n
selfInOutCall :: InOutCall CodeInfo
selfInOutCall n :: Label
n vs :: [SValue CodeInfo]
vs _ _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> MSStatement CodeInfo)
-> VS (CodeInfo ()) -> MSStatement CodeInfo
forall a b. (a -> b) -> a -> b
$ do
[VS (CodeInfo ())] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [VS (CodeInfo ())]
[SValue CodeInfo]
vs
Label -> SValue CodeInfo
addCurrModCall Label
n
extInOutCall :: Label -> InOutCall CodeInfo
extInOutCall l :: Label
l n :: Label
n vs :: [SValue CodeInfo]
vs _ _ = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> MSStatement CodeInfo)
-> VS (CodeInfo ()) -> MSStatement CodeInfo
forall a b. (a -> b) -> a -> b
$ do
[VS (CodeInfo ())] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [VS (CodeInfo ())]
[SValue CodeInfo]
vs
Label -> Label -> SValue CodeInfo
addExternalCall Label
l Label
n
instance CommentStatement CodeInfo where
comment :: Label -> MSStatement CodeInfo
comment _ = MSStatement CodeInfo
forall s. State s (CodeInfo ())
noInfo
instance ControlStatement CodeInfo where
break :: MSStatement CodeInfo
break = MSStatement CodeInfo
forall s. State s (CodeInfo ())
noInfo
continue :: MSStatement CodeInfo
continue = MSStatement CodeInfo
forall s. State s (CodeInfo ())
noInfo
returnStmt :: SValue CodeInfo -> MSStatement CodeInfo
returnStmt = LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> (VS (CodeInfo ()) -> VS (CodeInfo ()))
-> VS (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VS (CodeInfo ()) -> VS (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1
throw :: Label -> MSStatement CodeInfo
throw _ = (MethodState -> MethodState)
-> CodeInfo () -> StateT MethodState Identity (CodeInfo ())
forall s a. (s -> s) -> a -> State s a
modifyReturn (ExceptionType -> MethodState -> MethodState
addException ExceptionType
Standard) (() -> CodeInfo ()
forall (r :: * -> *) a. Monad r => a -> r a
toCode ())
ifCond :: [(SValue CodeInfo, MSBody CodeInfo)]
-> MSBody CodeInfo -> MSStatement CodeInfo
ifCond = [(SValue CodeInfo, MSBody CodeInfo)]
-> MSBody CodeInfo -> MSStatement CodeInfo
evalConds
switch :: SValue CodeInfo
-> [(SValue CodeInfo, MSBody CodeInfo)]
-> MSBody CodeInfo
-> MSStatement CodeInfo
switch v :: SValue CodeInfo
v cs :: [(SValue CodeInfo, MSBody CodeInfo)]
cs b :: MSBody CodeInfo
b = do
CodeInfo ()
_ <- LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS VS (CodeInfo ())
SValue CodeInfo
v
[(SValue CodeInfo, MSBody CodeInfo)]
-> MSBody CodeInfo -> MSStatement CodeInfo
evalConds [(SValue CodeInfo, MSBody CodeInfo)]
cs MSBody CodeInfo
b
ifExists :: SValue CodeInfo
-> MSBody CodeInfo -> MSBody CodeInfo -> MSStatement CodeInfo
ifExists v :: SValue CodeInfo
v = StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
execute3 (LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS VS (CodeInfo ())
SValue CodeInfo
v)
for :: MSStatement CodeInfo
-> SValue CodeInfo
-> MSStatement CodeInfo
-> MSBody CodeInfo
-> MSStatement CodeInfo
for dec :: MSStatement CodeInfo
dec v :: SValue CodeInfo
v = StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
execute4 StateT MethodState Identity (CodeInfo ())
MSStatement CodeInfo
dec (LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS VS (CodeInfo ())
SValue CodeInfo
v)
forRange :: SVariable CodeInfo
-> SValue CodeInfo
-> SValue CodeInfo
-> SValue CodeInfo
-> MSBody CodeInfo
-> MSStatement CodeInfo
forRange _ b :: SValue CodeInfo
b e :: SValue CodeInfo
e s :: SValue CodeInfo
s = StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
execute4 (LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS VS (CodeInfo ())
SValue CodeInfo
b) (LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS VS (CodeInfo ())
SValue CodeInfo
e)
(LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS VS (CodeInfo ())
SValue CodeInfo
s)
forEach :: SVariable CodeInfo
-> SValue CodeInfo -> MSBody CodeInfo -> MSStatement CodeInfo
forEach _ v :: SValue CodeInfo
v = StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2 (LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS VS (CodeInfo ())
SValue CodeInfo
v)
while :: SValue CodeInfo -> MSBody CodeInfo -> MSStatement CodeInfo
while v :: SValue CodeInfo
v = StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2 (LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS VS (CodeInfo ())
SValue CodeInfo
v)
tryCatch :: MSBody CodeInfo -> MSBody CodeInfo -> MSStatement CodeInfo
tryCatch _ cb :: MSBody CodeInfo
cb = do
CodeInfo ()
_ <- StateT MethodState Identity (CodeInfo ())
MSBody CodeInfo
cb
StateT MethodState Identity (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo
instance StatePattern CodeInfo where
checkState :: Label
-> [(SValue CodeInfo, MSBody CodeInfo)]
-> MSBody CodeInfo
-> MSStatement CodeInfo
checkState _ = [(SValue CodeInfo, MSBody CodeInfo)]
-> MSBody CodeInfo -> MSStatement CodeInfo
evalConds
instance ObserverPattern CodeInfo where
notifyObservers :: VSFunction CodeInfo -> VSType CodeInfo -> MSStatement CodeInfo
notifyObservers f :: VSFunction CodeInfo
f _ = StateT MethodState Identity (CodeInfo ())
-> StateT MethodState Identity (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1 (LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS VS (CodeInfo ())
VSFunction CodeInfo
f)
instance StrategyPattern CodeInfo where
runStrategy :: Label
-> [(Label, MSBody CodeInfo)]
-> Maybe (SValue CodeInfo)
-> Maybe (SVariable CodeInfo)
-> MSBlock CodeInfo
runStrategy _ ss :: [(Label, MSBody CodeInfo)]
ss vl :: Maybe (SValue CodeInfo)
vl _ = do
((Label, StateT MethodState Identity (CodeInfo ()))
-> StateT MethodState Identity (CodeInfo ()))
-> [(Label, StateT MethodState Identity (CodeInfo ()))]
-> StateT MethodState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (Label, StateT MethodState Identity (CodeInfo ()))
-> StateT MethodState Identity (CodeInfo ())
forall a b. (a, b) -> b
snd [(Label, StateT MethodState Identity (CodeInfo ()))]
[(Label, MSBody CodeInfo)]
ss
CodeInfo ()
_ <- LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall a b. (a -> b) -> a -> b
$ VS (CodeInfo ()) -> Maybe (VS (CodeInfo ())) -> VS (CodeInfo ())
forall a. a -> Maybe a -> a
fromMaybe VS (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo Maybe (VS (CodeInfo ()))
Maybe (SValue CodeInfo)
vl
StateT MethodState Identity (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo
instance ScopeSym CodeInfo where
type Scope CodeInfo = ScopeTag
private :: CodeInfo (Scope CodeInfo)
private = ScopeTag -> CodeInfo ScopeTag
forall (r :: * -> *) a. Monad r => a -> r a
toCode ScopeTag
Priv
public :: CodeInfo (Scope CodeInfo)
public = ScopeTag -> CodeInfo ScopeTag
forall (r :: * -> *) a. Monad r => a -> r a
toCode ScopeTag
Pub
instance ParameterSym CodeInfo where
type Parameter CodeInfo = ()
param :: SVariable CodeInfo -> MSParameter CodeInfo
param _ = MSParameter CodeInfo
forall s. State s (CodeInfo ())
noInfo
pointerParam :: SVariable CodeInfo -> MSParameter CodeInfo
pointerParam _ = MSParameter CodeInfo
forall s. State s (CodeInfo ())
noInfo
instance MethodSym CodeInfo where
type Method CodeInfo = ()
method :: Label
-> CodeInfo (Scope CodeInfo)
-> CodeInfo (Permanence CodeInfo)
-> VSType CodeInfo
-> [MSParameter CodeInfo]
-> MSBody CodeInfo
-> SMethod CodeInfo
method n :: Label
n _ _ _ _ = Label -> MSBody CodeInfo -> SMethod CodeInfo
updateMEMandCM Label
n
getMethod :: SVariable CodeInfo -> SMethod CodeInfo
getMethod _ = SMethod CodeInfo
forall s. State s (CodeInfo ())
noInfo
setMethod :: SVariable CodeInfo -> SMethod CodeInfo
setMethod _ = SMethod CodeInfo
forall s. State s (CodeInfo ())
noInfo
constructor :: [MSParameter CodeInfo]
-> [(SVariable CodeInfo, SValue CodeInfo)]
-> MSBody CodeInfo
-> SMethod CodeInfo
constructor _ il :: [(SVariable CodeInfo, SValue CodeInfo)]
il b :: MSBody CodeInfo
b = do
((VS (CodeInfo ()), VS (CodeInfo ()))
-> StateT MethodState Identity (CodeInfo ()))
-> [(VS (CodeInfo ()), VS (CodeInfo ()))]
-> StateT MethodState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> ((VS (CodeInfo ()), VS (CodeInfo ())) -> VS (CodeInfo ()))
-> (VS (CodeInfo ()), VS (CodeInfo ()))
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (VS (CodeInfo ()), VS (CodeInfo ())) -> VS (CodeInfo ())
forall a b. (a, b) -> b
snd) [(VS (CodeInfo ()), VS (CodeInfo ()))]
[(SVariable CodeInfo, SValue CodeInfo)]
il
CodeInfo ()
_ <- StateT MethodState Identity (CodeInfo ())
MSBody CodeInfo
b
Label
cn <- MS Label
getClassName
(MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (Label -> MethodState -> MethodState
updateCallMap Label
cn (MethodState -> MethodState)
-> (MethodState -> MethodState) -> MethodState -> MethodState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Label -> MethodState -> MethodState
updateMethodExcMap Label
cn)
StateT MethodState Identity (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo
docMain :: MSBody CodeInfo -> SMethod CodeInfo
docMain = Label -> MSBody CodeInfo -> SMethod CodeInfo
updateMEMandCM "main"
function :: Label
-> CodeInfo (Scope CodeInfo)
-> VSType CodeInfo
-> [MSParameter CodeInfo]
-> MSBody CodeInfo
-> SMethod CodeInfo
function n :: Label
n _ _ _ = Label -> MSBody CodeInfo -> SMethod CodeInfo
updateMEMandCM Label
n
mainFunction :: MSBody CodeInfo -> SMethod CodeInfo
mainFunction = Label -> MSBody CodeInfo -> SMethod CodeInfo
updateMEMandCM "main"
docFunc :: Label
-> [Label] -> Maybe Label -> SMethod CodeInfo -> SMethod CodeInfo
docFunc _ _ _ f :: SMethod CodeInfo
f = do
CodeInfo ()
_ <- StateT MethodState Identity (CodeInfo ())
SMethod CodeInfo
f
StateT MethodState Identity (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo
inOutMethod :: Label
-> CodeInfo (Scope CodeInfo)
-> CodeInfo (Permanence CodeInfo)
-> InOutFunc CodeInfo
inOutMethod n :: Label
n _ _ _ _ _ = Label -> MSBody CodeInfo -> SMethod CodeInfo
updateMEMandCM Label
n
docInOutMethod :: Label
-> CodeInfo (Scope CodeInfo)
-> CodeInfo (Permanence CodeInfo)
-> DocInOutFunc CodeInfo
docInOutMethod n :: Label
n _ _ _ _ _ _ = Label -> MSBody CodeInfo -> SMethod CodeInfo
updateMEMandCM Label
n
inOutFunc :: Label -> CodeInfo (Scope CodeInfo) -> InOutFunc CodeInfo
inOutFunc n :: Label
n _ _ _ _ = Label -> MSBody CodeInfo -> SMethod CodeInfo
updateMEMandCM Label
n
docInOutFunc :: Label -> CodeInfo (Scope CodeInfo) -> DocInOutFunc CodeInfo
docInOutFunc n :: Label
n _ _ _ _ _ = Label -> MSBody CodeInfo -> SMethod CodeInfo
updateMEMandCM Label
n
instance StateVarSym CodeInfo where
type StateVar CodeInfo = ()
stateVar :: CodeInfo (Scope CodeInfo)
-> CodeInfo (Permanence CodeInfo)
-> SVariable CodeInfo
-> CSStateVar CodeInfo
stateVar _ _ _ = CSStateVar CodeInfo
forall s. State s (CodeInfo ())
noInfo
stateVarDef :: CodeInfo (Scope CodeInfo)
-> CodeInfo (Permanence CodeInfo)
-> SVariable CodeInfo
-> SValue CodeInfo
-> CSStateVar CodeInfo
stateVarDef _ _ _ _ = CSStateVar CodeInfo
forall s. State s (CodeInfo ())
noInfo
constVar :: CodeInfo (Scope CodeInfo)
-> SVariable CodeInfo -> SValue CodeInfo -> CSStateVar CodeInfo
constVar _ _ _ = CSStateVar CodeInfo
forall s. State s (CodeInfo ())
noInfo
instance ClassSym CodeInfo where
type Class CodeInfo = ()
buildClass :: Maybe Label
-> [CSStateVar CodeInfo] -> [SMethod CodeInfo] -> SClass CodeInfo
buildClass _ _ ms :: [SMethod CodeInfo]
ms = do
Label
n <- LensLike'
(Zoomed (StateT FileState Identity) Label) ClassState FileState
-> StateT FileState Identity Label
-> StateT ClassState Identity Label
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT FileState Identity) Label) ClassState FileState
Lens' ClassState FileState
lensCStoFS StateT FileState Identity Label
getModuleName
Label
-> [Label]
-> [CSStateVar CodeInfo]
-> [SMethod CodeInfo]
-> SClass CodeInfo
forall (r :: * -> *).
ClassSym r =>
Label -> [Label] -> [CSStateVar r] -> [SMethod r] -> SClass r
implementingClass Label
n [] [] [SMethod CodeInfo]
ms
extraClass :: Label
-> Maybe Label
-> [CSStateVar CodeInfo]
-> [SMethod CodeInfo]
-> SClass CodeInfo
extraClass n :: Label
n _ _ ms :: [SMethod CodeInfo]
ms = do
(ClassState -> ClassState) -> StateT ClassState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (Label -> ClassState -> ClassState
setClassName Label
n)
(StateT MethodState Identity (CodeInfo ())
-> StateT ClassState Identity (CodeInfo ()))
-> [StateT MethodState Identity (CodeInfo ())]
-> StateT ClassState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (LensLike'
(Zoomed (StateT MethodState Identity) (CodeInfo ()))
ClassState
MethodState
-> StateT MethodState Identity (CodeInfo ())
-> StateT ClassState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT MethodState Identity) (CodeInfo ()))
ClassState
MethodState
Lens' ClassState MethodState
lensCStoMS) [StateT MethodState Identity (CodeInfo ())]
[SMethod CodeInfo]
ms
StateT ClassState Identity (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo
implementingClass :: Label
-> [Label]
-> [CSStateVar CodeInfo]
-> [SMethod CodeInfo]
-> SClass CodeInfo
implementingClass n :: Label
n _ _ ms :: [SMethod CodeInfo]
ms = do
(ClassState -> ClassState) -> StateT ClassState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (Label -> ClassState -> ClassState
addClass Label
n (ClassState -> ClassState)
-> (ClassState -> ClassState) -> ClassState -> ClassState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Label -> ClassState -> ClassState
setClassName Label
n)
(StateT MethodState Identity (CodeInfo ())
-> StateT ClassState Identity (CodeInfo ()))
-> [StateT MethodState Identity (CodeInfo ())]
-> StateT ClassState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (LensLike'
(Zoomed (StateT MethodState Identity) (CodeInfo ()))
ClassState
MethodState
-> StateT MethodState Identity (CodeInfo ())
-> StateT ClassState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT MethodState Identity) (CodeInfo ()))
ClassState
MethodState
Lens' ClassState MethodState
lensCStoMS) [StateT MethodState Identity (CodeInfo ())]
[SMethod CodeInfo]
ms
StateT ClassState Identity (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo
docClass :: Label -> SClass CodeInfo -> SClass CodeInfo
docClass _ c :: SClass CodeInfo
c = do
CodeInfo ()
_ <- StateT ClassState Identity (CodeInfo ())
SClass CodeInfo
c
StateT ClassState Identity (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo
instance ModuleSym CodeInfo where
type Module CodeInfo = ()
buildModule :: Label
-> [Label]
-> [SMethod CodeInfo]
-> [SClass CodeInfo]
-> FSModule CodeInfo
buildModule n :: Label
n _ fs :: [SMethod CodeInfo]
fs cs :: [SClass CodeInfo]
cs = do
(FileState -> FileState) -> StateT FileState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (Label -> FileState -> FileState
setModuleName Label
n)
(StateT ClassState Identity (CodeInfo ())
-> StateT FileState Identity (CodeInfo ()))
-> [StateT ClassState Identity (CodeInfo ())]
-> StateT FileState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (LensLike'
(Zoomed (StateT ClassState Identity) (CodeInfo ()))
FileState
ClassState
-> StateT ClassState Identity (CodeInfo ())
-> StateT FileState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ClassState Identity) (CodeInfo ()))
FileState
ClassState
Lens' FileState ClassState
lensFStoCS) [StateT ClassState Identity (CodeInfo ())]
[SClass CodeInfo]
cs
(StateT MethodState Identity (CodeInfo ())
-> StateT FileState Identity (CodeInfo ()))
-> [StateT MethodState Identity (CodeInfo ())]
-> StateT FileState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (LensLike'
(Zoomed (StateT MethodState Identity) (CodeInfo ()))
FileState
MethodState
-> StateT MethodState Identity (CodeInfo ())
-> StateT FileState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT MethodState Identity) (CodeInfo ()))
FileState
MethodState
Lens' FileState MethodState
lensFStoMS) [StateT MethodState Identity (CodeInfo ())]
[SMethod CodeInfo]
fs
(FileState -> FileState)
-> CodeInfo () -> StateT FileState Identity (CodeInfo ())
forall s a. (s -> s) -> a -> State s a
modifyReturn (Label -> FileState -> FileState
updateClassMap Label
n) (() -> CodeInfo ()
forall (r :: * -> *) a. Monad r => a -> r a
toCode ())
noInfo :: State s (CodeInfo ())
noInfo :: State s (CodeInfo ())
noInfo = CodeInfo () -> State s (CodeInfo ())
forall a s. a -> State s a
toState (CodeInfo () -> State s (CodeInfo ()))
-> CodeInfo () -> State s (CodeInfo ())
forall a b. (a -> b) -> a -> b
$ () -> CodeInfo ()
forall (r :: * -> *) a. Monad r => a -> r a
toCode ()
noInfoType :: State s (CodeInfo String)
noInfoType :: State s (CodeInfo Label)
noInfoType = CodeInfo Label -> State s (CodeInfo Label)
forall a s. a -> State s a
toState (CodeInfo Label -> State s (CodeInfo Label))
-> CodeInfo Label -> State s (CodeInfo Label)
forall a b. (a -> b) -> a -> b
$ Label -> CodeInfo Label
forall (r :: * -> *) a. Monad r => a -> r a
toCode ""
updateMEMandCM :: String -> MSBody CodeInfo -> SMethod CodeInfo
updateMEMandCM :: Label -> MSBody CodeInfo -> SMethod CodeInfo
updateMEMandCM n :: Label
n b :: MSBody CodeInfo
b = do
CodeInfo ()
_ <- StateT MethodState Identity (CodeInfo ())
MSBody CodeInfo
b
(MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (Label -> MethodState -> MethodState
updateCallMap Label
n (MethodState -> MethodState)
-> (MethodState -> MethodState) -> MethodState -> MethodState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Label -> MethodState -> MethodState
updateMethodExcMap Label
n)
StateT MethodState Identity (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo
evalConds :: [(SValue CodeInfo, MSBody CodeInfo)] -> MSBody CodeInfo ->
MSStatement CodeInfo
evalConds :: [(SValue CodeInfo, MSBody CodeInfo)]
-> MSBody CodeInfo -> MSStatement CodeInfo
evalConds cs :: [(SValue CodeInfo, MSBody CodeInfo)]
cs def :: MSBody CodeInfo
def = do
((VS (CodeInfo ()), StateT MethodState Identity (CodeInfo ()))
-> StateT MethodState Identity (CodeInfo ()))
-> [(VS (CodeInfo ()), StateT MethodState Identity (CodeInfo ()))]
-> StateT MethodState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
-> VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ())
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (CodeInfo ()))
MethodState
ValueState
Lens' MethodState ValueState
lensMStoVS (VS (CodeInfo ()) -> StateT MethodState Identity (CodeInfo ()))
-> ((VS (CodeInfo ()), StateT MethodState Identity (CodeInfo ()))
-> VS (CodeInfo ()))
-> (VS (CodeInfo ()), StateT MethodState Identity (CodeInfo ()))
-> StateT MethodState Identity (CodeInfo ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (VS (CodeInfo ()), StateT MethodState Identity (CodeInfo ()))
-> VS (CodeInfo ())
forall a b. (a, b) -> a
fst) [(VS (CodeInfo ()), StateT MethodState Identity (CodeInfo ()))]
[(SValue CodeInfo, MSBody CodeInfo)]
cs
((VS (CodeInfo ()), StateT MethodState Identity (CodeInfo ()))
-> StateT MethodState Identity (CodeInfo ()))
-> [(VS (CodeInfo ()), StateT MethodState Identity (CodeInfo ()))]
-> StateT MethodState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (VS (CodeInfo ()), StateT MethodState Identity (CodeInfo ()))
-> StateT MethodState Identity (CodeInfo ())
forall a b. (a, b) -> b
snd [(VS (CodeInfo ()), StateT MethodState Identity (CodeInfo ()))]
[(SValue CodeInfo, MSBody CodeInfo)]
cs
CodeInfo ()
_ <- StateT MethodState Identity (CodeInfo ())
MSBody CodeInfo
def
StateT MethodState Identity (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo
addCurrModCall :: String -> SValue CodeInfo
addCurrModCall :: Label -> SValue CodeInfo
addCurrModCall n :: Label
n = do
Label
mn <- LensLike'
(Zoomed (StateT FileState Identity) Label) ValueState FileState
-> StateT FileState Identity Label
-> StateT ValueState Identity Label
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT FileState Identity) Label) ValueState FileState
Lens' ValueState FileState
lensVStoFS StateT FileState Identity Label
getModuleName
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (QualifiedName -> ValueState -> ValueState
addCall (Label -> Label -> QualifiedName
qualName Label
mn Label
n))
VS (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo
addCurrModConstructorCall :: VSType CodeInfo -> SValue CodeInfo
addCurrModConstructorCall :: VSType CodeInfo -> SValue CodeInfo
addCurrModConstructorCall ot :: VSType CodeInfo
ot = do
CodeInfo Label
t <- State ValueState (CodeInfo Label)
VSType CodeInfo
ot
let tp :: Label
tp = CodeInfo (Type CodeInfo) -> Label
forall (r :: * -> *). TypeElim r => r (Type r) -> Label
getTypeString CodeInfo Label
CodeInfo (Type CodeInfo)
t
Label -> SValue CodeInfo
addCurrModCall Label
tp
addExternalCall :: String -> String -> SValue CodeInfo
addExternalCall :: Label -> Label -> SValue CodeInfo
addExternalCall l :: Label
l n :: Label
n = (ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (QualifiedName -> ValueState -> ValueState
addCall (Label -> Label -> QualifiedName
qualName Label
l Label
n)) StateT ValueState Identity ()
-> VS (CodeInfo ()) -> VS (CodeInfo ())
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> VS (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo
addExternalConstructorCall :: String -> VSType CodeInfo -> SValue CodeInfo
addExternalConstructorCall :: Label -> VSType CodeInfo -> SValue CodeInfo
addExternalConstructorCall l :: Label
l ot :: VSType CodeInfo
ot = do
CodeInfo Label
t <- State ValueState (CodeInfo Label)
VSType CodeInfo
ot
let tp :: Label
tp = CodeInfo (Type CodeInfo) -> Label
forall (r :: * -> *). TypeElim r => r (Type r) -> Label
getTypeString CodeInfo Label
CodeInfo (Type CodeInfo)
t
Label -> Label -> SValue CodeInfo
addExternalCall Label
l Label
tp
execute1 :: State a (CodeInfo ()) -> State a (CodeInfo ())
execute1 :: State a (CodeInfo ()) -> State a (CodeInfo ())
execute1 s :: State a (CodeInfo ())
s = do
CodeInfo ()
_ <- State a (CodeInfo ())
s
State a (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo
executeList :: [State a (CodeInfo ())] -> State a (CodeInfo ())
executeList :: [State a (CodeInfo ())] -> State a (CodeInfo ())
executeList l :: [State a (CodeInfo ())]
l = do
[State a (CodeInfo ())] -> StateT a Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [State a (CodeInfo ())]
l
State a (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo
executePairList :: [(State a (CodeInfo ()), State a (CodeInfo ()))] ->
State a (CodeInfo ())
executePairList :: [(State a (CodeInfo ()), State a (CodeInfo ()))]
-> State a (CodeInfo ())
executePairList ps :: [(State a (CodeInfo ()), State a (CodeInfo ()))]
ps = do
((State a (CodeInfo ()), State a (CodeInfo ()))
-> State a (CodeInfo ()))
-> [(State a (CodeInfo ()), State a (CodeInfo ()))]
-> StateT a Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (State a (CodeInfo ()), State a (CodeInfo ()))
-> State a (CodeInfo ())
forall a b. (a, b) -> a
fst [(State a (CodeInfo ()), State a (CodeInfo ()))]
ps
((State a (CodeInfo ()), State a (CodeInfo ()))
-> State a (CodeInfo ()))
-> [(State a (CodeInfo ()), State a (CodeInfo ()))]
-> StateT a Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (State a (CodeInfo ()), State a (CodeInfo ()))
-> State a (CodeInfo ())
forall a b. (a, b) -> b
snd [(State a (CodeInfo ()), State a (CodeInfo ()))]
ps
State a (CodeInfo ())
forall s. State s (CodeInfo ())
noInfo
execute2 :: State a (CodeInfo ()) -> State a (CodeInfo ()) ->
State a (CodeInfo ())
execute2 :: State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2 s1 :: State a (CodeInfo ())
s1 s2 :: State a (CodeInfo ())
s2 = do
CodeInfo ()
_ <- State a (CodeInfo ())
s1
State a (CodeInfo ()) -> State a (CodeInfo ())
forall a. State a (CodeInfo ()) -> State a (CodeInfo ())
execute1 State a (CodeInfo ())
s2
execute3 :: State a (CodeInfo ()) -> State a (CodeInfo ()) ->
State a (CodeInfo ()) -> State a (CodeInfo ())
execute3 :: State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
execute3 s1 :: State a (CodeInfo ())
s1 s2 :: State a (CodeInfo ())
s2 s3 :: State a (CodeInfo ())
s3 = do
CodeInfo ()
_ <- State a (CodeInfo ())
s1
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ()) -> State a (CodeInfo ())
execute2 State a (CodeInfo ())
s2 State a (CodeInfo ())
s3
execute4 :: State a (CodeInfo ()) -> State a (CodeInfo ()) ->
State a (CodeInfo ()) -> State a (CodeInfo ()) -> State a (CodeInfo ())
execute4 :: State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
execute4 s1 :: State a (CodeInfo ())
s1 s2 :: State a (CodeInfo ())
s2 s3 :: State a (CodeInfo ())
s3 s4 :: State a (CodeInfo ())
s4 = do
CodeInfo ()
_ <- State a (CodeInfo ())
s1
State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
forall a.
State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
-> State a (CodeInfo ())
execute3 State a (CodeInfo ())
s2 State a (CodeInfo ())
s3 State a (CodeInfo ())
s4
currModCall :: String -> [VS (CodeInfo ())] ->
[(VS (CodeInfo ()), VS (CodeInfo ()))] -> VS (CodeInfo ())
currModCall :: Label
-> [VS (CodeInfo ())]
-> [(VS (CodeInfo ()), VS (CodeInfo ()))]
-> VS (CodeInfo ())
currModCall n :: Label
n ps :: [VS (CodeInfo ())]
ps ns :: [(VS (CodeInfo ()), VS (CodeInfo ()))]
ns = do
[VS (CodeInfo ())] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [VS (CodeInfo ())]
ps
[(VS (CodeInfo ()), VS (CodeInfo ()))] -> VS (CodeInfo ())
forall a.
[(State a (CodeInfo ()), State a (CodeInfo ()))]
-> State a (CodeInfo ())
executePairList [(VS (CodeInfo ()), VS (CodeInfo ()))]
ns
Label -> SValue CodeInfo
addCurrModCall Label
n