问题描述
我正在编写一个工具,该工具可以读取go代码并解析一些持续时间表达式,例如:dur := 5 * time.Minute
。我已经完成了解析步骤,并得到了*ast.BinaryExpr
。如何评估此表达式并获得其价值?
工具链/软件包中是否有东西,还是需要手工处理?
解决方法
我认为parser
软件包是您想要的软件包。
go还有一个名为eval(https://godoc.org/github.com/apaxa-go/eval
)的软件包,用于评估表达式。
还有两个库可能会帮助您。
https://github.com/PaesslerAG/gval
https://github.com/Knetic/govaluate
Gval(Go eVALuate)为评估任意表达式(特别是类似Go的表达式)提供了支持。
祝你好运!