1 include "./Environment"
3 importJava "org.simantics.scl.compiler.top.ExpressionEvaluator" where
4 data ExpressionEvaluator
7 createExpressionEvaluator :: RuntimeEnvironment -> String -> <Proc> ExpressionEvaluator
9 eval :: ExpressionEvaluator -> <Proc> a
11 expectedType :: ExpressionEvaluator -> Type -> <Proc> ExpressionEvaluator
13 importJava "org.simantics.scl.compiler.top.SCLExpressionCompilationException" where
14 data SCLExpressionCompilationException
16 data EvaluationModifier
18 applyModifier evaluator _ = ()
20 evaluateExpression :: Typeable a => RuntimeEnvironment -> [EvaluationModifier] -> String -> <Proc> a
21 evaluateExpression runtimeEnvironment modifiers expression = do
22 evaluator = createExpressionEvaluator runtimeEnvironment expression
23 expectedType evaluator (typeOfProxy (TypeProxy :: TypeProxy a))
24 iter (applyModifier evaluator) modifiers
27 untypedEvaluateExpression :: RuntimeEnvironment -> [EvaluationModifier] -> String -> <Proc> a
28 untypedEvaluateExpression runtimeEnvironment modifiers expression = do
29 evaluator = createExpressionEvaluator runtimeEnvironment expression
30 iter (applyModifier evaluator) modifiers