java-commons/muscript/src/main/java/io/gitlab/jfronny/muscript/ast/DynamicExpr.java

41 lines
1001 B
Java

package io.gitlab.jfronny.muscript.ast;
import io.gitlab.jfronny.muscript.compiler.Order;
import io.gitlab.jfronny.muscript.data.dynamic.Dynamic;
import io.gitlab.jfronny.muscript.ast.dynamic.unpack.*;
import io.gitlab.jfronny.muscript.compiler.Type;
public abstract non-sealed class DynamicExpr extends Expr<Dynamic<?>> {
protected DynamicExpr(Order order, int chStart, int chEnd) {
super(order, chStart, chEnd);
}
@Override
public Type getResultType() {
return Type.Dynamic;
}
@Override
public abstract DynamicExpr optimize();
@Override
public BoolExpr asBoolExpr() {
return new BoolUnpack(chStart, chEnd, this);
}
@Override
public StringExpr asStringExpr() {
return new StringUnpack(chStart, chEnd, this);
}
@Override
public NumberExpr asNumberExpr() {
return new NumberUnpack(chStart, chEnd, this);
}
@Override
public DynamicExpr asDynamicExpr() {
return this;
}
}