--- /dev/null
+package org.simantics.scl.compiler.elaboration.expressions.block;\r
+\r
+import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;\r
+import org.simantics.scl.compiler.elaboration.contexts.EnvironmentalContext;\r
+import org.simantics.scl.compiler.elaboration.contexts.ReplaceContext;\r
+import org.simantics.scl.compiler.elaboration.contexts.TranslationContext;\r
+import org.simantics.scl.compiler.elaboration.expressions.Expression;\r
+import org.simantics.scl.compiler.internal.parsing.Symbol;\r
+\r
+public abstract class Statement extends Symbol {\r
+\r
+ public abstract Expression toExpression(EnvironmentalContext context, boolean monadic, Expression in);\r
+ public abstract void setLocationDeep(long loc);\r
+ public abstract void resolvePattern(TranslationContext context);\r
+ public abstract boolean mayBeRecursive();\r
+ \r
+ public Statement replace(ReplaceContext context) {\r
+ throw new InternalCompilerError(getClass().getSimpleName() + " does not support replace.");\r
+ }\r
+ \r
+ public Statement copy() {\r
+ return replace(new ReplaceContext(null));\r
+ }\r
+ \r
+ public abstract void accept(StatementVisitor visitor);\r
+ \r
+}\r