in rsc/src/main/scala/rsc/scan/java/Scanner.scala [271:410]
private def operator(): Unit = {
if (ch == '=') {
nextChar()
if (ch == '=') {
nextChar()
emit(EQEQ, null)
} else {
emit(EQUALS, null)
}
} else if (ch == '>') {
nextChar()
if (ch == '=') {
nextChar()
emit(GTEQ, null)
} else if (ch == '>') {
nextChar()
if (ch == '=') {
nextChar()
emit(GTGTEQ, null)
} else if (ch == '>') {
nextChar()
if (ch == '=') {
nextChar()
emit(GTGTGTEQ, null)
} else {
emit(GTGTGT, null)
}
} else {
emit(GTGT, null)
}
} else {
emit(GT, null)
}
} else if (ch == '<') {
nextChar()
if (ch == '=') {
nextChar()
emit(LTEQ, null)
} else if (ch == '<') {
nextChar()
if (ch == '=') {
nextChar()
emit(LTLTEQ, null)
} else {
emit(LTLT, null)
}
} else {
emit(LT, null)
}
} else if (ch == '!') {
nextChar()
if (ch == '=') {
nextChar()
emit(BANGEQ, null)
} else {
emit(BANG, null)
}
} else if (ch == '~') {
nextChar()
emit(TILDE, null)
} else if (ch == '&') {
nextChar()
if (ch == '=') {
nextChar()
emit(AMPEQ, null)
} else if (ch == '&') {
nextChar()
emit(AMPAMP, null)
} else {
emit(AMP, null)
}
} else if (ch == '|') {
nextChar()
if (ch == '=') {
nextChar()
emit(BAREQ, null)
} else if (ch == '|') {
nextChar()
emit(BARBAR, null)
} else {
emit(BAR, null)
}
} else if (ch == '+') {
nextChar()
if (ch == '=') {
nextChar()
emit(PLUSEQ, null)
} else if (ch == '+') {
nextChar()
emit(PLUSPLUS, null)
} else {
emit(PLUS, null)
}
} else if (ch == '-') {
nextChar()
if (ch == '=') {
nextChar()
emit(MINUSEQ, null)
} else if (ch == '-') {
nextChar()
emit(MINUSMINUS, null)
} else {
emit(MINUS, null)
}
} else if (ch == '*') {
nextChar()
if (ch == '=') {
nextChar()
emit(ASTERISKEQ, null)
} else {
emit(ASTERISK, null)
}
} else if (ch == '/') {
nextChar()
if (ch == '=') {
nextChar()
emit(SLASHEQ, null)
} else {
emit(SLASH, null)
}
} else if (ch == '^') {
nextChar()
if (ch == '=') {
nextChar()
emit(HATEQ, null)
} else {
emit(HAT, null)
}
} else if (ch == '%') {
nextChar()
if (ch == '=') {
nextChar()
emit(PERCENTEQ, null)
} else {
emit(PERCENT, null)
}
} else {
crash(s"not an operator: $ch")
}
}