我正在尝试使用 fastparse 构建一个简单的解析器,当给定的输入是给定列表中定义的单词之一时,该解析器会成功。具体来说,这就是我的代码的样子:
val words = List("a", "b", "c", "d")
def reader[$: P] = words.map(f => P( f )).reduce((l, r) => l | r )
fastparse.parse(input, reader(_))
当输入为“a”、“b”或“c”时,解析器失败;当输入为“d”时,解析器成功。 准确地说,当输入中出现“d”并且所有其他字符都来自单词列表时,解析器成功。
根据我的理解,这
reader
应该在“a”,“b”,“c”和“d”上成功。我是不是漏掉了什么?
该问题已在 fastparse 的存储库中得到解决:https://github.com/com-lihaoyi/fastparse/issues/298