Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何分析代数表达式_Php_Parsing_Infix Notation - Fatal编程技术网

Php 如何分析代数表达式

Php 如何分析代数表达式,php,parsing,infix-notation,Php,Parsing,Infix Notation,我将制作一个可以分析代数表达式的程序。 例如: 我的程序会知道它会先将5乘以5,2乘以2,然后再加上它们。我想自己分析它,而不是用php。我想建议大家看看,但显然,自从我上一次在20世纪80年代中期这样做以来,事情已经有所进展。如果你想了解这一切背后的理论,那么现在看来,a是一条前进的道路 如果你不能不关心这个理论,那没关系:实现这个理论意味着你最终将要编写一个递归下降解析器,所以你可以这样做:-)我想建议你看看,但很明显,自从我上一次在20世纪80年代中期这样做以来,事情已经开始了。如果你想

我将制作一个可以分析代数表达式的程序。
例如:


我的程序会知道它会先将5乘以5,2乘以2,然后再加上它们。我想自己分析它,而不是用php。

我想建议大家看看,但显然,自从我上一次在20世纪80年代中期这样做以来,事情已经有所进展。如果你想了解这一切背后的理论,那么现在看来,a是一条前进的道路


如果你不能不关心这个理论,那没关系:实现这个理论意味着你最终将要编写一个递归下降解析器,所以你可以这样做:-)我想建议你看看,但很明显,自从我上一次在20世纪80年代中期这样做以来,事情已经开始了。如果你想了解这一切背后的理论,那么现在看来,a是一条前进的道路


如果你不在乎这个理论,那没关系:实现这个理论意味着你最终要编写一个递归下降解析器,所以你可以这样做:-)

你可以使用“中缀”表达式并使用堆栈,将它转换成“前缀”或“后缀”表达式来决定操作顺序(括号、求幂、乘法或除法、加法或减法)

例如,表达式([5][*][5][+][2][*][2])将转换为后缀表达式[5][5][*][2][2][*][*][+]。此“后缀”表达式现在可以理解为“五乘五乘,二乘二乘,然后相加”,这将保留操作顺序

另一种思考“前缀/后缀”的方法是多个堆栈。当遇到数字5时,将其推到主堆栈上。当遇到乘法符号时,将其存储在辅助堆栈中。当遇到下一个5时,将其推到主堆栈上,然后将所有项从辅助堆栈中弹出并推上到主堆栈

一旦运算符和操作数的顺序正确,就需要从堆栈中弹出项,然后对它们求值


我记得在大学的计算机科学102课程中我就发现了这个问题。你这样做是为了好玩,还是只是想弄明白?

你可以使用“中缀”表达式并使用堆栈,将其转换为“前缀”或“后缀”表达式来决定操作顺序(括号、求幂、乘法或除法、加法或减法)

例如,表达式([5][*][5][+][2][*][2])将转换为后缀表达式[5][5][*][2][2][*][*][+]。此“后缀”表达式现在可以理解为“五乘五乘,二乘二乘,然后相加”,这将保留操作顺序

另一种思考“前缀/后缀”的方法是多个堆栈。当遇到数字5时,将其推到主堆栈上。当遇到乘法符号时,将其存储在辅助堆栈中。当遇到下一个5时,将其推到主堆栈上,然后将所有项从辅助堆栈中弹出并推上到主堆栈

一旦运算符和操作数的顺序正确,就需要从堆栈中弹出项,然后对它们求值

我记得我在大学的计算机科学102课程中发现了这个问题。你这样做是为了好玩,还是只是想弄明白?

类似问题:也请参见答案。类似问题:也请参见答案。