使用scala解析器解析双引号词

时间:2016-04-19 13:24:22

标签: scala parsing

我需要解析这样的东西(包括双引号) - “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

那么,有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

StdTokenParsers使用StdTokens,它在解析之前已经对字符串文字进行了标记。

错误消息是因为第一个标记(整个字符串文字)与第一个预期标记"不匹配。

您可以使用stringLit特征中的StdTokenParsers解析器,并将其与字符串本身的解析器链接,或者定义您自己的不包含字符串文字的标记。