使用goyacc,lex进行解析的脚本,代码易看,容易拓展。
给完全不懂编程的人士,提供一套开箱即用的,配置流程或指标条件判断的脚本。省去复杂的表单配置与解析过程。减少配置人员与开发人员的心智负担,减轻系统的复杂度
go get -u github.com/xwatsonmai/ConditionalScriptParse/parse@v1.0.1
package main
import (
"fmt"
"github.com/xwatsonmai/ConditionalScriptParse/parse"
"strconv"
"strings"
)
func main() {
// 假设aVal,bVal为接口请求返回参数
aVal := 1
bVal := 2
// 配置好的条件表达式
checkStr := "{aVal} > {bVal}"
// 配置好的表达式变量关系
checkStr = strings.ReplaceAll(checkStr, "{aVal}", strconv.Itoa(aVal))
checkStr = strings.ReplaceAll(checkStr, "{bVal}", strconv.Itoa(bVal))
line := []byte(checkStr)
lex := parse.Parse(line)
err := lex.GetError()
if err != nil {
fmt.Println("err is ", err)
return
}
res := lex.GetResult() // bool
fmt.Println("result is ", res)
}
> 1 > 1
false
> 1 = 1
true
> (1+1)>(2+2)
false
> (1=1) or (2>2)
true
> (1=1) and (2>2)
false
> "你好" = "你好"
true
- 更多的测试用例可在parse/lexer_test.go中查看