我正在尝试使用 Parsec 在 Haskell 中编写一个简单的解析器,但我的输入“Hello World”从未被正确解析。
我的代码如下所示:
parser = p1 <|> p2
p1 = string "Hello"
p2 = string "Hello World"
如果我运行它,我会收到错误
unexpected whitespace
p1
已经消耗了标记“Hello”,因此 p2
立即失败,因为下一个标记是空格。
try
之类的东西来重置消耗的代币。
parser = try p1 <|> p2
p1 = string "Hello"
p2 = string "Hello World"