Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Interpreter.Interpreter
Synopsis
- interpret :: Program -> (ResultValue (), Env')
- getInterpretationOut :: (ResultValue (), Env') -> (Text, Maybe Text)
- interpretProgram :: Program -> Result s ()
- interpretFunc :: Function -> Scope s -> [RuntimeValue s] -> Result s (MaybeVoid (RuntimeValue s))
- interpretFuncBlock :: FuncScope s -> Block -> Result s (StmtResult s)
- interpretBlock :: Scope s -> Block -> Result s (StmtResult s)
- interpretBlock' :: scope -> (scope -> Env s -> Env s) -> (Env s -> Env s) -> Block -> Result s (StmtResult s)
- interpretStmt :: Statement -> Result s (StmtResult s)
- interpretStmtReturn :: MaybeVoid Expression -> Result s (StmtResult s)
- interpretStmtForGoTo :: ForGoTo -> Result s (StmtResult s)
- interpretStmtFor :: For -> Result s (StmtResult s)
- interpretStmtVarDecl :: VarDecl -> Result s (StmtResult s)
- interpretStmtIfElse :: IfElse -> Result s (StmtResult s)
- interpretStmtSimple :: SimpleStmt -> Result s (StmtResult s)
- getLvalueUpdater :: Lvalue -> Result s (Identifier, RuntimeValue s, RuntimeValue s -> RuntimeValue s)
- data StmtResult s
- interpretExpr :: Expression -> Result s (MaybeVoid (RuntimeValue s))
- interpretExprValue :: Value -> Result s (MaybeVoid (RuntimeValue s))
- interpretExprIdentifier :: Identifier -> Result s (MaybeVoid (RuntimeValue s))
- interpretExprUnaryOp :: UnaryOp -> Expression -> Result s (MaybeVoid (RuntimeValue s))
- interpretExprBinaryOp :: BinaryOp -> Expression -> Expression -> Result s (MaybeVoid (RuntimeValue s))
- interpretExprArrayAccessByIndex :: Expression -> Expression -> Result s (MaybeVoid (RuntimeValue s))
- interpretExprFuncCall :: Expression -> [Expression] -> Result s (MaybeVoid (RuntimeValue s))
- interpretIntExpr :: Expression -> Result s Int
- interpretBoolExpr :: Expression -> Result s Bool
- interpretArrExpr :: Expression -> Result s [RuntimeValue s]
- interpretFuncExpr :: Expression -> Result s (Function, Scope s)
- interpretExpr' :: Expression -> Result s (RuntimeValue s)
- unwrapJust :: MaybeVoid a -> Result s a
- valueToPrimitive :: RuntimeValue s -> Result s (PrimitiveValue Int)
- liftPV :: Either Err (PrimitiveValue Int) -> Result s (MaybeVoid (RuntimeValue s))
- castToInt :: RuntimeValue s -> Result s Int
- castToBool :: RuntimeValue s -> Result s Bool
- castToArr :: RuntimeValue s -> Result s [RuntimeValue s]
- castToFunc :: RuntimeValue s -> Result s (Function, Scope s)
Interpreter
interpret :: Program -> (ResultValue (), Env') Source #
Interpreter entry point. Assumes that program is analyzed successfully.
getInterpretationOut :: (ResultValue (), Env') -> (Text, Maybe Text) Source #
interpretProgram :: Program -> Result s () Source #
interpretFunc :: Function -> Scope s -> [RuntimeValue s] -> Result s (MaybeVoid (RuntimeValue s)) Source #
interpretFuncBlock :: FuncScope s -> Block -> Result s (StmtResult s) Source #
interpretBlock :: Scope s -> Block -> Result s (StmtResult s) Source #
interpretBlock' :: scope -> (scope -> Env s -> Env s) -> (Env s -> Env s) -> Block -> Result s (StmtResult s) Source #
interpretStmt :: Statement -> Result s (StmtResult s) Source #
interpretStmtReturn :: MaybeVoid Expression -> Result s (StmtResult s) Source #
interpretStmtForGoTo :: ForGoTo -> Result s (StmtResult s) Source #
interpretStmtFor :: For -> Result s (StmtResult s) Source #
interpretStmtVarDecl :: VarDecl -> Result s (StmtResult s) Source #
interpretStmtIfElse :: IfElse -> Result s (StmtResult s) Source #
interpretStmtSimple :: SimpleStmt -> Result s (StmtResult s) Source #
getLvalueUpdater :: Lvalue -> Result s (Identifier, RuntimeValue s, RuntimeValue s -> RuntimeValue s) Source #
data StmtResult s Source #
Statement interpretation result.
Constructors
Unit | Result of ordinary statement. |
Break | Result of the |
Continue | Result of the |
Ret (MaybeVoid (RuntimeValue s)) | Result of the |
Instances
Eq (StmtResult s) Source # | |
Defined in Interpreter.Interpreter |
interpretExpr :: Expression -> Result s (MaybeVoid (RuntimeValue s)) Source #
interpretExprValue :: Value -> Result s (MaybeVoid (RuntimeValue s)) Source #
interpretExprIdentifier :: Identifier -> Result s (MaybeVoid (RuntimeValue s)) Source #
interpretExprUnaryOp :: UnaryOp -> Expression -> Result s (MaybeVoid (RuntimeValue s)) Source #
interpretExprBinaryOp :: BinaryOp -> Expression -> Expression -> Result s (MaybeVoid (RuntimeValue s)) Source #
interpretExprArrayAccessByIndex :: Expression -> Expression -> Result s (MaybeVoid (RuntimeValue s)) Source #
interpretExprFuncCall :: Expression -> [Expression] -> Result s (MaybeVoid (RuntimeValue s)) Source #
Utils
Interpret non-void Expression
interpretIntExpr :: Expression -> Result s Int Source #
interpretBoolExpr :: Expression -> Result s Bool Source #
interpretArrExpr :: Expression -> Result s [RuntimeValue s] Source #
interpretFuncExpr :: Expression -> Result s (Function, Scope s) Source #
interpretExpr' :: Expression -> Result s (RuntimeValue s) Source #
unwrapJust :: MaybeVoid a -> Result s a Source #
Primitive values
valueToPrimitive :: RuntimeValue s -> Result s (PrimitiveValue Int) Source #
liftPV :: Either Err (PrimitiveValue Int) -> Result s (MaybeVoid (RuntimeValue s)) Source #
Cast runtime values
castToBool :: RuntimeValue s -> Result s Bool Source #
castToArr :: RuntimeValue s -> Result s [RuntimeValue s] Source #
castToFunc :: RuntimeValue s -> Result s (Function, Scope s) Source #