如何擴展分流碼算法,它最初是爲二元運算符支持條件三元運算符(「a?b:c」)? 我還沒有看到這個答案,我有一個,所以我張貼它。擴展分流碼算法以支持條件三元運算符
2
A
回答
2
我做的是增加了三個新運營商的方式: 「?」
- 三元開如果
- 「:」三元 - 否則
- 三元封閉如果
只有前兩個將被直接讀取初始表達時創建。
但是,只有第三個將存在於輸出中(初始表達式的RPN)。
三元開放if如果放在操作符棧上,每當一個「?」被看到。
三元 - 其他從未放在堆棧上。相反,堆棧一直處於三態打開狀態,如果找到,則三元打開if用三元關閉if表示(因此表示我們處於條件運算符的其他部分)。
所有三個運算符的優先級都高於其他所有運算符(更高的含義是在其他運算符之後進行評估)。
三元-i運算符具有相同的優先級和右結合性(如在C中),這意味着三元-if將永遠不會導致另一個三元組的流行 - 如果。
三元 - 其他元素的優先級高於三元-ifs,它的關聯性是不相關的(因爲它從不放在堆棧上)。所以,遇到三元開放時 - 如果它會將其轉換爲前面提到的封閉的。
當遇到三元關閉 - 如果它會彈出它。
實例(三元封閉如果記爲 「:」):
- 「一個B:C?」 - >
「ABC:」 - 「A B:? X Y:Z」 - >
「abxyz?????:」 - 「一個X Y:Z:b」 - >
「爲axyz:b:」
這種方法od比實現更難以解釋,並且它對算法做出了輕微的改變,所以如果任何人有更簡單的解決方案,請發佈它。
相關問題
- 1. 擴展到隱藏三元運算符
- 2. 三元運算符支持代碼模型?
- 3. Perl三元條件運算符
- 4. 樹枝 - 三元條件運算符
- 5. 三元運算符用法?
- 6. 三元運算符用法
- 7. 三元運算符
- 8. 三元運算符在aria展開angularjs
- 9. 條件(三元)運算符代碼樣式
- 10. 如何使用條件三元運算符分配Func <>?
- 11. 爲什麼Kotlin不支持「三元運算符」
- 12. 使用條件(三元)運算符計算電費的Java代碼?
- 13. 是否有三元運算符不是某種形式的條件運算符
- 14. 使用三元運算符分配?
- 15. 微積分三元運算符類
- 16. NHibernate.LINQ支持的運算符
- 17. 類不支持運算符
- 18. 無法在F#中擴展運算符?
- 19. &&使用三元運算符
- 20. 執行三元運算符
- 21. 關於三元運算符..!
- 22. C三元運算符
- 23. 使用三元運算符
- 24. 替代三元運算符
- 25. 三元運算符在foreach
- 26. Ruby三元運算符
- 27. java三元運算符
- 28. 三元運算符C
- 29. 三元運算符連接
- 30. 三元運算符問題