我有这个代码
type Exprs =
| Val of float
| Mult of Exprs * Exprs
| Plus of Exprs * Exprs
let pexpr, exprRef = createParserForwardedToRef<Exprs, unit>()
let pval = pfloat |>> Val
let binaryOp s = (ws >>. pexpr.>> ws) .>>. (ws >>. str s >>. ws >>. pexpr)
let pplus = binaryOp "+" |>> Plus
let pmuil = binaryOp "*" |>> Mult
do exprRef := choice [ attempt pmuil
pplus
pval ]
let expression = ws >>. pexpr .>> ws
当它评估时,它会抛出 StackoverflowException。那么问题是如何在没有无限递归的情况下编写它?
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)