当前位置: 技术问答>java相关
*******哪位大虾有对表达式进行解析的类?******
来源: 互联网 发布时间:2015-08-27
本文导语: 比如说求下列字串的值: (a+b)*5-7 | 有一个现成的,非常好用:JavaCC(JavaCC Java Compiler Compiler),纯JAVA的词法分析生成器,功能十分强大,可以用来编写编译器的。 可以免费下载使用:http://ww...
比如说求下列字串的值:
(a+b)*5-7
(a+b)*5-7
|
有一个现成的,非常好用:JavaCC(JavaCC Java Compiler Compiler),纯JAVA的词法分析生成器,功能十分强大,可以用来编写编译器的。
可以免费下载使用:http://www.webgain.com/products/java_cc/
可以免费下载使用:http://www.webgain.com/products/java_cc/
|
自己写一个吧,不难。
设两个栈,一个操作符栈,一个操作数栈。
基本方法如下:‘(’的优先级最低。‘+’,‘-’略高,‘×’,‘÷’最高。
最先遇到的操作符,操作数都进各自的栈。当新遇到操作符时,与栈顶的操作苻比较优先级,如果新操作符大,就继续进栈,否则栈顶的操作苻出栈,同时从操作数栈出两个操作数,运算后的结果再进操作数栈,同时新操作符进栈。
‘)’的出来比较特别,遇到时要一步一步计算(就是取两个数,用栈顶操作符运算,结果入栈,同时操作符出栈),直到遇到‘(’操作符。然后‘(”出栈,并且抛弃’)‘苻。简单的大致就如此了。
更复杂的表达式需要学习编译原理中的词法分析
设两个栈,一个操作符栈,一个操作数栈。
基本方法如下:‘(’的优先级最低。‘+’,‘-’略高,‘×’,‘÷’最高。
最先遇到的操作符,操作数都进各自的栈。当新遇到操作符时,与栈顶的操作苻比较优先级,如果新操作符大,就继续进栈,否则栈顶的操作苻出栈,同时从操作数栈出两个操作数,运算后的结果再进操作数栈,同时新操作符进栈。
‘)’的出来比较特别,遇到时要一步一步计算(就是取两个数,用栈顶操作符运算,结果入栈,同时操作符出栈),直到遇到‘(’操作符。然后‘(”出栈,并且抛弃’)‘苻。简单的大致就如此了。
更复杂的表达式需要学习编译原理中的词法分析