2012-01-17 89 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