Ich versuche, einen einfachen Parser wie unten zu erstellen. Ich bin mir jedoch nicht sicher, warum sich der Kombinator-Parser beschweren möchte, dass er "floatingPointNumber" nicht erkennt, wenn das Format "Datumsangaben" vorliegt. Es erkennt, wenn es "Ident" istScala - Kombinator Parser falsch - repsep
Unten ist der Code mit Fehler.
Vielen Dank für Ihre Hilfe!
import scala.util.parsing.combinator.JavaTokenParsers
class MyParser extends JavaTokenParsers {
def dates = repsep(date, ";")
def date = """\d{2}-[a-zA-Z]{3}-\d{4}""".r
def value = ident | dates | date | floatingPointNumber
def obj = "("~>repsep(value,",")<~")"
}
object MyParser extends MyParser {
def main(args: Array[String]): Unit = {
println(parseAll(obj, "(22-Jan-2016;09-Mar-2015)"))
println(parseAll(obj, "(22-Jan-2016;09-Mar-2015,blah3)"))
println(parseAll(obj, "(22-Jan-2016;09-Mar-2015,32)"))
}
}
[1.26] parsed: List(List(22-Jan-2016, 09-Mar-2015))
[1.32] parsed: List(List(22-Jan-2016, 09-Mar-2015), blah3)
[1.26] failure: `)' expected but `3' found
(22-Jan-2016;09-Mar-2015,32)
^
Danke, verpassen die Feinheit von mindestens einem! – brianinhk