ASTOperand class
Пакет: com.hypixel.hytale.server.npc.util.expression.compile.ast
Файл: com/hypixel/hytale/server/npc/util/expression/compile/ast/ASTOperand.java
extends: AST
Поля (6)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Token |
var2 |
|
int |
var3 |
|
ValueType |
var3 |
|
String |
var4 |
|
ValueType |
var4 |
|
Scope |
var5 |
Методы (8)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
return new |
ASTOperandNumberreturn new ASTOperandNumber(var2, var3, var0.tokenNumber) |
abstract |
return new |
ASTOperandStringreturn new ASTOperandString(var2, var3, var4) |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Unknown parser operand type in AST" + var0.token) |
abstract |
return |
createFromScopeConstantreturn createFromScopeConstant(var2, var3, var5, var4) |
abstract |
|
super super(var1, var2, var3) |
|
|
switch switch(var2) |
|
return |
switchreturn switch(var4) |
|
return |
switchreturn switch(var3) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.util.expression.compile.ast;
class="kw">import com.hypixel.hytale.server.npc.util.expression.ExecutionContext;
class="kw">import com.hypixel.hytale.server.npc.util.expression.Scope;
class="kw">import com.hypixel.hytale.server.npc.util.expression.ValueType;
class="kw">import com.hypixel.hytale.server.npc.util.expression.compile.CompileContext;
class="kw">import com.hypixel.hytale.server.npc.util.expression.compile.Parser;
class="kw">import com.hypixel.hytale.server.npc.util.expression.compile.Token;
class="kw">import javax.annotation.Nonnull;
class="kw">public class="kw">abstract class ASTOperand class="kw">extends AST {
class="kw">public ASTOperand(@Nonnull ValueType var1, @Nonnull Token var2, int var3) {
super(var1, var2, var3);
}
@Nonnull
class="kw">public class="kw">static ASTOperand createFromParsedToken(@Nonnull Parser.ParsedToken var0, @Nonnull CompileContext var1) {
Token var2 = var0.token;
int var3 = var0.tokenPosition;
String var4 = var0.tokenString;
class="kw">switch (var2) {
case STRING:
class="kw">return new ASTOperandString(var2, var3, var4);
case NUMBER:
class="kw">return new ASTOperandNumber(var2, var3, var0.tokenNumber);
case IDENTIFIER:
Scope var5 = var1.getScope();
if (var5.isConstant(var4)) {
class="kw">return createFromScopeConstant(var2, var3, var5, var4);
}
class="kw">return new ASTOperandIdentifier(var5.getType(var4), var2, var3, var4);
class="kw">default:
throw new IllegalStateException("Unknown parser operand type in AST" + var0.token);
}
}
@Nonnull
class="kw">private class="kw">static ASTOperand createFromScopeConstant(@Nonnull Token var0, int var1, @Nonnull Scope var2, String var3) {
ValueType var4 = var2.getType(var3);
class="kw">return class="kw">switch (var4) {
case NUMBER -> new ASTOperandNumber(var0, var1, var2, var3);
case STRING -> new ASTOperandString(var0, var1, var2, var3);
case BOOLEAN -> new ASTOperandBoolean(var0, var1, var2, var3);
case NUMBER_ARRAY -> new ASTOperandNumberArray(var0, var1, var2, var3);
case STRING_ARRAY -> new ASTOperandStringArray(var0, var1, var2, var3);
case BOOLEAN_ARRAY -> new ASTOperandBooleanArray(var0, var1, var2, var3);
case EMPTY_ARRAY -> new ASTOperandEmptyArray(var0, var1);
case null, class="kw">default -> throw new IllegalStateException("Illegal constant type encountered" + var4);
};
}
@Nonnull
class="kw">public class="kw">static ASTOperand createFromOperand(@Nonnull Token var0, int var1, @Nonnull ExecutionContext.Operand var2) {
ValueType var3 = var2.type;
class="kw">return class="kw">switch (var3) {
case NUMBER -> new ASTOperandNumber(var0, var1, var2.number);
case STRING -> new ASTOperandString(var0, var1, var2.string);
case BOOLEAN -> new ASTOperandBoolean(var0, var1, var2.bool);
case NUMBER_ARRAY -> new ASTOperandNumberArray(var0, var1, var2.numberArray);
case STRING_ARRAY -> new ASTOperandStringArray(var0, var1, var2.stringArray);
case BOOLEAN_ARRAY -> new ASTOperandBooleanArray(var0, var1, var2.boolArray);
case EMPTY_ARRAY -> new ASTOperandEmptyArray(var0, var1);
case null, class="kw">default -> throw new IllegalStateException("Illegal operand type encountered" + var3);
};
}
}