2

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

上面的代码将匹配一个布尔表达式,例如3 < 4ora not 3但是它不会匹配一个表达式,例如3, trueor (((3 < 1)))。谁能给我关于如何匹配这样的表达式的建议3(((3 < 1)))相同的3 > 0(((3 < 1))) > 0,其中 >0 被假定/自动添加到 RHS-less 表达式?

4

1 回答 1

2

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

于 2013-04-22T16:30:21.910 回答