【发布时间】:2020-08-17 09:20:40
【问题描述】:
我正在编写一个工具,它可以读取 go 代码并解析一些持续时间表达式,例如:dur := 5 * time.Minute。我已经完成了解析步骤并得到了*ast.BinaryExpr。如何评估这个表达式并获得它的值?
工具链/包中有什么东西还是我需要手动操作?
【问题讨论】:
标签: parsing go abstract-syntax-tree evaluation
我正在编写一个工具,它可以读取 go 代码并解析一些持续时间表达式,例如:dur := 5 * time.Minute。我已经完成了解析步骤并得到了*ast.BinaryExpr。如何评估这个表达式并获得它的值?
工具链/包中有什么东西还是我需要手动操作?
【问题讨论】:
标签: parsing go abstract-syntax-tree evaluation
我认为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 的表达式。
祝你好运!
【讨论】: