私は実数を構文解析するために主張したプロジェクトからこれを取ったが、それは何らかの形で事前に小数部分を食べる: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に行くことはできません。なぜなら、文法を書き直す必要があるからです。