我把這個從聲稱解析實數的一個項目,但它在某種程度上吃小數部分前:Parboiled - 如何解析一個實數?
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)
}
}
此打印:
CAPTURED '.3'
RESULT: Some(0.3)
這裏有什麼問題?請注意,目前我無法從Parboiled-1到Parboiled-2,因爲我有一個更大的語法,必須重寫。