An Attribute grammar is a formal way to define
attributes for the productions of a
formal grammar, associating these attributes to values. The evaluation occurs in the nodes of the
abstract syntax tree, when the language is processed by some
parser or
compiler.The attributes are divided into two groups: synthesized attributes and inherited attributes. The synthesized attributes are the result of the attribute evaluation rules, and may also use the values of the inherited attributes. The inherited attributes are passed down from parent nodes.In some approaches, synthesized attributes are used to pass semantic information up the parse tree, while inherited attributes help pass semantic information down it. For instance, when constructing a language translation tool, such as a compiler, it may be used to assign semantic values to syntax constructions. Also, it is possible to validate semantic checks associated with a grammar, representing the rules of a language not explicitly imparted by the syntax.
See more at Wikipedia.org...