工作中的那些坑——语法解析器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工作中的那些坑——语法解析器相关的知识,希望对你有一定的参考价值。

工作项目里用到线性回归算法,用于计算账户的分值,表明某账户是否是有风险的账户。其中参数都配好了,代码里直接用逆波兰表达式解析即可。本来事情到这里已经结束,突然来了新的需求:账户算出来的分数较为无序,于是考虑用sigmoid函数将其映射到(0,1)区间内,在乘以系数使其显示更为直观。为了使整个表达式更将通用,要求做到同时能解析sigmoid函数,即:原来单纯解析常量、变量、运算符的逆波兰表达式已经不能直接解析新增的sigmoid函数(即表达式),另外对嵌套的情况也没做处理,所以需要重新设计一个更为通用的语法解析器。

先介绍下sigmoid函数,按照wiki上的解释:A sigmoid function is a mathematical function having a characteristic "S"-shaped curve or sigmoid curve. Often, sigmoid function refers to the special case of the logistic function shown in the first figure and defined by the formula

技术分享 

其曲线如图

 技术分享

简单来说,该函数将一个区间平滑的映射到(0,1)区间内,是不是联想到了概率呢?

 

以上是关于工作中的那些坑——语法解析器的主要内容,如果未能解决你的问题,请参考以下文章

ANTLR4 如何编写语法文件之语法解析器规则

ANTLR4 如何编写语法文件之语法解析器规则

c ++中的布尔表达式(语法)解析器

此实验语法需要启用解析器插件:'objectRestSpread'

MySQL技术探索01实现SQL语法解析器

浏览器是怎么把html文档解析成DOM结构的