公式验证
参与运算的变量为a,b,c,d,ac,ab
公式,如:(a+b)*c+(d*10/34)+ac*(ab+10)
运算符号:( ) + - * /
公式符合数学的计算表达式, 以下情况都为公式错误:
a+b(d)
b*)d+c(+e
a+b*
+d*a
a+bc
如何判断公式是否正确?
表达式?验证
------解决方案--------------------这样判断如何-》
1。构建类似js的eval函数
http://blog.sina.com.cn/s/blog_5eb23ca50100plu9.html
2.try catch这个函数
如果有错就是错误的
------解决方案--------------------1.首先验证变量 先用运算符号分割,如果有非指定变量 则错误。
2.验证第一个和最后一个字符,不能是 + - * /
3.验证括号"("的左边必须是运算符或空 ,右边必须是变量,“)”则反之
然后
就没有然后了 代码自己写吧
------解决方案--------------------参考BNF范式
http://baike.baidu.com/view/807721.htm?fromId=1282439
也许你看完上面的连接会问我,这和你的问题有啥关系?
我说再接着看Yacc ,lax, Antlr这些已经成熟的解法
如果非要搞明白,自己动手玩,建议去codeproject搜索“math parser”,"math expression"看看老外们的讲解
或去codeplex 搜“math parser”这类玩意找个开源的项目看看
不过建议还是去codeproject,老外们讲的还是比较细致滴,codeplex这类开源库不少,不过我估计你也木时间看
------解决方案--------------------先做词法分析,再做语法分析。
------解决方案--------------------google nfa dfa 转化