그러나, '오랫동안 먹어 왔기 때문에(완료형) 그 맛을 안다.' 라는 표현에서 왠지 부자연스러음이 느껴집니다. 그 이유는 'for a long time' 때문인데요, 'for+기간'의 표현은 완료형에서 어떠한 상태나 행위의 "계속"을 의미하기 때문입니다. 그러므로 자연스로운 표현으로 만들려면, mommy has ever eaten 'something' before. 라고 하는게 더 좋겠습니다. ever, before는 완료형에서 '경험'을 나타내니까요.
위의 질문에 덧붙이자면, 저녁을 먹은(과거의 사실) 이후에 지금까지 (계속) 배가 아픈상태(완료형)이므로 mommy has been sick(has had a stomachache) because I had(ate) too much for dinner.라고 하는게 맞습니다. 몇가지 더..a few/few는 셀 수 있는 명사와 함께 쓰이는 수량형용사 이지만, few는 '거의 없는' 이라는 부정의 의미 이므로, few times는 맞지 않습니다. mommy has eaten 'something' for a long time. 이라고 해야 겠지요.
단순현재에 be를 안쓴다는 건가요, 아님, am,are,is를 안쓴다는 건가요? 그리고, 완료형에서 mommy has had dinner too much.라는 문장이 because라는 접속사 뒤에서 연결된게 문맥에 맞는건가요? 게다가 long time ago에서 'ago"라는 과거형 표현이 어떻게 완료형 문장에 쓰이고 있는지요??