2
私は以下のように単純なパーサを作成しようとしています。しかし、なぜ '日付'形式があるときに 'floatingPointNumber'を認識しないとコンビネータパーサが不平を言っているのか分かりません。それは 'ident'であることを認識しますScala - コンビネータパーサが正しくありません - repsep
以下はエラーのあるコードです。
多くのご協力ありがとうございます!
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)
^
おかげで、少なくとも一つの繊細を欠場! – brianinhk