haskell 为什么Parsec停止解析多个解析器?

yptwkmov  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(113)

我试图用Haskell编写一个简单的解析器,但是我的输入“Hello World”从来没有被正确解析过。
我的代码如下所示:

parser = p1 <|> p2

p1 = string "Hello"
p2 = string "Hello World"

字符串
如果我运行它,我得到错误unexpected whitespace

nwsw7zdq

nwsw7zdq1#

p1已经消耗了令牌“Hello”,因此p2立即失败,因为下一个令牌是空白。
您可以使用类似try的东西来重置已消耗的令牌。

parser = try p1 <|> p2

p1 = string "Hello"
p2 = string "Hello World"

字符串

相关问题