- Order:
- Duration: 3:54
- Published: 2010-10-19
- Uploaded: 2010-12-13
- Author: kmzchicago
- http://wn.com/It_Gets_Better__Mad_World_cover_for_Billy,_Seth,_Asher,_Tyler__Kat_Zwick_in_Chicago,_IL
- Email this video
- Sms this video
these configurations will be saved for each time you visit this page using this browser
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 and across 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 definition.
Attribute grammars can also be used to translate the syntax tree directly into code for some specific machine, or into some intermediate language.
One strength of attribute grammars is that they can transport information from anywhere in the abstract syntax tree to anywhere else, in a controlled and formal way.
Expr → Expr + Term
Expr → Term
Term → Term * Factor
Term → Factor
Factor → "(" Expr ")"
Factor → integer
The following attribute grammar can be used to calculate the result of an expression written in the grammar. Note that this grammar only uses synthesized values, and is therefore an S-attributed grammar.
Expr1 → Expr2 + Term [ Expr1.value = Expr22.value + Term.value ]
Expr → Term [ Expr.value = Term.value ]
Term1 → Term2 * Factor [ Term1.value = Term2.value * Factor.value ]
Term → Factor [ Term.value = Factor.value ]
Factor → "(" Expr ")" [ Factor.value = Expr.value ]
Factor → integer [ Factor.value = strToInt(integer.str) ]
is a synthesized attribute iif,
Category:Formal languages Category:Programming paradigms Category:computer programming Category:Compiler theory Category:Parsing
This text is licensed under the Creative Commons CC-BY-SA License. This text was originally published on Wikipedia and was developed by the Wikipedia community.