我需要解析这样的东西(包括双引号) - “blablabla”
我的班级必须扩展StdTokenParser。我的班级有这样的方法:
protected lazy val id: Parser[String] = "\"" ~ ident ~ "\"".? ^^ {case a ~ b ~ c => a + b + c}
此处ident是StdTokenParsers特性的成员。
当输入为“blablabla(只有一个双引号)时,它的效果很好,但是当输入为”blablabla“时,它在解析期间失败并出现以下异常:
Exception in thread "main" java.lang.RuntimeException: [1.1] failure:
``"'' expected but "blablabla" found
那么,有人可以帮助我吗?
答案 0 :(得分:1)
StdTokenParsers
使用StdTokens
,它在解析之前已经对字符串文字进行了标记。
错误消息是因为第一个标记(整个字符串文字)与第一个预期标记"
不匹配。
您可以使用stringLit
特征中的StdTokenParsers
解析器,并将其与字符串本身的解析器链接,或者定义您自己的不包含字符串文字的标记。