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课程中发现了这个问题。你这样做是为了好玩,还是只是想弄明白?类似问题:也请参见答案。类似问题:也请参见答案。