嗨,我得到了这样的代码:
data Digit = Zero | One | Two | Three | Four | Five | Six | Seven | Eight |
Nine
deriving (Eq, Show)
data Number = Single Digit | Many Digit Number deriving (Eq, Show)
data Expr = Lit Number
| Sub Expr
| Sum Expr Expr
| Mul Expr Expr
deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)
因此,使用此代码的想法是使用一个字符串,例如* + 2 3 * 2 + 6 - 2,将表示为((2 + 3) * (2 * (6 - 2))),然后使用它将字符串的部分放在那里的类型中.当然最后找到结果,在这种情况下40.问题是我对解析知之甚少,所以我真的不知道如何解析这样的表达式.我已经看到了一些简单的解析,其中字符串被解析为类型,如人或类似的东西.但我认为这有点复杂.如果有人有任何建议,我会非常感兴趣.