2023-01-20 18:52:57 +01:00
|
|
|
package io.gitlab.jfronny.muscript.ast;
|
2022-06-03 19:54:31 +02:00
|
|
|
|
2023-03-12 15:28:44 +01:00
|
|
|
import io.gitlab.jfronny.muscript.compiler.Order;
|
2023-01-20 18:52:57 +01:00
|
|
|
import io.gitlab.jfronny.muscript.data.dynamic.Dynamic;
|
|
|
|
import io.gitlab.jfronny.muscript.ast.dynamic.unpack.*;
|
2022-06-29 15:41:44 +02:00
|
|
|
import io.gitlab.jfronny.muscript.compiler.Type;
|
2022-06-03 19:54:31 +02:00
|
|
|
|
2022-06-07 13:36:48 +02:00
|
|
|
public abstract non-sealed class DynamicExpr extends Expr<Dynamic<?>> {
|
2023-03-12 15:28:44 +01:00
|
|
|
protected DynamicExpr(Order order, int chStart, int chEnd) {
|
|
|
|
super(order, chStart, chEnd);
|
2022-06-13 13:31:54 +02:00
|
|
|
}
|
|
|
|
|
2022-06-03 19:54:31 +02:00
|
|
|
@Override
|
|
|
|
public Type getResultType() {
|
2022-06-07 13:36:48 +02:00
|
|
|
return Type.Dynamic;
|
2022-06-03 19:54:31 +02:00
|
|
|
}
|
|
|
|
|
2022-06-29 17:38:05 +02:00
|
|
|
@Override
|
|
|
|
public abstract DynamicExpr optimize();
|
|
|
|
|
2022-06-03 19:54:31 +02:00
|
|
|
@Override
|
|
|
|
public BoolExpr asBoolExpr() {
|
2023-01-20 17:47:41 +01:00
|
|
|
return new BoolUnpack(chStart, chEnd, this);
|
2022-06-03 19:54:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public StringExpr asStringExpr() {
|
2023-01-20 17:47:41 +01:00
|
|
|
return new StringUnpack(chStart, chEnd, this);
|
2022-06-03 19:54:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public NumberExpr asNumberExpr() {
|
2023-01-20 17:47:41 +01:00
|
|
|
return new NumberUnpack(chStart, chEnd, this);
|
2022-06-03 19:54:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2022-06-07 12:19:58 +02:00
|
|
|
public DynamicExpr asDynamicExpr() {
|
2022-06-07 13:36:48 +02:00
|
|
|
return this;
|
2022-06-03 19:54:31 +02:00
|
|
|
}
|
|
|
|
}
|