以编程方式编写解析器时,fastparse 中出现意外的解析行为

问题描述 投票:0回答:1

我正在尝试使用 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”上成功。我是不是漏掉了什么?

scala parsing fastparse
1个回答
0
投票

该问题已在 fastparse 的存储库中得到解决:https://github.com/com-lihaoyi/fastparse/issues/298

© www.soinside.com 2019 - 2024. All rights reserved.