2016-11-18 55 views
-3

something like this(*(+ 1 2 3)5)
像*,+這樣的運算符可以有兩個以上的操作數。如何從前綴表示法構建二進制表達式樹?

+2

也許某種搜索?如果只有一個工具可以搜索互聯網.... –

+1

如果你還沒有做到這一點,請花一些時間閱讀[幫助頁面](http://stackoverflow.com/help),尤其是部分命名[「我可以問什麼問題?」](http://stackoverflow.com/help/on-topic)和[「應避免問什麼類型的問題?」](http://stackoverflow.com /幫助/不-問)。還請[參觀](http://stackoverflow.com/tour)和[閱讀如何提出好問題](http://stackoverflow.com/help/how-to-ask)。最後,請學習如何創建[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –

回答

0

要使用無限數量的操作數創建前綴表示法,您應該爲打開/關閉括號定義一些附加規則(並且這不是前綴表示法通常所做的)。

簡單的解析器將執行操作,第一個操作數並逐個添加其他操作數。在每一步創建新的操作節點時,左操作數將取前一個(當前)結果,右操作數取新取的操作數。

繼續輸入或結束括號。不要從輸入中刪除左括號 - 它應該在開 - 關解析部分處理,而不是在操作解析中處理。

以操作很簡單:

  • 「(」 - >進入更深和解析子表達式達 「)」。
  • 不同的操作 - >深入並解析子表達式。
  • 相同的操作凸輪可以簡單地忽略,但取決於您。
  • 常量(或變量,如果你有它們) - >使操作數子表達式。
+0

謝謝你亞歷山大 – Gunasekar