2013-05-16 101 views
0

我知道RPN是如何工作的,即我們必須輸入:逆向算法逆波蘭式

a + b * c 

和輸出

bc*a+ 

是很容易地創建算法顯示我什麼是最後這個方程的計算?我的意思是我想知道第一個操作是兩個句子:「a」和「b * c」。

數值方程與我的問題沒有關係,但與邏輯句子相關。比如我有一個合乎邏輯的句子:

p&(q|r) 

,我需要首先分割這

p,(q|r) with &operator 

和第二句:

q,r with |operator 

我需要建立某種形式的解析器或什麼?是否有可能實現它相對容易?

回答

1

這個問題有點不清楚,但我試着回答'創建一個算法,它顯示了什麼是最後一次計算'很容易。

思考RPN作爲計算一個基於堆棧的方法的:如此bc*a+裝置推(的值)b在堆棧中,在堆棧上推c,應用*到兩個最上面的元件和推動的頂部的結果堆棧。然後在堆棧上推a,並將+應用於兩個最頂端的元素,並將結果推送到堆棧上。因此rpn公式所做的最後一次計算是最右邊的運算符。

邏輯句子完全一樣,只需用&和+替換*即可。

+0

我知道誰是RPN的作品,但它不能幫助我,因爲我想要做算法,告訴我所有的步驟。帶有邏輯運算符的RPN首先給我(q,r帶|運算符),然後p(q | r)帶&運算符,我希望它反轉。如何解析它? – Andrzej