Пример #1
0
  public List<InternToken> getInternTokenList() {
    List<InternToken> internTokenList = new LinkedList<InternToken>();

    switch (type) {
      case BRACKET:
        internTokenList.add(new InternToken(InternTokenType.BRACKET_OPEN));
        if (rightChild != null) {
          internTokenList.addAll(rightChild.getInternTokenList());
        }
        internTokenList.add(new InternToken(InternTokenType.BRACKET_CLOSE));
        break;
      case OPERATOR:
        if (leftChild != null) {
          internTokenList.addAll(leftChild.getInternTokenList());
        }
        internTokenList.add(new InternToken(InternTokenType.OPERATOR, this.value));
        if (rightChild != null) {
          internTokenList.addAll(rightChild.getInternTokenList());
        }
        break;
      case FUNCTION:
        internTokenList.add(new InternToken(InternTokenType.FUNCTION_NAME, value));
        boolean functionHasParameters = false;
        if (leftChild != null) {
          internTokenList.add(new InternToken(InternTokenType.FUNCTION_PARAMETERS_BRACKET_OPEN));
          functionHasParameters = true;
          internTokenList.addAll(leftChild.getInternTokenList());
        }
        if (rightChild != null) {
          internTokenList.add(new InternToken(InternTokenType.FUNCTION_PARAMETER_DELIMITER));
          internTokenList.addAll(rightChild.getInternTokenList());
        }
        if (functionHasParameters) {
          internTokenList.add(new InternToken(InternTokenType.FUNCTION_PARAMETERS_BRACKET_CLOSE));
        }
        break;
      case USER_VARIABLE:
        internTokenList.add(new InternToken(InternTokenType.USER_VARIABLE, this.value));
        break;
      case USER_LIST:
        internTokenList.add(new InternToken(InternTokenType.USER_LIST, this.value));
        break;
      case NUMBER:
        internTokenList.add(new InternToken(InternTokenType.NUMBER, this.value));
        break;
      case SENSOR:
        internTokenList.add(new InternToken(InternTokenType.SENSOR, this.value));
        break;
      case STRING:
        internTokenList.add(new InternToken(InternTokenType.STRING, value));
        break;
      case COLLISION_FORMULA:
        internTokenList.add(new InternToken(InternTokenType.COLLISION_FORMULA, this.value));
        break;
    }
    return internTokenList;
  }