+include "./Environment"
+
+importJava "org.simantics.scl.compiler.top.ExpressionEvaluator" where
+ data ExpressionEvaluator
+
+ @JavaName "<init>"
+ createExpressionEvaluator :: RuntimeEnvironment -> String -> <Proc> ExpressionEvaluator
+
+ eval :: ExpressionEvaluator -> <Proc> a
+
+ expectedType :: ExpressionEvaluator -> Type -> <Proc> ExpressionEvaluator
+
+importJava "org.simantics.scl.compiler.top.SCLExpressionCompilationException" where
+ data SCLExpressionCompilationException
+
+data EvaluationModifier
+
+applyModifier evaluator _ = ()
+
+evaluateExpression :: Typeable a => RuntimeEnvironment -> [EvaluationModifier] -> String -> <Proc> a
+evaluateExpression runtimeEnvironment modifiers expression = do
+ evaluator = createExpressionEvaluator runtimeEnvironment expression
+ expectedType evaluator (typeOfProxy (TypeProxy :: TypeProxy a))
+ iter (applyModifier evaluator) modifiers
+ eval evaluator
+
+untypedEvaluateExpression :: RuntimeEnvironment -> [EvaluationModifier] -> String -> <Proc> a
+untypedEvaluateExpression runtimeEnvironment modifiers expression = do
+ evaluator = createExpressionEvaluator runtimeEnvironment expression
+ iter (applyModifier evaluator) modifiers
+ eval evaluator
\ No newline at end of file