private setLabelForLastTokenOnly()

in src/language/semantics/xpLexer.ts [1165:1224]


  private setLabelForLastTokenOnly(
    prevToken: Token | null,
    currentToken: Token
  ) {
    let currentState = currentToken.charType

    if (prevToken) {
      if (prevToken.charType === CharLevelState.lName) {
        switch (currentState) {
          case CharLevelState.lVar:
            if (Data.rangeVars.indexOf(prevToken.value) > -1) {
              // every, for, let, some
              prevToken.tokenType = TokenLevelState.complexExpression
            }
            break
          case CharLevelState.lB:
            this.updateTokenBeforeBrackets(prevToken)
            break
          case CharLevelState.dSep:
            if (currentToken.value === '::') {
              if (Data.axes.indexOf(prevToken.value) < 0) {
                prevToken['error'] = ErrorType.AxisName
              }
              prevToken.tokenType = TokenLevelState.axisName
            } else if (currentToken.value === '()') {
              this.updateTokenBeforeBrackets(prevToken)
            } else if (
              currentToken.value === '{}' &&
              (prevToken.value === 'map' || prevToken.value === 'array')
            ) {
              prevToken.tokenType = TokenLevelState.operator
            }
            break
          case CharLevelState.lBr:
            if (prevToken.value === 'map' || prevToken.value === 'array') {
              prevToken.tokenType = TokenLevelState.operator
            }
            break
          case CharLevelState.lName:
            if (currentToken.value === 'member' && prevToken.value === 'for') {
              prevToken.tokenType = TokenLevelState.complexExpression
            }
            break
        }
      } else if (
        currentState === CharLevelState.sep &&
        prevToken.tokenType === TokenLevelState.string &&
        currentToken.value === ':'
      ) {
        prevToken.tokenType = TokenLevelState.mapKey
      } else if (
        (currentState === CharLevelState.lB ||
          currentState === CharLevelState.lBr) &&
        prevToken.charType === CharLevelState.dSep &&
        prevToken.value === '->'
      ) {
        prevToken.tokenType = TokenLevelState.anonymousFunction
      }
    }
  }