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);
      };
   }
}