go动态解析文本,进行表达式计算

网络上有个别关于go语言动态解析一些表达式的库,我之前用过,但感觉功能很少,比如没有支持 && 和 || 这类符号,也没有支持比较运算符(> < >= <= )这一类, 所以我自己写了一个。

其实我的目标是将这个库变成一个解释型编程语言,而不单纯只是做算术表达式运算,那样子用途其实不大。现在我已经实现了很多特性了,比如变量赋值,函数,比较运算符、算术表达式等等。

如果是使用go语言并且有这方面需要的话,完全可以直接引入这个库用于算术表达式。

使用方法,直接引入就能用:

import "github.com/pywee/lit"
exprs := []byte(`
        a = (2 + 100 ^ 2 - (10*1.1 - 22 + (22 | 11))) / 10 * 2;
        b = 12 / 333 + 31 + (5 / 10) - 6 | 100;
        print(a); 
        print(b); 
    `)
    _, err = lit.NewExpr(exprs)
    
// 最终输出 16 和 125 与 原生go语言是一样的

支持弱类型处理,这方面我参考了 php 和 js

src := []byte(`
        a = true - 1;
        b = isInt(1);
        c = isFloat(1);
        d = false == 0.0;
        e = "false" == 0.0;
        print(a); // 0
        print(b); // true
        print(c); // true
        print(d); // true
        print(e); // true
    `)
    _, err := lit.NewExpr(src)

传送门 https://github.com/pywee/lit

有兴趣的朋友记得 star 我一下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值