Ben一口气举了N多例子,然后说:“好,既然有对将来和现在的假设,就应该有……”

“……对过去的假设。”我接道,“我记得第一次课后给你写的信里就有类似的句子,不过当时是用纯换套儿的思想解决的——原句是

He would have been here yesterday if he had driven a car.如果用‘隐含法’分析,那么第一,He wasn’t here yesterday.第二,He didn’t drive a car.”

“正确!在‘对于过去的假设(与事实不符)’中,if打头的那半句要用had done,而另外半句则要从would do——也就是‘对于现在的假设’的基础上——再‘降’一个时态,这样才有过去的感觉。”

“可是would do已经到极限了,还能怎么‘降’?”我脑子里甚至飘过了“woulded do”(当然,woulded这个词是铁定不存在的),“其实我能猜到,你最后推出的结论,肯定和刚才那个例句相符,也就是说,would do再‘降’个时态会变成would have done。但那就意味着:这里的have done有‘过去’的感觉啊!”

“先看个场景吧。”Ben没有直接回答我的问题,“我是医生,一直没告诉自己的病人她得了绝症。等她终于知道了的时候,就责怪我当初撒谎。这时候我会辩解:I may have lied, but I was doing the right thing.前半句什么意思?”

正如Ben之前所说,我们自己造不出来的句子却往往能轻易听懂。我尽量精确地翻译道:“我有可能过去对你撒了谎。”

Ben进一步举例:“再比如你来上课,我说You must have done your homework.怎么解释?”

“这表示‘你肯定已经做了作业’——或者说‘你过去肯定做了作业’。”

“那如果你一回家,发现找不着自己养的超级小乌龟了,于是跟你妈说You can’t have thrown it away. It must be somewhere!——这又是什么意思?”

“表示‘你(过去)不会把它扔了吧?’。”我的思路越发清晰,“刚才may,must,can后面的have done果然都表示‘过去’!”

Ben接着说:“一般我们会把will,may,must,can这样的动词归为一类,因为它们后面都必须加do——也就是动词原形。比如你见过I will finish it,但肯定没见过I will finished it.”

“对,这些都是情态动词。”我说。不过话一出口,就又后悔了——还是犯了“起名字”的毛病。这些词是不是叫“情态动词”,其实和它们后面是否要加do没什么关系。

Ben这回倒没纠正我,只说:“好吧,如果你想这么叫的话。不过一定要记住相应的定理:在只能加do(动词原形)的地方,have done表示‘过去’。这就是为什么would do‘降’完时态会变为would have done。”

“明白了!那,”我突然想起了to do的句型,问道:“to后面也肯定加do,难道也可以变成to have done?”

“当然行了!比如你正和朋友聊天,我想打断你,怎么说?”

“Sorry to bother you. ”

“那要是来不及说这句怎么办?比如我有急事,冲过去直接把事跟你说了,之后该怎么向你朋友道歉?”

“Sorry to … have bothered you?”我试探着问道。

“没错,千万别不敢说,因为do和have done的语法位置是等同的——也就是说能加do的地方一般都能加have done。你想,have done中的have本来就是个动词原形,而且还能根据时态变成has和had—完全就是在享受一般动词的待遇嘛!如果你足够‘书面’,甚至可以说出这种句子:Having finished his homework, he went to bed right away.”

真不愧是“能加do就能加have done”——以至于能加doing的地方也能加having done!我虽然能明显看出逗号前面是用doing“找补”的部分,但还是被having done这么地道的用法雷到了!我忍不住换套儿造了一句:Having thrown up on Ben, I apologized to him.果然,Ben也被我的句子雷到了。

本文节选自外研社《像高手一样学语法》