Re: [請益] 中序與後序式中的負號與減號處理問題?

作者: JustinHere (良葛格)   2018-11-09 16:10:12
※ 引述《SeamusBerloz (軒摩斯)》之銘言:
: 第 3 種 (預先處理補零):
: 2*(-18/3) ==> 2*((0-18)/3) ==> 2 0 18 - 3 / *
: ==> 0 減去 18 先做 ==> 最後結果得 -12
: 小弟想請教,考慮輸入是有可能錯誤的,需要指出錯誤與不合法之處,那麼:
: 1、哪一種後序在學理上才是正確的轉法?
: 2、如果都不是,怎樣做才是正確的呢?
我不知道學理上怎麼做…XD
基本上,我之前用的方式是預處理,不過補 0 記得好像會有一些 corner case 沒
處理到,因此我的處理方式是將之換為一個內建符號。
我的土法是 - 的前面如果不是運算元,就表示它是負號:
https://goo.gl/o1WPjR
- 前面不是運算元:
1. - 前面是個 (
(表示它是在 () 裏)
2. - 前面是個運算子
這是我處理運算式的時候,留下的一些記錄:
https://openhome.cc/Gossip/Toy/Operator.html
這是我實作玩具語言時,留下的記錄:
https://openhome.cc/Gossip/Toy/index.html

Links booklink

Contact Us: admin [ a t ] ucptt.com