Attribute Grammars were invented by Don Knuth as a way to unify all of the stages of compiling into one. An attribute grammar links syntax with semantics and have values that hold semantic information about the (non)terminal.
<em>They can perform several functions in specifying the syntax and semantics of a programming language, they can specify the context-sensitive aspects of the syntax of a language and operational semantics of a programming language.</em>
I hope you find this information useful and interesting! Good luck!