Parser组合器中的Reg-ex示例

时间:2014-06-25 02:20:25

标签: scala parsing

我正在查看Parser[Any]的通配符语法,其中只有一个单词后跟1 *成功解析。

有效示例:

  • FOO *
  • BAR *

无效示例:

  • FOO * BAR *
  • BAZ ****

我测试了以下2 Parser[Any]

  def wildWithDollar     = """^\w+\*$""".r
  def wildTest           = """^\w+\*""".r

测试它们:

  "ABC** with a `$`" should "fail" in {
    val result = parseAll(wildWithDollar, "ABC**")
    println(result)
    assert(result.successful == false)
  }

  "ABC** without a `$`" should "fail" in {
    val result = parseAll(wildTest, "ABC**")
    println(result)
    assert(result.successful == false)
  }

两者都失败了,但错误信息不同:

[1.1] failure: string matching regex `^\w+\*$' expected but `A' found

ABC**
^
[1.5] failure: string matching regex `\z' expected but `*' found

ABC**
    ^

解析器是否可以接受,因为它们都失败了?如果我将此wildcard Parser与其他语法元素一起使用,那么wildTest解析器是否存在任何潜在问题,因为它没有明确指出单个结尾*

0 个答案:

没有答案