如果觉得代码库太大,可以参考我以前写的表达式分析算法的文章
https://blog.csdn.net/jiexiaopei_2004/article/details/41546673
项目地址: https://github.com/mengjieli/WeChatGame
目前支持的功能
1. 数据类型有 number,bool,string 以及 变量
2. 运算符有 + - * / % ! << >> >>> > < >= <= == === !== != & ~ ^ | && || ?: ()
使用非常简单,把 Binding.js copy 到项目里面即可。
如果真机跑不通没有 window 函数,可以把 Binding.js 最后的 window.binding = binding 改成 wx.binding = binding,然后使用改成 wx.binding.eval
用法:
- simple expr
console.log(binding.eval("(1 + 2) * 4 / 2")); //console 6
2. expr with var
var v0 = 3;
console.log(binding.eval("$0 * 4",[v0])); //console 12
3. expr with var and function
var v0 = 3;
var v1 = 6;
console.log(binding.eval("Math.sqrt($0 * 3 * $1 * 6)",[v0,v1])); //console 18
4. expr with var and self-define function
var v0 = 9;
var addFunction = function(a,b) {
return a + b;
}
console.log(binding.eval("add(Math.sqrt($0), 2)",[v0],{add:addFunction})); //console 5
5. 3 op expr
console.log(binding.eval("3 > 2 ? true : false")); //console true