ASTOperatorUnary class
Пакет: com.hypixel.hytale.server.npc.util.expression.compile.ast
Файл: com/hypixel/hytale/server/npc/util/expression/compile/ast/ASTOperatorUnary.java
extends: ASTOperator
Поля (9)
| Модификаторы | Тип | Имя |
|---|---|---|
|
OperatorUnary |
var11 |
|
int |
var2 |
|
Token |
var3 |
|
Stack |
var4 |
|
AST |
var5 |
|
ParseException |
var6 |
|
ExecutionContext |
var7 |
|
List |
var8 |
|
ValueType |
var9 |
Методы (5)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Failed to evaluate constant unary AST") |
abstract |
throw new |
ParseExceptionthrow new ParseException("Type mismatch for operator " + var3, var2) |
static |
void |
fromUnaryOperatorvoid fromUnaryOperator(@Nonnull Parser.ParsedToken var0, @Nonnull CompileContext var1) |
|
|
if if(var11 == null) |
|
|
if if(var9 == ValueType.VOID) |
Исходный код
Показать/скрыть
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.ValueType;
class="kw">import com.hypixel.hytale.server.npc.util.expression.compile.CompileContext;
class="kw">import com.hypixel.hytale.server.npc.util.expression.compile.OperatorUnary;
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 java.text.ParseException;
class="kw">import java.util.List;
class="kw">import java.util.NoSuchElementException;
class="kw">import java.util.Stack;
class="kw">import javax.annotation.Nonnull;
class="kw">public class ASTOperatorUnary class="kw">extends ASTOperator {
class="kw">public ASTOperatorUnary(@Nonnull OperatorUnary var1, @Nonnull Token var2, int var3, @Nonnull AST var4) {
super(var1.getResultType(), var2, var3);
this.addArgument(var4);
this.codeGen = var1.getCodeGen();
}
@Override
class="kw">public boolean isConstant() {
class="kw">return false;
}
class="kw">public class="kw">static void fromUnaryOperator(@Nonnull Parser.ParsedToken var0, @Nonnull CompileContext var1) class="kw">throws ParseException {
int var2 = var0.tokenPosition;
Token var3 = var0.token;
Stack var4 = var1.getOperandStack();
try {
AST var5 = var4.pop();
OperatorUnary var11 = OperatorUnary.findOperator(var3, var5.returnType());
if (var11 == null) {
throw new ParseException("Type mismatch for operator " + var3, var2);
}
if (var5.isConstant() && var11.hasCodeGen()) {
ExecutionContext var7 = var1.getExecutionContext();
List var8 = var1.getInstructions();
var8.clear();
var5.genCode(var8, null);
var8.add(var11.getCodeGen().apply(null));
ValueType var9 = var7.execute(var8);
if (var9 == ValueType.VOID) {
throw new IllegalStateException("Failed to evaluate constant unary AST");
}
var4.push(ASTOperand.createFromOperand(var3, var2, var7.top()));
} else if (var11.hasCodeGen()) {
var4.push(new ASTOperatorUnary(var11, var3, var2, var5));
} else {
var4.push(var5);
}
} catch (NoSuchElementException var10) {
ParseException var6 = new ParseException("Not enough operands for operator '" + var0.tokenString, var2);
var6.initCause(var10);
throw var6;
}
}
}