- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
What is syntax-directed translation schemes in compiler design?
It is a kind of notation in which each production of Context-Free Grammar is related with a set of semantic rules or actions, and each grammar symbol is related to a set of Attributes. Thus, the grammar and the group of semantic Actions combine to make syntax-directed definitions.
The translation may be the generation of intermediate code, object code, or adding the information in symbol table about constructs type. The modern compiler uses the syntax-directed translation that makes the user’s life easy by hiding many implementation details and free the user from having to specify explicitly the order in which semantic rules are to be evaluated.
Semantic Actions− It is an action that is executed whenever the Parser will recognize the input string generated by context-free grammar.
For Example, A → BC {Semantic Action}
Semantic Action is written in curly braces Attached with a production.
In Top-Down Parser, semantic action will be taken when A will be expanded to derive BC which will further derive string w.
In Bottom-Up Parser, Semantic Action is generated when BC is reduced to A.
Syntax Directed Translation Scheme for Postfix Code
In postfix notation, the operator appears after the operands, i.e., the operator between operands is taken out & is attached after operands.
For example,
Consider Grammar
E → E(1) + E(2)
E → E(1) ∗ E(2)
E → (E(1))
E → id
The following table shows the Postfix Translation for the grammar.
Production | Semantic Action |
---|---|
E → E(1) + E(2) | E. CODE = E(1). CODE| |E(2). CODE | |'+' |
E → E(1) ∗ E(2) | E. CODE = E(1). CODE| |E(2). CODE | |'∗' |
E → (E(1)) | E. CODE = E(1). CODE |
E → id | E. CODE = id |
Translation for Postfix Notation
Here, E. CODE represents an attribute or translation of grammar symbol E. It means the sequence of three-address statements evaluating E. The translation of the nonterminal on the left of each production is the concatenation (| |) of the translation of the non-terminals on the right followed by the operator.
In the first productionE → E(1) + E(2), the value of translation E. CODE is the concatenation of two translation E(1). CODE & E(2). CODE and symbol '+'.
In the second productionE → E(1) ∗ E(2), the value of translation E. CODE is the concatenation of two translation E(1). CODE & E(2). CODE and symbol '∗'.
Here, concatenation is represented by the symbol (| |).
In the third productionE → (E(1)), the translation of parenthesized expression is the same as that for unparenthesized expression.
In the fourth productionE → id, the translation of any identifier is the identifier itself.
Following are various attributes or translations for grammar symbol 𝐄.
- 𝐄. 𝐕𝐀𝐋 → It tells the value of E.
- 𝐄. 𝐏𝐋𝐀𝐂𝐄 →It describes the name that will hold the value of the expression.
- 𝐄. 𝐂𝐎𝐃𝐄 →The sequence of three address statements computing the expression.
- 𝐄. 𝐌𝐎𝐃𝐄 →It describes the data type of E.
- Related Articles
- What is Types of Syntax Directed Translation Schemes?
- What is the Syntax Directed Translation?\n
- What is translation of control statements in compiler design?
- What is Compiler Design?
- What is Implementation of Syntax Directed Translators?
- What is Design of Lexical Analysis in Compiler Design?
- What is Chomsky Hierarchy in compiler design?
- What is error handling in compiler design?
- What is Input Buffering in Compiler Design?
- What is Finite Automata in Compiler Design?
- What is Language Processing Systems in Compiler Design?
- What is minimizing of DFA in compiler design?
- What is techniques of storage allocation in compiler design?
- What is binding and binding time in compiler design?
- What is the Representation of DFA in compiler design?
