in rsc/src/main/scala/rsc/parse/java/Terms.scala [32:84]
private def maybeLit(): Option[Any] = {
in.token match {
case FALSE | LITCHAR | LITINT | LITHEXINT | LITLONG | LITHEXLONG | LITFLOAT | LITDOUBLE |
LITSTRING | MINUS | NULL | TRUE =>
val snapshot = in.snapshot()
val isNegated = {
if (in.token == MINUS) {
in.nextToken()
true
} else {
false
}
}
val value = in.token match {
case LITCHAR =>
in.value.head
case LITINT =>
val parsee = if (isNegated) "-" + in.value else in.value
java.lang.Integer.parseInt(parsee, 10)
case LITHEXINT =>
val parsee = in.value.stripPrefix("0x")
val result = java.lang.Integer.parseUnsignedInt(parsee, 16)
if (isNegated) -result else result
case LITLONG =>
var parsee = if (isNegated) "-" + in.value else in.value
java.lang.Long.parseLong(parsee, 10)
case LITHEXLONG =>
val parsee = in.value.stripPrefix("0x")
val result = java.lang.Long.parseUnsignedLong(parsee, 16)
if (isNegated) -result else result
case LITFLOAT =>
val parsee = if (isNegated) "-" + in.value else in.value
java.lang.Float.parseFloat(parsee)
case LITDOUBLE =>
val parsee = if (isNegated) "-" + in.value else in.value
java.lang.Double.parseDouble(parsee)
case LITSTRING =>
in.value
case TRUE =>
true
case FALSE =>
false
case NULL =>
null
case _ =>
return None
}
in.nextToken()
Some(value)
case _ =>
None
}
}