到目前为止,这是我的代码:http: //hpaste.org/86353。我正在 Windows 上使用 GHC 构建。
上面的代码在我的测试文件中产生以下输出:
parse error at (line 3, column 5):
unexpected " "
expecting "{", "if" or identifier
这是我的测试输入:
{ if 9 < 3 then
{
a(); b() c()
d()
}else if 2 < 1{if 3 > 2 { }}}
我一直无法弄清楚为什么表达式后面的空格让 parsec 如此沮丧。如果我在 a() 或 b() 之后删除分号,则 parsec 将抱怨下一个调用的第一个字母(即:b 或 c)。如果我重新添加分号,则 parsec 会抱怨空格。任何调用之间没有空格,a() 和 b() 之后的分号但 c() 之后没有分号会导致程序正确解析。相同的测试,除了 c() 后的分号会导致“意外 \n”。
有什么提示吗?