in src/rider/main/kotlin/com/jetbrains/rider/plugins/dotnetdisassembler/language/AsmSyntaxHighlighter.kt [153:198]
override fun advance() {
if (currentOffset >= endOffset) {
currentTokenType = null
return
}
startOffset = currentOffset
val ch = buffer[currentOffset]
when {
ch == ';' -> {
while (currentOffset < endOffset && buffer[currentOffset] != '\n') {
currentOffset++
}
currentTokenType = AsmTokenTypes.COMMENT
}
ch == '\n' -> {
currentOffset++
lineStart = true
currentTokenType = AsmTokenTypes.WHITESPACE
}
ch.isWhitespace() -> {
while (currentOffset < endOffset &&
buffer[currentOffset].isWhitespace() &&
buffer[currentOffset] != '\n') {
currentOffset++
}
currentTokenType = AsmTokenTypes.WHITESPACE
}
lineStart && isIdentifierStart(ch) -> {
val colonPos = findColonInLine()
if (colonPos > currentOffset) {
currentOffset = colonPos + 1
currentTokenType = AsmTokenTypes.LABEL
lineStart = false
} else {
parseOpcodeOrOperand()
}
}
else -> parseOpcodeOrOperand()
}
}