我觉得应选C,
if 暗示虚拟语气,且由 yesterday 看出是过去时,故排除A、B。
D不符合 should(would) have+ 过去分词 的句型。
故选C.
还有虚拟语气形式,
1.真实条件句
真实条件句用于陈述语气,假设的情况可能发生,其中 if 是如果的意思。
句型:条件从句 主句
一般现在时 shall/will + 动词原形
2.非真实条件句
1)时态:可以表示过去,现在和将来的情况。它的基本特点是时态退后。
a. 同现在事实相反的假设。
句型 : 条件从句 主句
一般过去时 should( would) +动词原形
b. 表示于过去事实相反的假设。
句型: 条件从句 主句
过去完成时 should(would) have+ 过去分词
这道题是2.1)。b的句型
希望对你有用
题目选择C.would have allowed ,与现在事实相反,主句用过would have allowed 表示虚拟,从句用过去式were
虚拟语气有很多形式,虚拟语气的形式:
虚拟(条件)语气中,主句与从句中谓语动词的形式可分为下面四类
假设类型
条件从句谓语
动词形式
主语谓语
动词形式
与现在事实相反
动词的过去式(be用were而不用was)
would(第一人称可用should)
+动词原形
与过去事实相反
had+ -ED分词
would(第一人称可用should)
+have + -ED分词
与将来事实相反
were to + 动词原形
would(第一人称可用should)
+动词原形
与将来事实可能相反
should + 动词原形
would(第一人称可用should)
+动词原形
选是选C
would have 表示虚拟语气。
一般虚拟语气就是用would 或者should 表示。因为事情是发生在yesterday也就是过去,所以又加了have
我是这么理解的,原因就是语法上的规定吧。找本语法书翻到虚拟语气那看看就知道了,要分的话会分很多种类的,一时也说不明白
与过去事情相反,应该用过去完成时Had done,后面句子中站在过去角度看将来就用Would have done;要表示与过去、将来相反的情况虚拟条件句用动词过去式如were,后面用Would,should.
D
主句中有yesterday表过去
所以要用过去完成时表示对过去的虚拟
大概是这样的