2012-01-17 68 views
3

我一直在用java编写一个表达式求值器并且出于沮丧,我也来到这里来询问它。我现在至少重写了15次,每次都无济于事。前缀后缀中缀Java表达式求值器

基本上我需要在前缀,中缀或后缀中取一个字符串并将其评估为整数。该表达式可以使用java中包含的任何算术运算符。

即时通讯存在的问题: - 当我尝试解析表达式树或将它们全部解析为后缀时,我对单项运算符有问题。 - 我无法将它识别为一个数字的多位数字,随后它毁坏整棵树或切换数字。 - 我无法让程序找出正确放置圆括号的位置,我无法使用堆栈来识别开始和括号的末尾。

所以基本上程序需要做到这一点:

对于任何任意数字ABCDEF

评估的前缀后缀和中缀:

A-- + ++乙 - --C * d +/E%F

对于任何任意的比特ABCDEFG和数目n

评估在前缀,后缀和缀: A & B | C 1〜d

N >>一

ň< <一个

我的课本是没有太大的帮助,也不是我已下令,我真的不知道如何做到这一点的书,请帮助,即使只是解释如何做到这一点对我来说也足够了。感谢您的帮助:D

回答

1

假设您已成功标记所有标识符,操作符和文字,下一步将阅读有关递归下降解析器的一些内容。你可以为这种情况手动编写一个文件,而不是试图弄清楚如何使用解析器生成器。

+0

是否有任何地方可以指示我学习递归下降解析,我认为这必须是一个非常常见的计算机科学项目。 =/ – user1152918 2012-01-17 04:48:53

+0

维基百科的文章是一个好的开始:http://en.wikipedia.org/wiki/Recursive_descent_parser – 2012-01-17 12:28:54