Haskell 用Happy解析switch语句

Haskell 用Happy解析switch语句,haskell,happy,Haskell,Happy,所以,我试图解析包含如下switch语句的代码 function (a : Boolean) equals (b : Boolean) : Boolean { switch (a) { case true: switch (b) { case true: return (true); case false:

所以,我试图解析包含如下switch语句的代码


function (a : Boolean) equals (b : Boolean) : Boolean {
        switch (a) {
         case true:
                switch (b) {
                 case true:
                        return (true);
                 case false:
                        return (false);
                }
         case false:
                switch (b) {
                 case true:
                        return (false);
                 case false:
                        return (true);
                }
        }
};

但我一直得到:

certa: user error (../examples/Certa/BooleanLogic.certa:16: Parse error at token 'case')

当我运行生成的解析器时。奇怪的是,它在“case”关键字的第二个实例上失败了,但在第一个实例上却没有。为什么会这样?

您的非递归case语句段不应该包含分号吗

i、 e


如果您发布一个可运行的代码段(但要尽可能小),帮助会更容易。
certa: user error (../examples/Certa/BooleanLogic.certa:16: Parse error at token 'case')
caseStatements
    : caseStatement ";" caseStatements {
        ($1 : $3)
    }
    | caseStatement ";" {
        [$1]
    }
    ;