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