【发布时间】:2016-04-19 21:47:46
【问题描述】:
我需要解析这样的东西(包括双引号)-“blablabla”
我的班级必须扩展 StdTokenParser。我的班级有这样的方法:
protected lazy val id: Parser[String] = "\"" ~ ident ~ "\"".? ^^ {case a ~ b ~ c => a + b + c}
这里的 ident 是 StdTokenParsers trait 的成员。
当输入为“blablabla”时效果很好(只有一个双引号),但当输入为“blablabla”时,它在解析过程中失败,并出现以下异常:
Exception in thread "main" java.lang.RuntimeException: [1.1] failure:
``"'' expected but "blablabla" found
那么,有人可以帮帮我吗?
【问题讨论】:
-
ident的具体实现是什么?为什么你把结束语作为可选? -
@Łukasz def ident: Parser[String] =
elem("identifier", _.isInstanceOf[Identifier]) ^^ (_.chars)我将结束引号设为可选,仅用于测试。它不会影响结果。