短信转发匹配规则加强版 !开大!词法分析!

在短信转发工具TranspondSms中,实现了,单个匹配规则,像这样:

rule

那么稍微复杂点的匹配规则怎么实现?对用户友好?高度自定义?

比如这样:

((手机号 是 10086) 或者 (手机号 是 10010)) 并且 短信内容 包含 欠费

更复杂的可能好多层嵌套

想了下用正则不太好嵌套

不过这种自定义规则挺像自定义语言的,自己定义语法规则,解析执行,

网上搜了下,好多开源的语法解析库,比如这个ANTLR大家可以搜下

这里有个简明教程

我们的语法元素比较简单有:

手机号  短信内容  是 不是 包含 开头 结尾 并且 或者


然而,后面分析了下,不然手掳一版先??

直接让用户将语法规则写入文本框,比如

并且 是 手机号 等于 10086

    或者 是 手机号 等于 10010

并且 是 内容 包含 欠费


我去,貌似可以

先将这段文本解析成规则树


之后复杂的语法树可以是这样:


先到这,后面再实现补充

你可能感兴趣的:(短信转发匹配规则加强版 !开大!词法分析!)