Haskell parsec匹配如果(3)好像(3> 0)

时间:2013-04-22 06:03:16

标签: haskell parsec

我现在正在使用Parsec和boolExpr http://hpaste.org/86299的示例版本。我正在通过GHC在Windows上进行编译。

上面的代码会匹配一个布尔表达式,例如3 < 4a not 3,但它与3true(((3 < 1)))这样的表达式不匹配。任何人都可以就如何将3(((3 < 1)))这样的表达式与3 > 0(((3 < 1))) > 0相匹配给出建议,其中在RHS上自动假设/添加&gt; 0没有表达?

1 个答案:

答案 0 :(得分:2)

这看起来像是在尝试将语言的语义推送到语法解析器中。从编程语言的角度来看,“正确”的做法是在语法树中接受数字和布尔值表达式。然后,在稍后阶段 - 类型重建解析 - 决定数值表达式添加单个“&gt; 0”,而布尔值表达式不添加。