str2 = string "else " λ> strs = (,) many str1 optio-6ren">
gpt4 book ai didi

parsing - 如何组合多个解析器?

转载 作者:行者123 更新时间:2023-12-02 19:30:14 25 4
gpt4 key购买 nike

为什么这个解析器失败以及如何修复它?

λ> str1 = string "elif "
λ> str2 = string "else "
λ> strs = (,) <$> many str1 <*> optionMaybe str2
λ> parse strs "" "elif elif elif else "
Left (line 1, column 16):
unexpected "s"
expecting "elif "

如何组合 many 解析器和 optionalMaybe 解析器?

最佳答案

问题是字符串“elif”会吃掉else中的el,并且由于它已经消耗了输入,因此不会回溯并且相反,提示意外的 s

最简单的修复方法是允许使用 try 进行回溯:

str1 = try $ string "elif "

关于parsing - 如何组合多个解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61943230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com