这是一个课程,所以我更喜欢提示或其他东西,而不仅仅是答案,除非它只是一个明显的错误。解析器在DATE和VARCHAR之间感到困惑我相信这是因为它们都以刻度标记(')开头并以刻度结束。我不能改变它保持这种方式所需的语法
def atype: Parser[Any] = "(?i)INTEGER".r | "(?i)REAL".r | "(?i)BOOLEAN".r | "(?i)VARCHAR".r | "(?i)DATE".r
def typeDate: Parser[Value] = "'" ~ dayOrMonth ~"/"~dayOrMonth~"/"~year ~ "'" ^^
{case _ ~ a ~ _ ~ b ~ _ ~ c ~ _ => new typeDate(a,b,c)}
def dayOrMonth: Parser[String]= "([0-9][0-9])".r
def year:Parser[String] = "([0-9][0-9][0-9][0-9])".r
def stringExpression: Parser[Value] = "'" ~> string <~ "'" ^^
{case a => new stringExpression(a)}
def string: Parser[Any] = letters
def letters: Parser[Any] = """([a-zA-Z])+""" r
答案 0 :(得分:0)
我发现我的问题字符串应该定义为
def string: Parser[Any] = """([a-zA-Z0-9])+""" r