8
A
回答
6
我在這幾年前的做法是爲我的postfix表達式創建一個新的操作符。所以當我在中綴中遇到一個一元減號時,我會將它轉換爲#
。所以我的後綴a + -b
成爲ab#+
。
而且,當然,我的評估者必須知道#
只能彈出一個操作數。
類型取決於您在構建後如何使用後綴表達式。如果你想顯示它,那麼你的特殊#
運營商可能會混淆人。但如果你只是在內部使用它(我是),那麼它就很好。
+1
我也這樣做。我可以確定我「在中綴中遇到一元減號」的唯一方法是維護一個布爾上下文,該上下文定義接下來是否需要運算符或操作數。我想知道其他人做了什麼來決定連字符是一元還是二元。 –
+0
@ A.I.Breveleri:如果對中綴使用遞歸下降解析器,則可以在不明確維護狀態的情況下識別一元運算符。例如,參見http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm。 –
相關問題
- 1. 一元減號在分流碼錶達式解析器
- 2. 單元減號運算符在C++中如何處理布爾運算符?
- 3. 一元和二元減號
- 4. C++中的分流碼算法
- 5. 分流碼算法的問題
- 6. PHP號碼處理
- 7. iphone的電話號碼分割算法?
- 8. 頭號碼算法
- 9. 擴展分流碼算法以支持條件三元運算符
- 10. ANTLR:區分一元運算符和二元運算符的問題(例如減號)
- 11. 無符號字符減法運算
- 12. 壓縮擴展算法減少電話號碼中的位數
- 13. 識別一元減號在計算器中,java
- 14. 如何計算流處理的元素數量?
- 15. 部分削減電話號碼?
- 16. 安卓:減少了代碼處理AlertDialog
- 17. File.getCanonicalPath無法處理NTFS流?
- 18. 算法來處理一系列的值
- 19. 信號處理在MATLAB(自動音樂流派分類)
- 20. 計算騾流處理的請求
- 21. 算法減少
- 22. 算法在SecureRandom號碼
- 23. 如何處理KDB中包含減號的符號?
- 24. 方式處理加串號和減號操作
- 25. 分組號JS算法
- 26. 處理編碼元素
- 27. 在多臺計算機上處理髮票號碼
- 28. 字符串處理算法
- 29. 併發處理 - Peterson算法
- 30. 像素處理算法
對這個問題有幾種解決方案,afaik所有這些都是一些擴展hackish。 – harold
你的文章發佈兩年後,我剛剛有同樣的問題。這是永遠相關的問題。下面是一個觀察結果:添加一個零(我也考慮過)不會總是有效:例如: --3將被轉換爲0 - 3 -3 = -6大多數解析器會將減號作爲時間減去一個乘積,這將是: - (-3)= 6.乾杯, – MrVelez
@MrVelez:你說的是一個零的前綴不正確,但出於不同的原因。預處理' - 3'前綴零應產生'0-0-3'(不是'0-3-3',第二個3來自哪裏?)。即'3' - >'0 - , - 3' - >'0-0-,3' - >'0-0-3',這導致後綴'0 0 - 3 - 」。這個評估爲-3,這可能不是我們想要的--3。 \如果我們可以將'0-0-3'轉換爲後綴'0 0 3 - - ',那麼它將評估爲期望的3. –