An attributive noun, also called a noun adjunct, refers to a noun placed before another noun to modify it, like "dog" in "dog catcher" and "dog food", "heart" in "heart surgery", "running" in "running shoes", "employee" in "employee compensation", and "Peter" in "Peter Principle". It is an alternative to a prepositional phrase, like "food for dogs" or "surgery of the heart". You can use a predicate test to distinguish a noun adjunct from an adjective.
The attributive noun construction is common in English. The singular form of the noun is usually used, even when it doesn't refer to any particular single referent (for example, a "house sitter" looks after houses in general, not just a single house). However, plural attributive nouns are also used in certain phrases, such as "human rights violations".
Attributive nouns occur in the same position as attributive adjectives. However, some tests can be used to distinguish a true adjective from an attributive noun.
If you have a noun phrase like "X [noun]", one easy test that can help determine whether "X" is an attributive noun or an attributive adjective is to see if you can replace it with the phrase "[noun] that is X".
If you can do this, "X" is probably an adjective (although it might be a mass noun).
Consider the noun phrase "good food". We can rephrase this as "food that is good". The fact that this wording is meaningful indicates that "good" is an adjective, not a noun.
Consider the noun phrase "dog food". We cannot rephrase this as "food that is dog", because "dog" is not an adjective.
If you can use a comparative or superlative form of an attributive word, it must be an adjective, not a noun.
Not only can we say "good food", we can also say "better food" and "the best food." "Good" must be an adjective because it has the comparative forms "better" and "best".
Not only can we say "delicious food", we can also say "the most delicious food." "Delicious" must be an adjective because it has the superlative form "the most delicious."
Although we can say "dog food", we can't say *"doggest food" or *"most dog food", because "dog" is not an adjective.