OperatorBinary class

Пакет: com.hypixel.hytale.server.npc.util.expression.compile

Файл: com/hypixel/hytale/server/npc/util/expression/compile/OperatorBinary.java

Поля (1)

МодификаторыТипИмя
private Token token

Методы (4)

МодификаторыВозвратСигнатура
for for(OperatorBinary var6 : operators)
public Function<Scope, ExecutionContext.Instruction> getCodeGenFunction<Scope, ExecutionContext.Instruction> getCodeGen()
public ValueType getResultTypeValueType getResultType()
if if(var6.token == var0 && var6.lhs == var1 && var6.rhs == var2)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.util.expression.compile;

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 java.util.function.Function;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class OperatorBinary {
   class="kw">private Token token;
   class="kw">private ValueType lhs;
   class="kw">private ValueType rhs;
   class="kw">private ValueType result;
   class="kw">private Function<Scope, ExecutionContext.Instruction> codeGen;
   @Nonnull
   class="kw">private class="kw">static OperatorBinary[] operators = new OperatorBinary[]{
      of(Token.EXPONENTIATION, ValueType.NUMBER, ValueType.NUMBER, ValueType.NUMBER, var0 -> ExecutionContext.EXPONENTIATION),
      of(Token.REMAINDER, ValueType.NUMBER, ValueType.NUMBER, ValueType.NUMBER, var0 -> ExecutionContext.REMAINDER),
      of(Token.DIVIDE, ValueType.NUMBER, ValueType.NUMBER, ValueType.NUMBER, var0 -> ExecutionContext.DIVIDE),
      of(Token.MULTIPLY, ValueType.NUMBER, ValueType.NUMBER, ValueType.NUMBER, var0 -> ExecutionContext.MULTIPLY),
      of(Token.MINUS, ValueType.NUMBER, ValueType.NUMBER, ValueType.NUMBER, var0 -> ExecutionContext.MINUS),
      of(Token.PLUS, ValueType.NUMBER, ValueType.NUMBER, ValueType.NUMBER, var0 -> ExecutionContext.PLUS),
      of(Token.GREATER_EQUAL, ValueType.NUMBER, ValueType.NUMBER, ValueType.BOOLEAN, var0 -> ExecutionContext.GREATER_EQUAL),
      of(Token.GREATER, ValueType.NUMBER, ValueType.NUMBER, ValueType.BOOLEAN, var0 -> ExecutionContext.GREATER),
      of(Token.LESS_EQUAL, ValueType.NUMBER, ValueType.NUMBER, ValueType.BOOLEAN, var0 -> ExecutionContext.LESS_EQUAL),
      of(Token.LESS, ValueType.NUMBER, ValueType.NUMBER, ValueType.BOOLEAN, var0 -> ExecutionContext.LESS),
      of(Token.NOT_EQUAL, ValueType.NUMBER, ValueType.NUMBER, ValueType.BOOLEAN, var0 -> ExecutionContext.NOT_EQUAL),
      of(Token.EQUAL, ValueType.NUMBER, ValueType.NUMBER, ValueType.BOOLEAN, var0 -> ExecutionContext.EQUAL),
      of(Token.NOT_EQUAL, ValueType.BOOLEAN, ValueType.BOOLEAN, ValueType.BOOLEAN, var0 -> ExecutionContext.NOT_EQUAL_BOOL),
      of(Token.EQUAL, ValueType.BOOLEAN, ValueType.BOOLEAN, ValueType.BOOLEAN, var0 -> ExecutionContext.EQUAL_BOOL),
      of(Token.BITWISE_AND, ValueType.NUMBER, ValueType.NUMBER, ValueType.NUMBER, var0 -> ExecutionContext.BITWISE_AND),
      of(Token.BITWISE_XOR, ValueType.NUMBER, ValueType.NUMBER, ValueType.NUMBER, var0 -> ExecutionContext.BITWISE_XOR),
      of(Token.BITWISE_OR, ValueType.NUMBER, ValueType.NUMBER, ValueType.NUMBER, var0 -> ExecutionContext.BITWISE_OR),
      of(Token.LOGICAL_AND, ValueType.BOOLEAN, ValueType.BOOLEAN, ValueType.BOOLEAN, var0 -> ExecutionContext.LOGICAL_AND),
      of(Token.LOGICAL_OR, ValueType.BOOLEAN, ValueType.BOOLEAN, ValueType.BOOLEAN, var0 -> ExecutionContext.LOGICAL_OR)
   };

   class="kw">private OperatorBinary(Token var1, ValueType var2, ValueType var3, ValueType var4, Function<Scope, ExecutionContext.Instruction> var5) {
      this.token = var1;
      this.lhs = var2;
      this.rhs = var3;
      this.result = var4;
      this.codeGen = var5;
   }

   class="kw">public ValueType getResultType() {
      class="kw">return this.result;
   }

   class="kw">public Function<Scope, ExecutionContext.Instruction> getCodeGen() {
      class="kw">return this.codeGen;
   }

   @Nonnull
   class="kw">private class="kw">static OperatorBinary of(Token var0, ValueType var1, ValueType var2, ValueType var3, Function<Scope, ExecutionContext.Instruction> var4) {
      class="kw">return new OperatorBinary(var0, var1, var2, var3, var4);
   }

   @Nullable
   class="kw">public class="kw">static OperatorBinary findOperator(Token var0, ValueType var1, ValueType var2) {
      for (OperatorBinary var6 : operators) {
         if (var6.token == var0 && var6.lhs == var1 && var6.rhs == var2) {
            class="kw">return var6;
         }
      }

      class="kw">return null;
   }
}