【问题标题】:JavaTokenParser Parser gets confused between two types I have createdJavaTokenParser Parser 在我创建的两种类型之间感到困惑
【发布时间】:2012-11-04 15:41:31
【问题描述】:

这是一个课程,所以我更喜欢阅读提示或其他内容,而不仅仅是答案,除非它只是一个明显的错误。解析器在 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

【问题讨论】:

  • typeDate 中,您可以使用~&gt; 而不是~ 来跳过中间符号。

标签: regex parsing scala token


【解决方案1】:

我发现我的问题字符串应该定义为

def string: Parser[Any] = """([a-zA-Z0-9])+""" r

【讨论】:

    猜你喜欢
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 2012-11-14
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    相关资源
    最近更新 更多