Ich nahm diese von einem Projekt, die reelle Zahlen zu analysieren behauptet, aber es frisst irgendwie die vorge Dezimalteil:Gekocht - wie man eine reelle Zahl parst?
object Main extends App {
import org.parboiled.scala._
val res = TestParser.parseDouble("2.3")
println(s"RESULT: ${res.result}")
object TestParser extends Parser {
def RealNumber = rule {
oneOrMore(Digit) ~ optional("." ~ oneOrMore(Digit)) ~> { s =>
println(s"CAPTURED '$s'")
s.toDouble
}
}
def Digit = rule { "0" - "9" }
def parseDouble(input: String): ParsingResult[Double] =
ReportingParseRunner(RealNumber).run(input)
}
}
Diese Drucke:
CAPTURED '.3'
RESULT: Some(0.3)
Was ist hier falsch? Beachten Sie, dass ich derzeit nicht von Parbooled-1 zu Parboiled-2 wechseln kann, da ich eine größere Grammatik habe, die neu geschrieben werden müsste.