in rsc/src/main/scala/rsc/parse/scala/Lits.scala [20:60]
private def literal(isNegated: Boolean): Any = {
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").stripPrefix("0X")
val result = java.lang.Integer.parseUnsignedInt(parsee, 16)
if (isNegated) -result else result
case LITLONG =>
val parsee = if (isNegated) "-" + in.value else in.value
java.lang.Long.parseLong(parsee, 10)
case LITHEXLONG =>
val parsee = in.value.stripPrefix("0x").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 LITSYMBOL =>
StdlibSymbol(in.value.stripPrefix("'"))
case _ =>
reportOffset(in.offset, IllegalLiteral)
null
}
in.nextToken()
value
}