I am trying to create a simple parser as below. However, I am not sure why combinator parser is complaining on not recognizing 'floatingPointNumber' when there are 'dates' format. It recognizes when it is 'ident'
Below is the code with error.
Many thanks for help!
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)
^