这个句子没有你想的那么复杂。这个句子较大的知识点是一个时态:现在完成进行时态
公式为:have/has been doing
意义为:重过去某段时间持续到现在的动作,并且还会继续持续下去。
让我试答一下吧。我不知道你看的是什么语法书,语法是为语言服务的,没有必要为研究语法而研究。我们又不是想当语法家。本句简单点儿说就是一个现在完成进行时态。典型的句子结构就是:主语+have(表示完成时)+been +doing(表示进行)形式。后面的for a long time是介词短语作句子的状语,表示作这件事经历的时间长度。
请参考。