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