判定算术表达式合法性
1.如何判定一个算术表达式的合法性?(支持基本的+-*/和括号)
比如6- -9是合法的。1 + 2 * 这种就是不合法的。
关键在于,一元操作符‘+’和‘-’于二元操作符‘+’和‘-’是一样的。
2.如何判定一个算术表达式的合法性?(支持基本的+-*/和括号以及大部分的常用数学函数)
如sin(3+5)是合法的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
谢谢回复。我想进行的是中缀表达式的计算。当然,和RPN本质上是一样的。只是现在最大的两个问题,一个是单目运算符,一个是常用函数,如sin,cos,pow等。怎么做呢?有没有一些参考资料?
逆波兰式!有算法的!
java语言下也有很多的解决方案
有这样的需求肯定最终是要用语言实现的
java语言下推荐http://www.oschina.net/p/ikexpression
Thank you:)
找本 编译原理的书看看(这个比较慢) , 找个解析C语言 语法的程序看看.
你的需求主要是 词法识别 加 句法识别. 当一个表达式不能完成句法识别时就是错误了.
句法识别的处理 类似于 楼上的做法. 你最好找个开源的解析语言语法的程序看看.
不要依赖某个语言的高级功能.
用栈实现.一个符号栈,一个操作数栈.不断输入字符,是数字入操作数,是符号入符号栈,根据算数优先级运算......这是大思路,具体做起来你可以google一下.
我不清楚你需要什么语言的,如果是python,就非常简单了,如果只需要+,-,*,/,而不需要数学函数的话,连math都不需要import
代码:
测试: