我试图用Haskell编写一个简单的解析器,但是我的输入“Hello World”从来没有被正确解析过。我的代码如下所示:
parser = p1 <|> p2 p1 = string "Hello" p2 = string "Hello World"
字符串如果我运行它,我得到错误unexpected whitespace
unexpected whitespace
nwsw7zdq1#
p1已经消耗了令牌“Hello”,因此p2立即失败,因为下一个令牌是空白。您可以使用类似try的东西来重置已消耗的令牌。
p1
p2
try
parser = try p1 <|> p2 p1 = string "Hello" p2 = string "Hello World"
字符串
1条答案
按热度按时间nwsw7zdq1#
p1
已经消耗了令牌“Hello”,因此p2
立即失败,因为下一个令牌是空白。您可以使用类似
try
的东西来重置已消耗的令牌。字符串