作者JustinHere (良葛格)
看板Programming
标题Re: [请益] 中序与後序式中的负号与减号处理问题?
时间Fri Nov 9 16:10:12 2018
※ 引述《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
--
良葛格学习笔记
http://openhome.cc
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 39.12.97.195
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Programming/M.1541751018.A.86E.html