SlideShare a Scribd company logo
Chapter 5
Syntax Directed Translation
Outline
Syntax Directed Definitions
Evaluation Orders of SDD’s
Applications of Syntax Directed Translation
Syntax Directed Translation Schemes
Introduction
We can associate information with a language
construct by attaching attributes to the grammar
symbols.
A syntax directed definition specifies the values of
attributes by associating semantic rules with the
grammar productions.
Production Semantic Rule
E->E1+T E.code=E1.code||T.code||’+’
• We may alternatively insert the semantic actions inside the grammar
E -> E1+T {print ‘+’}
Syntax Directed Definitions
A SDD is a context free grammar with attributes and
rules
Attributes are associated with grammar symbols and
rules with productions
Attributes may be of many kinds: numbers, types,
table references, strings, etc.
Synthesized attributes
A synthesized attribute at node N is defined only in
terms of attribute values of children of N and at N it
Inherited attributes
An inherited attribute at node N is defined only in
terms of attribute values at N’s parent, N itself and N’s
siblings
Example of S-attributed SDD
1) L -> E n
2) E -> E1 + T
3) E -> T
4) T -> T1 * F
5) T -> F
6) F -> (E)
7) F -> digit
Production Semantic Rules
L.val = E.val
E.val = E1.val + T.val
E.val = T.val
T.val = T1.val * F.val
T.val = F.val
F.val = E.val
F.val = digit.lexval
Example of mixed attributes
1) T -> FT’
2) T’ -> *FT’1
3) T’ -> ε
1) F -> digit
Production Semantic Rules
T’.inh = F.val
T.val = T’.syn
T’1.inh = T’.inh*F.val
T’.syn = T’1.syn
T’.syn = T’.inh
F.val = F.val = digit.lexval
Evaluation orders for SDD’s
A dependency graph is used to determine the order of
computation of attributes
Dependency graph
For each parse tree node, the parse tree has a node for
each attribute associated with that node
If a semantic rule defines the value of synthesized
attribute A.b in terms of the value of X.c then the
dependency graph has an edge from X.c to A.b
If a semantic rule defines the value of inherited
attribute B.c in terms of the value of X.a then the
dependency graph has an edge from X.c to B.c
Example!
Ordering the evaluation of
attributes
If dependency graph has an edge from M to N then M
must be evaluated before the attribute of N
Thus the only allowable orders of evaluation are
those sequence of nodes N1,N2,…,Nk such that if
there is an edge from Ni to Nj then i<j
Such an ordering is called a topological sortof a
graph
Example!
S-Attributed definitions
An SDD is S-attributed if every attribute is
synthesized
We can have a post-order traversal of parse-tree to
evaluate attributes in S-attributed definitions
postorder(N) {
for (each child C of N, from the left) postorder(C);
evaluate the attributes associated with node N;
}
S-Attributed definitions can be implemented during
bottom-up parsing without the need to explicitly create
parse trees
L-Attributed definitions
A SDD is L-Attributed if the edges in dependency graph
goes from Left to Right but not from Right to Left.
More precisely, each attribute must be either
Synthesized
Inherited, but if there us a production A->X1X2…Xn and
there is an inherited attribute Xi.a computed by a rule
associated with this production, then the rule may only use:
 Inherited attributes associated with the head A
 Either inherited or synthesized attributes associated with the
occurrences of symbols X1,X2,…,Xi-1 located to the left of Xi
 Inherited or synthesized attributes associated with this occurrence
of Xi itself, but in such a way that there is no cycle in the graph
Application of Syntax Directed
Translation
Type checking and intermediate code generation
(chapter 6)
Construction of syntax trees
Leaf nodes: Leaf(op,val)
Interior node: Node(op,c1,c2,…,ck)
Example:
1) E -> E1 + T
2) E -> E1 - T
3) E -> T
4) T -> (E)
5) T -> id
6) T -> num
Production Semantic Rules
E.node=new node(‘+’, E1.node,T.node)
E.node=new node(‘-’, E1.node,T.node)
E.node = T.node
T.node = E.node
T.node = new Leaf(id,id.entry)
T.node = new Leaf(num,num.val)
Syntax tree for L-attributed
definition
+
1) E -> TE’
2) E’ -> + TE1’
3) E’ -> -TE1’
4) E’ -> ∈
5) T -> (E)
6) T -> id
7) T -> num
Production Semantic Rules
E.node=E’.syn
E’.inh=T.node
E1’.inh=new node(‘+’, E’.inh,T.node)
E’.syn=E1’.syn
E1’.inh=new node(‘+’, E’.inh,T.node)
E’.syn=E1’.syn
E’.syn = E’.inh
T.node = E.node
T.node=new Leaf(id,id.entry)
T.node = new Leaf(num,num.val)
Syntax directed translation
schemes
An SDT is a Context Free grammar with program
fragments embedded within production bodies
Those program fragments are called semantic actions
They can appear at any position within production body
Any SDT can be implemented by first building a parse tree
and then performing the actions in a left-to-right depth
first order
Typically SDT’s are implemented during parsing without
building a parse tree
Postfix translation schemes
Simplest SDDs are those that we can parse the grammar
bottom-up and the SDD is s-attributed
For such cases we can construct SDT where each action is
placed at the end of the production and is executed along
with the reduction of the body to the head of that
production
SDT’s with all actions at the right ends of the production
bodies are called postfix SDT’s
Example of postfix SDT
1) L -> E n {print(E.val);}
2) E -> E1 + T {E.val=E1.val+T.val;}
3) E -> T {E.val = T.val;}
4) T -> T1 * F {T.val=T1.val*F.val;}
5) T -> F {T.val=F.val;}
6) F -> (E) {F.val=E.val;}
7) F -> digit {F.val=digit.lexval;}
Parse-Stack implementation of
postfix SDT’s
In a shift-reduce parser we can easily implement
semantic action using the parser stack
For each nonterminal (or state) on the stack we can
associate a record holding its attributes
Then in a reduction step we can execute the semantic
action at the end of a production to evaluate the
attribute(s) of the non-terminal at the leftside of the
production
And put the value on the stack in replace of the
rightside of production
Example
L -> E n {print(stack[top-1].val);
top=top-1;}
E -> E1 + T {stack[top-2].val=stack[top-2].val+stack.val;
top=top-2;}
E -> T
T -> T1 * F {stack[top-2].val=stack[top-2].val+stack.val;
top=top-2;}
T -> F
F -> (E) {stack[top-2].val=stack[top-1].val
top=top-2;}
F -> digit
SDT’s with actions inside
productions
For a production B->X {a} Y
If the parse is bottom-up then
we perform action “a” as soon as
this occurrence of X appears on
the top of the parser stack
If the parser is top down we
perform “a” just before we
expand Y
Sometimes we cant do things as
easily as explained above
One example is when we are
parsing this SDT with a bottom-
1) L -> E n
2) E -> {print(‘+’);} E1 + T
3) E -> T
4) T -> {print(‘*’);} T1 * F
5) T -> F
6) F -> (E)
7) F -> digit {print(digit.lexval);}
SDT’s with actions inside
productions (cont)
 Any SDT can be
implemented as follows
1. Ignore the actions and
produce a parse tree
2. Examine each interior
node N and add actions
as new children at the
correct position
3. Perform a postorder
traversal and execute
actions when their nodes
are visited
L
E
+E
{print(‘+’);}
T
F
digit
{print(4);}
T
T F*
digit
{print(5);}
F
digit
{print(3);}
{print(‘*’);}
SDT’s for L-Attributed definitions
We can convert an L-attributed SDD into an SDT
using following two rules:
Embed the action that computes the inherited
attributes for a nonterminal A immediately before that
occurrence of A. if several inherited attributes of A are
dpendent on one another in an acyclic fashion, order
them so that those needed first are computed first
Place the action of a synthesized attribute for the head
of a production at the end of the body of the production
Example
S -> while (C) S1 L1=new();
L2=new();
S1.next=L1;
C.false=S.next;
C.true=L2;
S.code=label||L1||C.code||label||L2||S1.code
S -> while ( {L1=new();L2=new();C.false=S.next;C.true=L2;}
C) {S1.next=L1;}
S1{S.code=label||L1||C.code||label||L2||S1.code;}
Readings
Chapter 5 of the book
Ad

More Related Content

What's hot (20)

LR(1) and SLR(1) parsing
LR(1) and SLR(1) parsingLR(1) and SLR(1) parsing
LR(1) and SLR(1) parsing
R Islam
 
Ll(1) Parser in Compilers
Ll(1) Parser in CompilersLl(1) Parser in Compilers
Ll(1) Parser in Compilers
Mahbubur Rahman
 
Type checking in compiler design
Type checking in compiler designType checking in compiler design
Type checking in compiler design
Sudip Singh
 
Syntax Analysis in Compiler Design
Syntax Analysis in Compiler Design Syntax Analysis in Compiler Design
Syntax Analysis in Compiler Design
MAHASREEM
 
Code optimization in compiler design
Code optimization in compiler designCode optimization in compiler design
Code optimization in compiler design
Kuppusamy P
 
CLR AND LALR PARSER
CLR AND LALR PARSERCLR AND LALR PARSER
CLR AND LALR PARSER
Akila Krishnamoorthy
 
Code Optimization
Code OptimizationCode Optimization
Code Optimization
Akhil Kaushik
 
1.Role lexical Analyzer
1.Role lexical Analyzer1.Role lexical Analyzer
1.Role lexical Analyzer
Radhakrishnan Chinnusamy
 
Lexical analyzer generator lex
Lexical analyzer generator lexLexical analyzer generator lex
Lexical analyzer generator lex
Anusuya123
 
Code generation
Code generationCode generation
Code generation
Aparna Nayak
 
Chapter 6 intermediate code generation
Chapter 6   intermediate code generationChapter 6   intermediate code generation
Chapter 6 intermediate code generation
Vipul Naik
 
Intermediate code generation (Compiler Design)
Intermediate code generation (Compiler Design)   Intermediate code generation (Compiler Design)
Intermediate code generation (Compiler Design)
Tasif Tanzim
 
Uninformed search /Blind search in AI
Uninformed search /Blind search in AIUninformed search /Blind search in AI
Uninformed search /Blind search in AI
Kirti Verma
 
Recognition-of-tokens
Recognition-of-tokensRecognition-of-tokens
Recognition-of-tokens
Dattatray Gandhmal
 
Type Checking(Compiler Design) #ShareThisIfYouLike
Type Checking(Compiler Design) #ShareThisIfYouLikeType Checking(Compiler Design) #ShareThisIfYouLike
Type Checking(Compiler Design) #ShareThisIfYouLike
United International University
 
Syntax analysis
Syntax analysisSyntax analysis
Syntax analysis
Akshaya Arunan
 
Type checking
Type checkingType checking
Type checking
rawan_z
 
Syntax-Directed Translation into Three Address Code
Syntax-Directed Translation into Three Address CodeSyntax-Directed Translation into Three Address Code
Syntax-Directed Translation into Three Address Code
sanchi29
 
Conceptual dependency
Conceptual dependencyConceptual dependency
Conceptual dependency
Jismy .K.Jose
 
Intermediate code generation in Compiler Design
Intermediate code generation in Compiler DesignIntermediate code generation in Compiler Design
Intermediate code generation in Compiler Design
Kuppusamy P
 
LR(1) and SLR(1) parsing
LR(1) and SLR(1) parsingLR(1) and SLR(1) parsing
LR(1) and SLR(1) parsing
R Islam
 
Ll(1) Parser in Compilers
Ll(1) Parser in CompilersLl(1) Parser in Compilers
Ll(1) Parser in Compilers
Mahbubur Rahman
 
Type checking in compiler design
Type checking in compiler designType checking in compiler design
Type checking in compiler design
Sudip Singh
 
Syntax Analysis in Compiler Design
Syntax Analysis in Compiler Design Syntax Analysis in Compiler Design
Syntax Analysis in Compiler Design
MAHASREEM
 
Code optimization in compiler design
Code optimization in compiler designCode optimization in compiler design
Code optimization in compiler design
Kuppusamy P
 
Lexical analyzer generator lex
Lexical analyzer generator lexLexical analyzer generator lex
Lexical analyzer generator lex
Anusuya123
 
Chapter 6 intermediate code generation
Chapter 6   intermediate code generationChapter 6   intermediate code generation
Chapter 6 intermediate code generation
Vipul Naik
 
Intermediate code generation (Compiler Design)
Intermediate code generation (Compiler Design)   Intermediate code generation (Compiler Design)
Intermediate code generation (Compiler Design)
Tasif Tanzim
 
Uninformed search /Blind search in AI
Uninformed search /Blind search in AIUninformed search /Blind search in AI
Uninformed search /Blind search in AI
Kirti Verma
 
Type checking
Type checkingType checking
Type checking
rawan_z
 
Syntax-Directed Translation into Three Address Code
Syntax-Directed Translation into Three Address CodeSyntax-Directed Translation into Three Address Code
Syntax-Directed Translation into Three Address Code
sanchi29
 
Conceptual dependency
Conceptual dependencyConceptual dependency
Conceptual dependency
Jismy .K.Jose
 
Intermediate code generation in Compiler Design
Intermediate code generation in Compiler DesignIntermediate code generation in Compiler Design
Intermediate code generation in Compiler Design
Kuppusamy P
 

Similar to Chapter 5 Syntax Directed Translation (20)

Chapte - Syntax Directed Translation.ppt
Chapte - Syntax Directed Translation.pptChapte - Syntax Directed Translation.ppt
Chapte - Syntax Directed Translation.ppt
PraveenaFppt
 
Chapter 5 - Syntax Directed Translation.ppt
Chapter 5 - Syntax Directed Translation.pptChapter 5 - Syntax Directed Translation.ppt
Chapter 5 - Syntax Directed Translation.ppt
MulugetaGebino
 
Chapter_5_Syntax_Directed_Translation.ppt
Chapter_5_Syntax_Directed_Translation.pptChapter_5_Syntax_Directed_Translation.ppt
Chapter_5_Syntax_Directed_Translation.ppt
JigarThummar1
 
Chapter_5_Syntax_Directed_Translation.ppt
Chapter_5_Syntax_Directed_Translation.pptChapter_5_Syntax_Directed_Translation.ppt
Chapter_5_Syntax_Directed_Translation.ppt
SatyamVerma61
 
Compiler design selective dissemination of information syntax direct translat...
Compiler design selective dissemination of information syntax direct translat...Compiler design selective dissemination of information syntax direct translat...
Compiler design selective dissemination of information syntax direct translat...
ganeshjaggineni1927
 
Chapter 5 -Syntax Directed Translation - Copy.ppt
Chapter 5 -Syntax Directed Translation - Copy.pptChapter 5 -Syntax Directed Translation - Copy.ppt
Chapter 5 -Syntax Directed Translation - Copy.ppt
FamiDan
 
Chapter -4.pptx
Chapter -4.pptxChapter -4.pptx
Chapter -4.pptx
woldu2
 
Compiler Design UNIT III PPT (SDD, SDT).pdf
Compiler Design UNIT III PPT (SDD, SDT).pdfCompiler Design UNIT III PPT (SDD, SDT).pdf
Compiler Design UNIT III PPT (SDD, SDT).pdf
Shiva350357
 
Module 3 - Semantic Analysis(Compiler Design).pptx
Module 3 - Semantic Analysis(Compiler Design).pptxModule 3 - Semantic Analysis(Compiler Design).pptx
Module 3 - Semantic Analysis(Compiler Design).pptx
muralidharanm2022
 
Syntaxdirected
SyntaxdirectedSyntaxdirected
Syntaxdirected
Royalzig Luxury Furniture
 
Syntaxdirected
SyntaxdirectedSyntaxdirected
Syntaxdirected
Royalzig Luxury Furniture
 
Syntaxdirected (1)
Syntaxdirected (1)Syntaxdirected (1)
Syntaxdirected (1)
Royalzig Luxury Furniture
 
Syntax Directed Translation PPTs for Third Year CSE
Syntax Directed Translation PPTs for Third Year CSESyntax Directed Translation PPTs for Third Year CSE
Syntax Directed Translation PPTs for Third Year CSE
DrRajurkarArchanaMil
 
Q
QQ
Q
guest9b2176
 
presentation on important DAG,TRIE,Hashing.pptx
presentation on important DAG,TRIE,Hashing.pptxpresentation on important DAG,TRIE,Hashing.pptx
presentation on important DAG,TRIE,Hashing.pptx
jainaaru59
 
Fundamentals of data structures
Fundamentals of data structuresFundamentals of data structures
Fundamentals of data structures
Niraj Agarwal
 
complier design unit 4 for helping students
complier design unit 4 for helping studentscomplier design unit 4 for helping students
complier design unit 4 for helping students
aniketsugandhi1
 
12IRGeneration.pdf
12IRGeneration.pdf12IRGeneration.pdf
12IRGeneration.pdf
SHUJEHASSAN
 
Lecture10 syntax analysis_6
Lecture10 syntax analysis_6Lecture10 syntax analysis_6
Lecture10 syntax analysis_6
Mahesh Kumar Chelimilla
 
Ch5a
Ch5aCh5a
Ch5a
kinnarshah8888
 
Chapte - Syntax Directed Translation.ppt
Chapte - Syntax Directed Translation.pptChapte - Syntax Directed Translation.ppt
Chapte - Syntax Directed Translation.ppt
PraveenaFppt
 
Chapter 5 - Syntax Directed Translation.ppt
Chapter 5 - Syntax Directed Translation.pptChapter 5 - Syntax Directed Translation.ppt
Chapter 5 - Syntax Directed Translation.ppt
MulugetaGebino
 
Chapter_5_Syntax_Directed_Translation.ppt
Chapter_5_Syntax_Directed_Translation.pptChapter_5_Syntax_Directed_Translation.ppt
Chapter_5_Syntax_Directed_Translation.ppt
JigarThummar1
 
Chapter_5_Syntax_Directed_Translation.ppt
Chapter_5_Syntax_Directed_Translation.pptChapter_5_Syntax_Directed_Translation.ppt
Chapter_5_Syntax_Directed_Translation.ppt
SatyamVerma61
 
Compiler design selective dissemination of information syntax direct translat...
Compiler design selective dissemination of information syntax direct translat...Compiler design selective dissemination of information syntax direct translat...
Compiler design selective dissemination of information syntax direct translat...
ganeshjaggineni1927
 
Chapter 5 -Syntax Directed Translation - Copy.ppt
Chapter 5 -Syntax Directed Translation - Copy.pptChapter 5 -Syntax Directed Translation - Copy.ppt
Chapter 5 -Syntax Directed Translation - Copy.ppt
FamiDan
 
Chapter -4.pptx
Chapter -4.pptxChapter -4.pptx
Chapter -4.pptx
woldu2
 
Compiler Design UNIT III PPT (SDD, SDT).pdf
Compiler Design UNIT III PPT (SDD, SDT).pdfCompiler Design UNIT III PPT (SDD, SDT).pdf
Compiler Design UNIT III PPT (SDD, SDT).pdf
Shiva350357
 
Module 3 - Semantic Analysis(Compiler Design).pptx
Module 3 - Semantic Analysis(Compiler Design).pptxModule 3 - Semantic Analysis(Compiler Design).pptx
Module 3 - Semantic Analysis(Compiler Design).pptx
muralidharanm2022
 
Syntax Directed Translation PPTs for Third Year CSE
Syntax Directed Translation PPTs for Third Year CSESyntax Directed Translation PPTs for Third Year CSE
Syntax Directed Translation PPTs for Third Year CSE
DrRajurkarArchanaMil
 
presentation on important DAG,TRIE,Hashing.pptx
presentation on important DAG,TRIE,Hashing.pptxpresentation on important DAG,TRIE,Hashing.pptx
presentation on important DAG,TRIE,Hashing.pptx
jainaaru59
 
Fundamentals of data structures
Fundamentals of data structuresFundamentals of data structures
Fundamentals of data structures
Niraj Agarwal
 
complier design unit 4 for helping students
complier design unit 4 for helping studentscomplier design unit 4 for helping students
complier design unit 4 for helping students
aniketsugandhi1
 
12IRGeneration.pdf
12IRGeneration.pdf12IRGeneration.pdf
12IRGeneration.pdf
SHUJEHASSAN
 
Ad

More from Radhakrishnan Chinnusamy (10)

Unit 5_Controlling.pptx
Unit 5_Controlling.pptxUnit 5_Controlling.pptx
Unit 5_Controlling.pptx
Radhakrishnan Chinnusamy
 
Unit 3_organising.pptx
Unit 3_organising.pptxUnit 3_organising.pptx
Unit 3_organising.pptx
Radhakrishnan Chinnusamy
 
Unit 2_Planning.ppt
Unit 2_Planning.pptUnit 2_Planning.ppt
Unit 2_Planning.ppt
Radhakrishnan Chinnusamy
 
Unit 1_introduction.pptx
Unit 1_introduction.pptxUnit 1_introduction.pptx
Unit 1_introduction.pptx
Radhakrishnan Chinnusamy
 
Chapter 7 Run Time Environment
Chapter 7   Run Time EnvironmentChapter 7   Run Time Environment
Chapter 7 Run Time Environment
Radhakrishnan Chinnusamy
 
Chapter 6 Intermediate Code Generation
Chapter 6   Intermediate Code GenerationChapter 6   Intermediate Code Generation
Chapter 6 Intermediate Code Generation
Radhakrishnan Chinnusamy
 
Introduction to Compiler
Introduction to CompilerIntroduction to Compiler
Introduction to Compiler
Radhakrishnan Chinnusamy
 
Multi Head, Multi Tape Turing Machine
Multi Head, Multi Tape Turing MachineMulti Head, Multi Tape Turing Machine
Multi Head, Multi Tape Turing Machine
Radhakrishnan Chinnusamy
 
Primitive Recursive Functions
Primitive Recursive FunctionsPrimitive Recursive Functions
Primitive Recursive Functions
Radhakrishnan Chinnusamy
 
Context free grammar
Context free grammarContext free grammar
Context free grammar
Radhakrishnan Chinnusamy
 
Ad

Recently uploaded (20)

railway wheels, descaling after reheating and before forging
railway wheels, descaling after reheating and before forgingrailway wheels, descaling after reheating and before forging
railway wheels, descaling after reheating and before forging
Javad Kadkhodapour
 
vlsi digital circuits full power point presentation
vlsi digital circuits full power point presentationvlsi digital circuits full power point presentation
vlsi digital circuits full power point presentation
DrSunitaPatilUgaleKK
 
Mathematical foundation machine learning.pdf
Mathematical foundation machine learning.pdfMathematical foundation machine learning.pdf
Mathematical foundation machine learning.pdf
TalhaShahid49
 
Gas Power Plant for Power Generation System
Gas Power Plant for Power Generation SystemGas Power Plant for Power Generation System
Gas Power Plant for Power Generation System
JourneyWithMe1
 
Lecture 13 (Air and Noise Pollution and their Control) (1).pptx
Lecture 13 (Air and Noise Pollution and their Control) (1).pptxLecture 13 (Air and Noise Pollution and their Control) (1).pptx
Lecture 13 (Air and Noise Pollution and their Control) (1).pptx
huzaifabilalshams
 
Dust Suppressants: A Sustainable Approach to Dust Pollution Control
Dust Suppressants: A Sustainable Approach to Dust Pollution ControlDust Suppressants: A Sustainable Approach to Dust Pollution Control
Dust Suppressants: A Sustainable Approach to Dust Pollution Control
Janapriya Roy
 
Artificial Intelligence (AI) basics.pptx
Artificial Intelligence (AI) basics.pptxArtificial Intelligence (AI) basics.pptx
Artificial Intelligence (AI) basics.pptx
aditichinar
 
Avnet Silica's PCIM 2025 Highlights Flyer
Avnet Silica's PCIM 2025 Highlights FlyerAvnet Silica's PCIM 2025 Highlights Flyer
Avnet Silica's PCIM 2025 Highlights Flyer
WillDavies22
 
Degree_of_Automation.pdf for Instrumentation and industrial specialist
Degree_of_Automation.pdf for  Instrumentation  and industrial specialistDegree_of_Automation.pdf for  Instrumentation  and industrial specialist
Degree_of_Automation.pdf for Instrumentation and industrial specialist
shreyabhosale19
 
DATA-DRIVEN SHOULDER INVERSE KINEMATICS YoungBeom Kim1 , Byung-Ha Park1 , Kwa...
DATA-DRIVEN SHOULDER INVERSE KINEMATICS YoungBeom Kim1 , Byung-Ha Park1 , Kwa...DATA-DRIVEN SHOULDER INVERSE KINEMATICS YoungBeom Kim1 , Byung-Ha Park1 , Kwa...
DATA-DRIVEN SHOULDER INVERSE KINEMATICS YoungBeom Kim1 , Byung-Ha Park1 , Kwa...
charlesdick1345
 
five-year-soluhhhhhhhhhhhhhhhhhtions.pdf
five-year-soluhhhhhhhhhhhhhhhhhtions.pdffive-year-soluhhhhhhhhhhhhhhhhhtions.pdf
five-year-soluhhhhhhhhhhhhhhhhhtions.pdf
AdityaSharma944496
 
Engineering Chemistry First Year Fullerenes
Engineering Chemistry First Year FullerenesEngineering Chemistry First Year Fullerenes
Engineering Chemistry First Year Fullerenes
5g2jpd9sp4
 
Explainable-Artificial-Intelligence-in-Disaster-Risk-Management (2).pptx_2024...
Explainable-Artificial-Intelligence-in-Disaster-Risk-Management (2).pptx_2024...Explainable-Artificial-Intelligence-in-Disaster-Risk-Management (2).pptx_2024...
Explainable-Artificial-Intelligence-in-Disaster-Risk-Management (2).pptx_2024...
LiyaShaji4
 
Machine learning project on employee attrition detection using (2).pptx
Machine learning project on employee attrition detection using (2).pptxMachine learning project on employee attrition detection using (2).pptx
Machine learning project on employee attrition detection using (2).pptx
rajeswari89780
 
aset and manufacturing optimization and connecting edge
aset and manufacturing optimization and connecting edgeaset and manufacturing optimization and connecting edge
aset and manufacturing optimization and connecting edge
alilamisse
 
"Heaters in Power Plants: Types, Functions, and Performance Analysis"
"Heaters in Power Plants: Types, Functions, and Performance Analysis""Heaters in Power Plants: Types, Functions, and Performance Analysis"
"Heaters in Power Plants: Types, Functions, and Performance Analysis"
Infopitaara
 
Taking AI Welfare Seriously, In this report, we argue that there is a realist...
Taking AI Welfare Seriously, In this report, we argue that there is a realist...Taking AI Welfare Seriously, In this report, we argue that there is a realist...
Taking AI Welfare Seriously, In this report, we argue that there is a realist...
MiguelMarques372250
 
Raish Khanji GTU 8th sem Internship Report.pdf
Raish Khanji GTU 8th sem Internship Report.pdfRaish Khanji GTU 8th sem Internship Report.pdf
Raish Khanji GTU 8th sem Internship Report.pdf
RaishKhanji
 
ELectronics Boards & Product Testing_Shiju.pdf
ELectronics Boards & Product Testing_Shiju.pdfELectronics Boards & Product Testing_Shiju.pdf
ELectronics Boards & Product Testing_Shiju.pdf
Shiju Jacob
 
211421893-M-Tech-CIVIL-Structural-Engineering-pdf.pdf
211421893-M-Tech-CIVIL-Structural-Engineering-pdf.pdf211421893-M-Tech-CIVIL-Structural-Engineering-pdf.pdf
211421893-M-Tech-CIVIL-Structural-Engineering-pdf.pdf
inmishra17121973
 
railway wheels, descaling after reheating and before forging
railway wheels, descaling after reheating and before forgingrailway wheels, descaling after reheating and before forging
railway wheels, descaling after reheating and before forging
Javad Kadkhodapour
 
vlsi digital circuits full power point presentation
vlsi digital circuits full power point presentationvlsi digital circuits full power point presentation
vlsi digital circuits full power point presentation
DrSunitaPatilUgaleKK
 
Mathematical foundation machine learning.pdf
Mathematical foundation machine learning.pdfMathematical foundation machine learning.pdf
Mathematical foundation machine learning.pdf
TalhaShahid49
 
Gas Power Plant for Power Generation System
Gas Power Plant for Power Generation SystemGas Power Plant for Power Generation System
Gas Power Plant for Power Generation System
JourneyWithMe1
 
Lecture 13 (Air and Noise Pollution and their Control) (1).pptx
Lecture 13 (Air and Noise Pollution and their Control) (1).pptxLecture 13 (Air and Noise Pollution and their Control) (1).pptx
Lecture 13 (Air and Noise Pollution and their Control) (1).pptx
huzaifabilalshams
 
Dust Suppressants: A Sustainable Approach to Dust Pollution Control
Dust Suppressants: A Sustainable Approach to Dust Pollution ControlDust Suppressants: A Sustainable Approach to Dust Pollution Control
Dust Suppressants: A Sustainable Approach to Dust Pollution Control
Janapriya Roy
 
Artificial Intelligence (AI) basics.pptx
Artificial Intelligence (AI) basics.pptxArtificial Intelligence (AI) basics.pptx
Artificial Intelligence (AI) basics.pptx
aditichinar
 
Avnet Silica's PCIM 2025 Highlights Flyer
Avnet Silica's PCIM 2025 Highlights FlyerAvnet Silica's PCIM 2025 Highlights Flyer
Avnet Silica's PCIM 2025 Highlights Flyer
WillDavies22
 
Degree_of_Automation.pdf for Instrumentation and industrial specialist
Degree_of_Automation.pdf for  Instrumentation  and industrial specialistDegree_of_Automation.pdf for  Instrumentation  and industrial specialist
Degree_of_Automation.pdf for Instrumentation and industrial specialist
shreyabhosale19
 
DATA-DRIVEN SHOULDER INVERSE KINEMATICS YoungBeom Kim1 , Byung-Ha Park1 , Kwa...
DATA-DRIVEN SHOULDER INVERSE KINEMATICS YoungBeom Kim1 , Byung-Ha Park1 , Kwa...DATA-DRIVEN SHOULDER INVERSE KINEMATICS YoungBeom Kim1 , Byung-Ha Park1 , Kwa...
DATA-DRIVEN SHOULDER INVERSE KINEMATICS YoungBeom Kim1 , Byung-Ha Park1 , Kwa...
charlesdick1345
 
five-year-soluhhhhhhhhhhhhhhhhhtions.pdf
five-year-soluhhhhhhhhhhhhhhhhhtions.pdffive-year-soluhhhhhhhhhhhhhhhhhtions.pdf
five-year-soluhhhhhhhhhhhhhhhhhtions.pdf
AdityaSharma944496
 
Engineering Chemistry First Year Fullerenes
Engineering Chemistry First Year FullerenesEngineering Chemistry First Year Fullerenes
Engineering Chemistry First Year Fullerenes
5g2jpd9sp4
 
Explainable-Artificial-Intelligence-in-Disaster-Risk-Management (2).pptx_2024...
Explainable-Artificial-Intelligence-in-Disaster-Risk-Management (2).pptx_2024...Explainable-Artificial-Intelligence-in-Disaster-Risk-Management (2).pptx_2024...
Explainable-Artificial-Intelligence-in-Disaster-Risk-Management (2).pptx_2024...
LiyaShaji4
 
Machine learning project on employee attrition detection using (2).pptx
Machine learning project on employee attrition detection using (2).pptxMachine learning project on employee attrition detection using (2).pptx
Machine learning project on employee attrition detection using (2).pptx
rajeswari89780
 
aset and manufacturing optimization and connecting edge
aset and manufacturing optimization and connecting edgeaset and manufacturing optimization and connecting edge
aset and manufacturing optimization and connecting edge
alilamisse
 
"Heaters in Power Plants: Types, Functions, and Performance Analysis"
"Heaters in Power Plants: Types, Functions, and Performance Analysis""Heaters in Power Plants: Types, Functions, and Performance Analysis"
"Heaters in Power Plants: Types, Functions, and Performance Analysis"
Infopitaara
 
Taking AI Welfare Seriously, In this report, we argue that there is a realist...
Taking AI Welfare Seriously, In this report, we argue that there is a realist...Taking AI Welfare Seriously, In this report, we argue that there is a realist...
Taking AI Welfare Seriously, In this report, we argue that there is a realist...
MiguelMarques372250
 
Raish Khanji GTU 8th sem Internship Report.pdf
Raish Khanji GTU 8th sem Internship Report.pdfRaish Khanji GTU 8th sem Internship Report.pdf
Raish Khanji GTU 8th sem Internship Report.pdf
RaishKhanji
 
ELectronics Boards & Product Testing_Shiju.pdf
ELectronics Boards & Product Testing_Shiju.pdfELectronics Boards & Product Testing_Shiju.pdf
ELectronics Boards & Product Testing_Shiju.pdf
Shiju Jacob
 
211421893-M-Tech-CIVIL-Structural-Engineering-pdf.pdf
211421893-M-Tech-CIVIL-Structural-Engineering-pdf.pdf211421893-M-Tech-CIVIL-Structural-Engineering-pdf.pdf
211421893-M-Tech-CIVIL-Structural-Engineering-pdf.pdf
inmishra17121973
 

Chapter 5 Syntax Directed Translation

  • 2. Outline Syntax Directed Definitions Evaluation Orders of SDD’s Applications of Syntax Directed Translation Syntax Directed Translation Schemes
  • 3. Introduction We can associate information with a language construct by attaching attributes to the grammar symbols. A syntax directed definition specifies the values of attributes by associating semantic rules with the grammar productions. Production Semantic Rule E->E1+T E.code=E1.code||T.code||’+’ • We may alternatively insert the semantic actions inside the grammar E -> E1+T {print ‘+’}
  • 4. Syntax Directed Definitions A SDD is a context free grammar with attributes and rules Attributes are associated with grammar symbols and rules with productions Attributes may be of many kinds: numbers, types, table references, strings, etc. Synthesized attributes A synthesized attribute at node N is defined only in terms of attribute values of children of N and at N it Inherited attributes An inherited attribute at node N is defined only in terms of attribute values at N’s parent, N itself and N’s siblings
  • 5. Example of S-attributed SDD 1) L -> E n 2) E -> E1 + T 3) E -> T 4) T -> T1 * F 5) T -> F 6) F -> (E) 7) F -> digit Production Semantic Rules L.val = E.val E.val = E1.val + T.val E.val = T.val T.val = T1.val * F.val T.val = F.val F.val = E.val F.val = digit.lexval
  • 6. Example of mixed attributes 1) T -> FT’ 2) T’ -> *FT’1 3) T’ -> ε 1) F -> digit Production Semantic Rules T’.inh = F.val T.val = T’.syn T’1.inh = T’.inh*F.val T’.syn = T’1.syn T’.syn = T’.inh F.val = F.val = digit.lexval
  • 7. Evaluation orders for SDD’s A dependency graph is used to determine the order of computation of attributes Dependency graph For each parse tree node, the parse tree has a node for each attribute associated with that node If a semantic rule defines the value of synthesized attribute A.b in terms of the value of X.c then the dependency graph has an edge from X.c to A.b If a semantic rule defines the value of inherited attribute B.c in terms of the value of X.a then the dependency graph has an edge from X.c to B.c Example!
  • 8. Ordering the evaluation of attributes If dependency graph has an edge from M to N then M must be evaluated before the attribute of N Thus the only allowable orders of evaluation are those sequence of nodes N1,N2,…,Nk such that if there is an edge from Ni to Nj then i<j Such an ordering is called a topological sortof a graph Example!
  • 9. S-Attributed definitions An SDD is S-attributed if every attribute is synthesized We can have a post-order traversal of parse-tree to evaluate attributes in S-attributed definitions postorder(N) { for (each child C of N, from the left) postorder(C); evaluate the attributes associated with node N; } S-Attributed definitions can be implemented during bottom-up parsing without the need to explicitly create parse trees
  • 10. L-Attributed definitions A SDD is L-Attributed if the edges in dependency graph goes from Left to Right but not from Right to Left. More precisely, each attribute must be either Synthesized Inherited, but if there us a production A->X1X2…Xn and there is an inherited attribute Xi.a computed by a rule associated with this production, then the rule may only use:  Inherited attributes associated with the head A  Either inherited or synthesized attributes associated with the occurrences of symbols X1,X2,…,Xi-1 located to the left of Xi  Inherited or synthesized attributes associated with this occurrence of Xi itself, but in such a way that there is no cycle in the graph
  • 11. Application of Syntax Directed Translation Type checking and intermediate code generation (chapter 6) Construction of syntax trees Leaf nodes: Leaf(op,val) Interior node: Node(op,c1,c2,…,ck) Example: 1) E -> E1 + T 2) E -> E1 - T 3) E -> T 4) T -> (E) 5) T -> id 6) T -> num Production Semantic Rules E.node=new node(‘+’, E1.node,T.node) E.node=new node(‘-’, E1.node,T.node) E.node = T.node T.node = E.node T.node = new Leaf(id,id.entry) T.node = new Leaf(num,num.val)
  • 12. Syntax tree for L-attributed definition + 1) E -> TE’ 2) E’ -> + TE1’ 3) E’ -> -TE1’ 4) E’ -> ∈ 5) T -> (E) 6) T -> id 7) T -> num Production Semantic Rules E.node=E’.syn E’.inh=T.node E1’.inh=new node(‘+’, E’.inh,T.node) E’.syn=E1’.syn E1’.inh=new node(‘+’, E’.inh,T.node) E’.syn=E1’.syn E’.syn = E’.inh T.node = E.node T.node=new Leaf(id,id.entry) T.node = new Leaf(num,num.val)
  • 13. Syntax directed translation schemes An SDT is a Context Free grammar with program fragments embedded within production bodies Those program fragments are called semantic actions They can appear at any position within production body Any SDT can be implemented by first building a parse tree and then performing the actions in a left-to-right depth first order Typically SDT’s are implemented during parsing without building a parse tree
  • 14. Postfix translation schemes Simplest SDDs are those that we can parse the grammar bottom-up and the SDD is s-attributed For such cases we can construct SDT where each action is placed at the end of the production and is executed along with the reduction of the body to the head of that production SDT’s with all actions at the right ends of the production bodies are called postfix SDT’s
  • 15. Example of postfix SDT 1) L -> E n {print(E.val);} 2) E -> E1 + T {E.val=E1.val+T.val;} 3) E -> T {E.val = T.val;} 4) T -> T1 * F {T.val=T1.val*F.val;} 5) T -> F {T.val=F.val;} 6) F -> (E) {F.val=E.val;} 7) F -> digit {F.val=digit.lexval;}
  • 16. Parse-Stack implementation of postfix SDT’s In a shift-reduce parser we can easily implement semantic action using the parser stack For each nonterminal (or state) on the stack we can associate a record holding its attributes Then in a reduction step we can execute the semantic action at the end of a production to evaluate the attribute(s) of the non-terminal at the leftside of the production And put the value on the stack in replace of the rightside of production
  • 17. Example L -> E n {print(stack[top-1].val); top=top-1;} E -> E1 + T {stack[top-2].val=stack[top-2].val+stack.val; top=top-2;} E -> T T -> T1 * F {stack[top-2].val=stack[top-2].val+stack.val; top=top-2;} T -> F F -> (E) {stack[top-2].val=stack[top-1].val top=top-2;} F -> digit
  • 18. SDT’s with actions inside productions For a production B->X {a} Y If the parse is bottom-up then we perform action “a” as soon as this occurrence of X appears on the top of the parser stack If the parser is top down we perform “a” just before we expand Y Sometimes we cant do things as easily as explained above One example is when we are parsing this SDT with a bottom- 1) L -> E n 2) E -> {print(‘+’);} E1 + T 3) E -> T 4) T -> {print(‘*’);} T1 * F 5) T -> F 6) F -> (E) 7) F -> digit {print(digit.lexval);}
  • 19. SDT’s with actions inside productions (cont)  Any SDT can be implemented as follows 1. Ignore the actions and produce a parse tree 2. Examine each interior node N and add actions as new children at the correct position 3. Perform a postorder traversal and execute actions when their nodes are visited L E +E {print(‘+’);} T F digit {print(4);} T T F* digit {print(5);} F digit {print(3);} {print(‘*’);}
  • 20. SDT’s for L-Attributed definitions We can convert an L-attributed SDD into an SDT using following two rules: Embed the action that computes the inherited attributes for a nonterminal A immediately before that occurrence of A. if several inherited attributes of A are dpendent on one another in an acyclic fashion, order them so that those needed first are computed first Place the action of a synthesized attribute for the head of a production at the end of the body of the production
  • 21. Example S -> while (C) S1 L1=new(); L2=new(); S1.next=L1; C.false=S.next; C.true=L2; S.code=label||L1||C.code||label||L2||S1.code S -> while ( {L1=new();L2=new();C.false=S.next;C.true=L2;} C) {S1.next=L1;} S1{S.code=label||L1||C.code||label||L2||S1.code;}