Syntax-Directed Translation
|
|
- Melinda Holland
- 6 years ago
- Views:
Transcription
1 Syntax-Directed Translation 1
2 Syntax-Directed Translation 1. We associate information with the programming language constructs by attaching attributes to grammar symbols. 2. Values of these attributes are evaluated by the semantic rules associated with the production rules. 3. Evaluation of these semantic rules: may generate intermediate codes may put information into the symbol table may perform type checking may issue error messages may perform some other activities in fact, they may perform almost any activities. 4. An attribute may hold almost any thing. a string, a number, a memory location, a complex record. 2
3 Syntax-Directed Definitions and Translation Schemes 1. When we associate semantic rules with productions, we use two notations: Syntax-Directed Definitions Translation Schemes A. Syntax-Directed Definitions: give high-level specifications for translations hide many implementation details such as order of evaluation of semantic actions. We associate a production rule with a set of semantic actions, and we do not say when they will be evaluated. B. Translation Schemes: indicate the order of evaluation of semantic actions associated with a production rule. In other words, translation schemes give a little bit information about implementation details. 3
4 Syntax-Directed Translation Conceptually with both the syntax directed translation and translation scheme we Parse the input token stream Build the parse tree Traverse the tree to evaluate the semantic rules at the parse tree nodes. Input string parse tree dependency graph evaluation order for semantic rules Conceptual view of syntax directed translation 4
5 Syntax-Directed Definitions 1. A syntax-directed definition is a generalization of a context-free grammar in which: Each grammar symbol is associated with a set of attributes. This set of attributes for a grammar symbol is partitioned into two subsets called synthesized and inherited attributes of that grammar symbol. Each production rule is associated with a set of semantic rules. 2. The value of an attribute at a parse tree node is defined by the semantic rule associated with a production at that node. 3. The value of a synthesized attribute at a node is computed from the values of attributes at the children in that node of the parse tree 4. The value of an inherited attribute at a node is computed from the values of attributes at the siblings and parent of that node of the parse tree 5
6 Syntax-Directed Definitions Examples: Synthesized attribute : E E1+E2 { E.val =E1.val + E2.val} Inherited attribute :A XYZ {Y.val = 2 * A.val} 1. Semantic rules set up dependencies between attributes which can be represented by a dependency graph. 2. This dependency graph determines the evaluation order of these semantic rules. 3. Evaluation of a semantic rule defines the value of an attribute. But a semantic rule may also have some side effects such as printing a value. 6
7 Annotated Parse Tree 1. A parse tree showing the values of attributes at each node is called an annotated parse tree. 2. Values of Attributes in nodes of annotated parse-tree are either, initialized to constant values or by the lexical analyzer. determined by the semantic-rules. 3. The process of computing the attributes values at the nodes is called annotating (or decorating) of the parse tree. 4. Of course, the order of these computations depends on the dependency graph induced by the semantic rules. 7
8 Syntax-Directed Definition In a syntax-directed definition, each production A α is associated with a set of semantic rules of the form: b=f(c 1,c 2,,c n ) where f is a function and b can be one of the followings: b is a synthesized attribute of A and c 1,c 2,,c n are attributes of the grammar symbols in the production ( A α ). OR b is an inherited attribute one of the grammar symbols in α (on the right side of the production), and c 1,c 2,,c n are attributes of the grammar symbols in the production ( A α ). 8
9 Attribute Grammar So, a semantic rule b=f(c 1,c 2,,c n ) indicates that the attribute b depends on attributes c 1,c 2,,c n. In a syntax-directed definition, a semantic rule may just evaluate a value of an attribute or it may have some side effects such as printing values. An attribute grammar is a syntax-directed definition in which the functions in the semantic rules cannot have side effects (they can only evaluate values of attributes). 9
10 Syntax-Directed Definition -- Example Production L E n E E 1 + T E T T T 1 * F T F F ( E ) F digit Semantic Rules print(e.val) E.val = E 1.val + T.val E.val = T.val T.val = T 1.val * F.val T.val = F.val F.val = E.val F.val = digit.lexval 1. Symbols E, T, and F are associated with a synthesized attribute val. 2. The token digit has a synthesized attribute lexval (it is assumed that it is evaluated by the lexical analyzer). 3. Terminals are assumed to have synthesized attributes only. Values for attributes of terminals are usually supplied by the lexical analyzer. 4. The start symbol does not have any inherited attribute unless otherwise stated. 10
11 S-attributed definition A syntax directed translation that uses synthesized attributes exclusively is said to be a S-attributed definition. A parse tree for a S-attributed definition can be annotated by evaluating the semantic rules for the attributes at each node, bottom up from leaves to the root. 11
12 Draw the Tree L Example 3*5+4n Print(19) E val=15 E val=19 T val=15 T val=4 T val=3 F val=3 digit lexval =3 * F val=5 digit lexval =5 + F val=4 digit lexval =4 n
13 Dependency Graph Input: 3*5+4 L E.val=19 n E.val=15 + T.val=4 T.val=15 T.val=3 * F.val=5 F.val=4 digit.lexval=4 F.val=3 digit.lexval=5 digit.lexval=3 13
14 Inherited attributes An inherited value at a node in a parse tree is defined in terms of attributes at the parent and/or siblings of the node. Convenient way for expressing the dependency of a programming language construct on the context in which it appears. We can use inherited attributes to keep track of whether an identifier appears on the left or right side of an assignment to decide whether the address or value of the assignment is needed. Example: The inherited attribute distributes type information to the various identifiers in a declaration. 14
15 Syntax-Directed Definition Inherited Attributes Production D T L T int T real L L 1 id L id Semantic Rules L.in = T.type T.type = integer T.type = real L 1.in = L.in, addtype(id.entry,l.in) addtype(id.entry,l.in) 1. Symbol T is associated with a synthesized attribute type. 2. Symbol L is associated with an inherited attribute in. 15
16 Input: real p,q,r parse tree D Annotated parse tree D L in=real addtype(id 3,real) T L real L, id3 T type=real L in=real addtype(id 2,real) addtype(id 1,real) L, id2 L in=real id1 real id entry=id 1 id entry=id 2 id entry=id 3 16
17 Dependency Graph Directed Graph Shows interdependencies between attributes. If an attribute b at a node depends on an attribute c, then the semantic rule for b at that node must be evaluated after the semantic rule that defines c. Construction: Put each semantic rule into the form b=f(c 1,,c k ) by introducing dummy synthesized attribute b for every semantic rule that consists of a procedure call. E.g., L E n Becomes: print(e.val) dummy = print(e.val) The graph has a node for each attribute and an edge to the node for b from the node for c if attribute b depends on attribute c. 17
18 Dependency Graph Construction for each node n in the parse tree do for each attribute a of the grammar symbol at n do construct a node in the dependency graph for a for each node n in the parse tree do for each semantic rule b = f(c 1,,c n ) associated with the production used at n do for i= 1 to n do construct an edge from the node for c i to the node for b 18
19 Dependency Graph Construction Example Production Semantic Rule E E1 + E2 E.val = E1.val + E2.val E. val E1. val + E2. Val E.val is synthesized from E1.val and E2.val The dotted lines represent the parse tree that is not part of the dependency graph. 19
20 Dependency Graph D T L T int T real L L 1 id L id L.in = T.type T.type = integer T.type = real L 1.in = L.in, addtype(id.entry,l.in) addtype(id.entry,l.in) 20
21 Evaluation Order A topological sort of a directed acyclic graph is any ordering m1,m2 mk of the nodes of the graph such that edges go from nodes earlier in the ordering to later nodes.. i.e if there is an edge from m i to m j them m i appears before m j in the ordering Any topological sort of dependency graph gives a valid order for evaluation of semantic rules associated with the nodes of the parse tree. The dependent attributes c1,c2.ck in b=f(c1,c2.ck ) must be available before f is evaluated. Translation specified by Syntax Directed Definition Input string parse tree dependency graph evaluation order for semantic rules 21
22 Evaluation Order a4=real; a5=a4; addtype(id3.entry,a5); a7=a5; addtype(id2.entry,a7); a9=a7; addtype(id1.entry,a5); 22
23 Evaluating Semantic Rules Parse Tree methods At compile time evaluation order obtained from the topological sort of dependency graph. Fails if dependency graph has a cycle Rule Based Methods Semantic rules analyzed by hand or specialized tools at compiler construction time Order of evaluation of attributes associated with a production is pre-determined at compiler construction time Oblivious Methods Evaluation order is chosen without considering the semantic rules. Restricts the class of syntax directed definitions that can be implemented. If translation takes place during parsing order of evaluation is forced by parsing method. 23
24 Syntax Trees Syntax-Tree an intermediate representation of the compiler s input. A condensed form of the parse tree. Syntax tree shows the syntactic structure of the program while omitting irrelevant details. Operators and keywords are associated with the interior nodes. Chains of simple productions are collapsed. Syntax directed translation can be based on syntax tree as well as parse tree. 24
25 Syntax Tree-Examples Expression: + if B then S1 else S2 if - then - else 5 * 3 4 Leaves: identifiers or constants Internal nodes: labelled with operations Children: of a node are its operands B S1 S2 Statement: Node s label indicates what kind of a statement it is Children of a node correspond to the components of the statement 25
26 Constructing Syntax Tree for Expressions Each node can be implemented as a record with several fields. Operator node: one field identifies the operator (called label of the node) and remaining fields contain pointers to operands. The nodes may also contain fields to hold the values (pointers to values) of attributes attached to the nodes. Functions used to create nodes of syntax tree for expressions with binary operator are given below. mknode(op,left,right) mkleaf(id,entry) mkleaf(num,val) Each function returns a pointer to a newly created node. 26
27 Constructing Syntax Tree for Expressions- Example: a-4+c 1. p1:=mkleaf(id,entrya); 2. p2:=mkleaf(num,4); 3. p3:=mknode(-,p1,p2) 4. p4:=mkleaf(id,entryc); 5. p5:= mknode(+,p3,p4); The tree is constructed bottom up. + - id id num 4 to entry for a to entry for c 27
28 A syntax Directed Definition for Constructing Syntax Tree 1. It uses underlying productions of the grammar to schedule the calls of the functions mkleaf and mknode to construct the syntax tree 2. Employment of the synthesized attribute nptr (pointer) for E and T to keep track of the pointers returned by the function calls. PRODUCTION E E 1 + T E E 1 - T E T T (E) T id T num SEMANTIC RULE E.nptr = mknode( +,E 1.nptr,T.nptr) E.nptr = mknode( -,E 1.nptr,T.nptr) E.nptr = T.nptr T.nptr = E.nptr T.nptr = mkleaf(id, id.lexval) T.nptr = mkleaf(num, num.val) 28
29 Annotated parse tree depicting construction of syntax tree for the expression a-4+c E.nptr E.nptr + T.nptr E.nptr - T.nptr id + T.nptr num - id id Entry for a nu m id Entry for c 29
30 S-Attributed Definitions 1. Syntax-directed definitions are used to specify syntax-directed translations. 2. To create a translator for an arbitrary syntax-directed definition can be difficult. 3. We would like to evaluate the semantic rules during parsing (i.e. in a single pass, we will parse and we will also evaluate semantic rules during the parsing). 4. We will look at two sub-classes of the syntax-directed definitions: S-Attributed Definitions: only synthesized attributes used in the syntax-directed definitions. All actions occur on the right hand side of the production. L-Attributed Definitions: in addition to synthesized attributes, we may also use inherited attributes in a restricted fashion. 5. To implement S-Attributed Definitions and L-Attributed Definitions we can evaluate semantic rules in a single pass during the parsing. 6. Implementations of S-attributed Definitions are a little bit easier than implementations of L- Attributed Definitions 30
31 Bottom-Up Evaluation of S-Attributed Definitions A translator for an S-attributed definition can often be implemented with the help of an LR parser. From an S-attributed definition the parser generator can construct a translator that evaluates attributes as it parses the input. We put the values of the synthesized attributes of the grammar symbols a stack that has extra fields to hold the values of attributes. The stack is implemented by a pair of arrays val & state If the i th state symbol is A the val[i] will hold the value of the attribute associated with the parse tree node corresponding to this A. 31
32 Bottom-Up Evaluation of S-Attributed Definitions We evaluate the values of the attributes during reductions. A XYZ A.a=f(X.x,Y.y,Z.z) where all attributes are synthesized. state val state val top Z Z.z Y X Y.y X.x top A A.a.... Synthesized attributes are evaluated before each reduction. Before XYZ is reduced to A, the value of Z.z is in val[top], that of Y.y in val[top-1] and that of X.x in val[top-2]. After reduction top is decremented by 2. If a symbol has no attribute the corresponding entry in the array is undefined. 32
33 Bottom-Up Evaluation of S-Attributed Definitions Production L E n E E 1 + T E T T T 1 * F T F F ( E ) F digit Semantic Rules print(val[top-1]) val[ntop] = val[top-2] + val[top] val[ntop] = val[top-2] * val[top] val[ntop] = val[top-1] 1. At each shift of digit, we also push digit.lexval into val-stack. 2. At all other shifts, we do not put anything into val-stack because other terminals do not have attributes (but we increment the stack pointer for val-stack). 33
34 Bottom-Up Evaluation -- Example At each shift of digit, we also push digit.lexval into val-stack. Input state val semantic rule 5+3*4n *4n *4n F 5 F digit +3*4n T 5 T F +3*4 n E 5 E T 3*4n E+ 5- *4 n E *4n E+F 5-3 F digit *4n E+T 5-3 T F 4n E+T* 5-3- n E+T* n E+T*F F digit n E+T 5-12 T T 1 * F n E 17 E E 1 + T En 17- L E n L 17 34
35 L-Attributed Definitions When translation takes place during parsing, order of evaluation is linked to the order in which the nodes of a parse tree are created by parsing method. A natural order can be obtained by applying the procedure dfvisit to the root of a parse tree. We call this evaluation order depth first order. L-attributed definition is a class of syntax directed definition whose attributes can always be evaluated in depth first order( L stands for left since attribute information flows from left to right). dfvisit(node n) { for each child m of n, from left to right { evaluate inherited attributes of m dfvisit(m) } evaluate synthesized attributes of n }
36 L-Attributed Definitions A syntax-directed definition is L-attributed if each inherited attribute of X j, where 1 j n, on the right side of A X 1 X 2...X n depends only on 1. The attributes of the symbols X 1,...,X j-1 to the left of X j in the production 2. The inherited attribute of A Every S-attributed definition is L-attributed, since the restrictions apply only to the inherited attributes (not to synthesized attributes).
37 A Definition which is not L-Attributed Productions A L M Semantic Rules L.in=l(A.i) M.in=m(L.s) A.s=f(M.s) A Q R R.in=r(A.in) Q.in=q(R.s) A.s=f(Q.s) This syntax-directed definition is not L-attributed because the semantic rule Q.in=q(R.s) violates the restrictions of L-attributed definitions. When Q.in must be evaluated before we enter to Q because it is an inherited attribute. But the value of Q.in depends on R.s which will be available after we return from R. So, we are not be able to evaluate the value of Q.in before we enter to Q.
38 Translation Schemes In a syntax-directed definition, we do not say anything about the evaluation times of the semantic rules (when the semantic rules associated with a production should be evaluated). Translation schemes describe the order and timing of attribute computation. A translation scheme is a context-free grammar in which: attributes are associated with the grammar symbols and semantic actions enclosed between braces {} are inserted within the right sides of productions. Each semantic rule can only use the information compute by already executed semantic rules. Ex: A {... } X {... } Y {... } Semantic Actions
39 Translation Schemes for S-attributed Definitions useful notation for specifying translation during parsing. Can have both synthesized and inherited attributes. If our syntax-directed definition is S-attributed, the construction of the corresponding translation scheme will be simple. Each associated semantic rule in a S-attributed syntax-directed definition will be inserted as a semantic action into the end of the right side of the associated production. Production Semantic Rule E E1 + T E.val = E1.val + T.val a production of a syntax directed definition E E1 + T { E.val = E1.val + T.val } the production of the corresponding translation scheme
40 A Translation Scheme Example A simple translation scheme that converts infix expressions to the corresponding postfix expressions. E T R R + T { print( + ) } R1 R ε T id { print(id.name) } a+b+c ab+c+ infix expression postfix expression
41 A Translation Scheme Example (cont.) E T R id {print( a )} + T {print( + )} R id {print( b )} + T {print( + )} R id {print( c )} ε The depth first traversal of the parse tree (executing the semantic actions in that order) will produce the postfix representation of the infix expression.
42 Inherited Attributes in Translation Schemes If a translation scheme has to contain both synthesized and inherited attributes, we have to observe the following rules to ensure that the attribute value is available when an action refers to it. 1. An inherited attribute of a symbol on the right side of a production must be computed in a semantic action before that symbol. 2. A semantic action must not refer to a synthesized attribute of a symbol to the right of that semantic action. 3. A synthesized attribute for the non-terminal on the left can only be computed after all attributes it references have been computed (we normally put this semantic action at the end of the right side of the production). With a L-attributed syntax-directed definition, it is always possible to construct a corresponding translation scheme which satisfies these three conditions (This may not be possible for a general syntax-directed translation).
43 Inherited Attributes in Translation Schemes: Example S A 1 A 2 {A 1. in=1; A 2.in=2} A a { print (A.in)} S A 1 A 2 {A 1. in=1; A 2.in=2} a {print (A.in)} a {print (A.in)}
44 A Translation Scheme with Inherited Attributes D T {L.in = T.type } L T int { T.type = integer } T real { T.type = real } L {L1.in = L.in } L1, id {addtype(id.entry,l.in)} L id {addtype(id.entry,l.in)} This is a translation scheme for an L-attributed definitions
45 Bottom Up evaluation of Inherited Attributes Removing Embedding Semantic Actions In bottom-up evaluation scheme, the semantic actions are evaluated during reductions. During the bottom-up evaluation of S-attributed definitions, we have a parallel stack to hold synthesized attributes. Problem: where are we going to hold inherited attributes? A Solution: We will convert our grammar to an equivalent grammar to guarantee to the followings. All embedding semantic actions in our translation scheme will be moved into the end of the production rules. All inherited attributes will be copied into the synthesized attributes (most of the time synthesized attributes of new non-terminals). Thus we will be evaluate all semantic actions during reductions, and we find a place to store an inherited attribute.
46 Removing Embedding Semantic Actions To transform our translation scheme into an equivalent translation scheme: 1. Remove an embedding semantic action Si, put new a non-terminal Mi instead of that semantic action. 2. Put that semantic action Si into the end of a new production rule Mi ε for that non-terminal Mi. 3. That semantic action Si will be evaluated when this new production rule is reduced.
47 Removing Embedding Semantic Actions A {S1} X1 {S2} X2... {Sn} Xn remove embedding semantic actions A M1 X1 M2 X2... Mn Xn M1 ε {S1} M2 ε {S2}.. Mn ε {Sn}
48 Removing Embedding Semantic Actions E T R R + T { print( + ) } R R ε T id { print(id.name) } remove embedding semantic actions E T R R + T M R R ε T id { print(id.name) } M ε { print( + ) print( + ) }
49 Inheriting attributes on parser stack A bottom up parser reduces the RHS of a production A XY by removing X and Y from the top of the stack and replacing them by A. Suppose X has a synthesized attribute X.s which is already in the stack. If the inherited attrtibute Y.i is defined by the copy rule X.s=Y.i, then the value of X.s can where Y.i is called for. Copy rule plays an important role in the evaluation of inherited attributes during bottom up parsing. Productions D T L T int T real L L1, id L id Semantic Rules val[ntop]=integer val[ntop]=real addtype(val[top],val[top-3]) addtype(val[top],val[top-1])
Syntax-Directed Translation
Syntax-Directed Translation 1 Syntax-Directed Translation 2 Syntax-Directed Translation 3 Syntax-Directed Translation In a syntax-directed definition, each production A α is associated with a set of semantic
More informationSyntax-Directed Translation
Syntax-Directed Translation Grammar symbols are associated with attributes to associate information with the programming language constructs that they represent. Values of these attributes are evaluated
More information[Syntax Directed Translation] Bikash Balami
1 [Syntax Directed Translation] Compiler Design and Construction (CSc 352) Compiled By Central Department of Computer Science and Information Technology (CDCSIT) Tribhuvan University, Kirtipur Kathmandu,
More informationSyntax-Directed Translation. Concepts Introduced in Chapter 5. Syntax-Directed Definitions
Concepts Introduced in Chapter 5 Syntax-Directed Definitions Translation Schemes Synthesized Attributes Inherited Attributes Dependency Graphs Syntax-Directed Translation Uses a grammar to direct the translation.
More informationCompilers. 5. Attributed Grammars. Laszlo Böszörmenyi Compilers Attributed Grammars - 1
Compilers 5. Attributed Grammars Laszlo Böszörmenyi Compilers Attributed Grammars - 1 Adding Attributes We connect the grammar rules with attributes E.g. to implement type-checking or code generation A
More informationAbstract Syntax Tree
Abstract Syntax Tree Condensed form of parse tree, useful for representing language constructs. The production S if B then s1 else s2 may appear as if-then-else B s1 s2 1 Abstract Syntax tree Chain of
More informationSyntax-Directed Translation Part I
1 Syntax-Directed Translation Part I Chapter 5 COP5621 Compiler Construction Copyright Robert van Engelen, Florida State University, 2007-2011 2 The Structure of our Compiler Revisited Character stream
More informationSyntax-Directed Translation. Introduction
Syntax-Directed Translation Introduction Translation of languages guided by context-free grammars Attach attributes to the grammar symbols Values of the attributes are computed by semantic rules associated
More informationPrinciples of Programming Languages
Principles of Programming Languages h"p://www.di.unipi.it/~andrea/dida2ca/plp- 14/ Prof. Andrea Corradini Department of Computer Science, Pisa Lesson 11! Syntax- Directed Transla>on The Structure of the
More informationPrinciples of Programming Languages
Principles of Programming Languages h"p://www.di.unipi.it/~andrea/dida2ca/plp- 14/ Prof. Andrea Corradini Department of Computer Science, Pisa Lesson 10! Con:nua:on of the course Syntax- Directed Transla:on
More informationPART 4 - SYNTAX DIRECTED TRANSLATION. F. Wotawa TU Graz) Compiler Construction Summer term / 309
PART 4 - SYNTAX DIRECTED TRANSLATION F. Wotawa (IST @ TU Graz) Compiler Construction Summer term 2016 109 / 309 Setting Translation of context-free languages Information attributes of grammar symbols Values
More informationSyntax-Directed Translation
Syntax-Directed Translation What is syntax-directed translation? The compilation process is driven by the syntax. The semantic routines perform interpretation based on the syntax structure. Attaching attributes
More informationSyntax-Directed Translation Part II
Syntax-Directed Translation Part II Chapter 5 Slides adapted from : Robert van Engelen, Florida State University Alessandro Artale, Free University of Bolzano Syntax-Directed Translation Schemes Syntax-directed
More informationSyntax Directed Translation
Syntax Directed Translation Rupesh Nasre. CS3300 Compiler Design IIT Madras Aug 2015 Character stream Lexical Analyzer Machine-Independent Code Optimizer F r o n t e n d Token stream Syntax Analyzer Syntax
More informationΕΠΛ323 - Θεωρία και Πρακτική Μεταγλωττιστών. Lecture 8a Syntax-directed Transla1on Elias Athanasopoulos
ΕΠΛ323 - Θεωρία και Πρακτική Μεταγλωττιστών Lecture 8a Syntax-directed Transla1on Elias Athanasopoulos eliasathan@cs.ucy.ac.cy Syntax-directed TranslaPon (SDT) Μετάφραση Κατευθυνόμενη από τη Σύνταξη We
More informationA Simple Syntax-Directed Translator
Chapter 2 A Simple Syntax-Directed Translator 1-1 Introduction The analysis phase of a compiler breaks up a source program into constituent pieces and produces an internal representation for it, called
More informationA programming language requires two major definitions A simple one pass compiler
A programming language requires two major definitions A simple one pass compiler [Syntax: what the language looks like A context-free grammar written in BNF (Backus-Naur Form) usually suffices. [Semantics:
More informationPART 4 - SYNTAX DIRECTED TRANSLATION. F. Wotawa TU Graz) Compiler Construction Summer term / 264
PART 4 - SYNTAX DIRECTED TRANSLATION F. Wotawa (IST @ TU Graz) Compiler Construction Summer term 2015 109 / 264 Setting Translation of context-free languages Information attributes of grammar symbols Values
More informationUNIT-3. (if we were doing an infix to postfix translator) Figure: conceptual view of syntax directed translation.
UNIT-3 SYNTAX-DIRECTED TRANSLATION: A Grammar symbols are associated with attributes to associate information with the programming language constructs that they represent. Values of these attributes are
More informationSemantic Analysis Attribute Grammars
Semantic Analysis Attribute Grammars Martin Sulzmann Martin Sulzmann Semantic Analysis Attribute Grammars 1 / 18 Syntax versus Semantics Syntax Analysis When is a program syntactically valid? Formalism:
More informationSyntax Directed Translation
Syntax Directed Translation Beyond syntax analysis An identifier named x has been recognized. Is x a scalar, array or function? How big is x? If x is a function, how many and what type of arguments does
More informationUNIT IV INTERMEDIATE CODE GENERATION
UNIT IV INTERMEDIATE CODE GENERATION 2 Marks 1. Draw syntax tree for the expression a=b*-c+b*-c 2. Explain postfix notation. It is the linearized representation of syntax tree.it is a list of nodes of
More informationSyntactic Directed Translation
Syntactic Directed Translation Translation Schemes Copyright 2016, Pedro C. Diniz, all rights reserved. Students enrolled in the Compilers class at the University of Southern California have explicit permission
More informationSyntax-Directed Translation
Syntax-Directed Translation ALSU Textbook Chapter 5.1 5.4, 4.8, 4.9 Tsan-sheng Hsu tshsu@iis.sinica.edu.tw http://www.iis.sinica.edu.tw/~tshsu 1 What is syntax-directed translation? Definition: The compilation
More informationSyntax-Directed Translation. CS Compiler Design. SDD and SDT scheme. Example: SDD vs SDT scheme infix to postfix trans
Syntax-Directed Translation CS3300 - Compiler Design Syntax Directed Translation V. Krishna Nandivada IIT Madras Attach rules or program fragments to productions in a grammar. Syntax directed definition
More informationSemantic analysis and intermediate representations. Which methods / formalisms are used in the various phases during the analysis?
Semantic analysis and intermediate representations Which methods / formalisms are used in the various phases during the analysis? The task of this phase is to check the "static semantics" and generate
More informationLecture Compiler Construction
Lecture Compiler Construction Franz Wotawa wotawa@ist.tugraz.at Institute for Software Technology Technische Universität Graz Inffeldgasse 16b/2, A-8010 Graz, Austria Summer term 2017 F. Wotawa (IST @
More informationCOP5621 Exam 3 - Spring 2005
COP5621 Exam 3 - Spring 2005 Name: (Please print) Put the answers on these sheets. Use additional sheets when necessary. Show how you derived your answer when applicable (this is required for full cred
More informationMore On Syntax Directed Translation
More On Syntax Directed Translation 1 Types of Attributes We have productions of the form: A X 1 X 2 X 3... X n with semantic rules of the form: b:= f(c 1, c 2, c 3,..., c n ) where b and the c s are attributes
More informationSyntax-directed translation. Context-sensitive analysis. What context-sensitive questions might the compiler ask?
Syntax-directed translation Context-sensitive analysis The compilation process is driven by the syntactic structure of the program as discovered by the parser Semantic routines: interpret meaning of the
More informationSyntax-Directed Translation. Lecture 14
Syntax-Directed Translation Lecture 14 (adapted from slides by R. Bodik) 9/27/2006 Prof. Hilfinger, Lecture 14 1 Motivation: parser as a translator syntax-directed translation stream of tokens parser ASTs,
More informationCS 406: Syntax Directed Translation
CS 406: Syntax Directed Translation Stefan D. Bruda Winter 2015 SYNTAX DIRECTED TRANSLATION Syntax-directed translation the source language translation is completely driven by the parser The parsing process
More informationChapter 4 :: Semantic Analysis
Chapter 4 :: Semantic Analysis Programming Language Pragmatics, Fourth Edition Michael L. Scott Copyright 2016 Elsevier 1 Chapter04_Semantic_Analysis_4e - Tue November 21, 2017 Role of Semantic Analysis
More informationSummary: Semantic Analysis
Summary: Semantic Analysis 1 Basic Concepts When SA is performed: Semantic Analysis may be performed: In a two-pass compiler: after syntactic analysis is finished, the semantic analyser if called with
More informationCOMP-421 Compiler Design. Presented by Dr Ioanna Dionysiou
COMP-421 Compiler Design Presented by Dr Ioanna Dionysiou Administrative! Any questions about the syllabus?! Course Material available at www.cs.unic.ac.cy/ioanna! Next time reading assignment [ALSU07]
More informationChapter 4. Action Routines
Chapter 4 Action Routines Syntax and Semantics In general: Syntax form Semantics meaning In programming languages: Syntax part of the language definition that can be described via a context-free grammar
More information2.2 Syntax Definition
42 CHAPTER 2. A SIMPLE SYNTAX-DIRECTED TRANSLATOR sequence of "three-address" instructions; a more complete example appears in Fig. 2.2. This form of intermediate code takes its name from instructions
More information5. Syntax-Directed Definitions & Type Analysis
5. Syntax-Directed Definitions & Type Analysis Eva Rose Kristoffer Rose NYU Courant Institute Compiler Construction (CSCI-GA.2130-001) http://cs.nyu.edu/courses/spring15/csci-ga.2130-001/lecture-5.pdf
More informationCOP4020 Programming Languages. Semantics Prof. Robert van Engelen
COP4020 Programming Languages Semantics Prof. Robert van Engelen Overview Static semantics Dynamic semantics Attribute grammars Abstract syntax trees COP4020 Spring 2011 2 Static Semantics Syntax concerns
More informationCompiler Lab. Introduction to tools Lex and Yacc
Compiler Lab Introduction to tools Lex and Yacc Assignment1 Implement a simple calculator with tokens recognized using Lex/Flex and parsing and semantic actions done using Yacc/Bison. Calculator Input:
More informationContext-sensitive analysis. Semantic Processing. Alternatives for semantic processing. Context-sensitive analysis
Semantic Processing The compilation process is driven by the syntactic structure of the program as discovered by the parser Semantic routines: interpret meaning of the program based on its syntactic structure
More informationQuestion Bank. 10CS63:Compiler Design
Question Bank 10CS63:Compiler Design 1.Determine whether the following regular expressions define the same language? (ab)* and a*b* 2.List the properties of an operator grammar 3. Is macro processing a
More informationCOMPILER CONSTRUCTION (Evaluation Orders for SDD s)
COMPILER CONSTRUCTION (Evaluation Orders for SDD s) Prof. K R Chowdhary Email: kr.chowdhary@jietjodhpur.ac.in Campus Director, JIET, Jodhpur Thursday 18 th October, 2018 kr chowdhary Code generation 1/
More informationCompiler Principle and Technology. Prof. Dongming LU April 15th, 2019
Compiler Principle and Technology Prof. Dongming LU April 15th, 2019 PART TWO 6. Semantic Analysis Contents Part One 6.1 Attributes and Attribute Grammars Part Two 6.2 Algorithms for Attribute Computation
More informationNARESHKUMAR.R, AP\CSE, MAHALAKSHMI ENGINEERING COLLEGE, TRICHY Page 1
SEM / YEAR : VI / III CS2352 PRINCIPLES OF COMPLIERS DESIGN UNIT III INTERMEDIATE CODE GENERATION PART A 1. What are the benefits of intermediate code generation? (A.U May 2008) A Compiler for different
More informationContext-Free Grammar. Concepts Introduced in Chapter 2. Parse Trees. Example Grammar and Derivation
Concepts Introduced in Chapter 2 A more detailed overview of the compilation process. Parsing Scanning Semantic Analysis Syntax-Directed Translation Intermediate Code Generation Context-Free Grammar A
More informationSemantic Analysis computes additional information related to the meaning of the program once the syntactic structure is known.
SEMANTIC ANALYSIS: Semantic Analysis computes additional information related to the meaning of the program once the syntactic structure is known. Parsing only verifies that the program consists of tokens
More informationCOP4020 Programming Languages. Semantics Robert van Engelen & Chris Lacher
COP4020 Programming Languages Semantics Robert van Engelen & Chris Lacher Overview Static semantics Dynamic semantics Attribute grammars Abstract syntax trees Static Semantics Syntax concerns the form
More informationCSE302: Compiler Design
CSE302: Compiler Design Instructor: Dr. Liang Cheng Department of Computer Science and Engineering P.C. Rossin College of Engineering & Applied Science Lehigh University April 3, 2007 Outline Recap Syntax-directed
More informationA simple syntax-directed
Syntax-directed is a grammaroriented compiling technique Programming languages: Syntax: what its programs look like? Semantic: what its programs mean? 1 A simple syntax-directed Lexical Syntax Character
More information10/26/17. Attribute Evaluation Order. Attribute Grammar for CE LL(1) CFG. Attribute Grammar for Constant Expressions based on LL(1) CFG
Attribute Evaluation Order Determining attribute 2 expected_type evaluation order actual_type actual_type for any attribute grammar is a 5 complex problem, 1 [1] [2] requiring
More informationStructure of a compiler. More detailed overview of compiler front end. Today we ll take a quick look at typical parts of a compiler.
More detailed overview of compiler front end Structure of a compiler Today we ll take a quick look at typical parts of a compiler. This is to give a feeling for the overall structure. source program lexical
More information10/18/18. Outline. Semantic Analysis. Two types of semantic rules. Syntax vs. Semantics. Static Semantics. Static Semantics.
Outline Semantic Analysis In Text: Chapter 3 Static semantics Attribute grammars Dynamic semantics Operational semantics Denotational semantics N. Meng, S. Arthur 2 Syntax vs. Semantics Syntax concerns
More informationProf. Mohamed Hamada Software Engineering Lab. The University of Aizu Japan
Language Processing Systems Prof. Mohamed Hamada Software Engineering Lab. The University of Aizu Japan Semantic Analysis Compiler Architecture Front End Back End Source language Scanner (lexical analysis)
More informationProgramming Languages
Programming Languages Tevfik Koşar Lecture - IX February 14 th, 2006 1 Roadmap Semantic Analysis Role of Semantic Analysis Static vs Dynamic Analysis Attribute Grammars Evaluating Attributes Decoration
More informationSemantic Analysis. Compiler Architecture
Processing Systems Prof. Mohamed Hamada Software Engineering Lab. The University of Aizu Japan Source Compiler Architecture Front End Scanner (lexical tokens Parser (syntax Parse tree Semantic Analysis
More informationAbstract Syntax Trees Synthetic and Inherited Attributes
Abstract Syntax Trees Synthetic and Inherited Attributes Lecture 22 Sections 5.1-5.2 Robb T. Koether Hampden-Sydney College Mon, Mar 16, 2015 Robb T. Koether (Hampden-Sydney College)Abstract Syntax TreesSynthetic
More informationPRINCIPLES OF COMPILER DESIGN UNIT IV SYNTAX DIRECTED TRANSLATION AND TYPE CHECKING
PRINCIPLES OF COMPILER DESIGN UNIT IV SYNTAX DIRECTED TRANSLATION AND TYPE CHECKING Objectives Explain about syntax directed translation Explain how to write the three address code. Explain how to handle
More informationAttribute Grammars. Attribute Grammars
Attribute Grammars Definitions: synthesized, inherited, dependence graph Example: syntax-directed translation S-attributed grammars -attributed grammars Bottom Up euation of inherited attributes Top Down
More informationCompila(on /15a Lecture 6. Seman(c Analysis Noam Rinetzky
Compila(on 0368-3133 2014/15a Lecture 6 Seman(c Analysis Noam Rinetzky 1 You are here Source text txt Process text input characters Lexical Analysis tokens Annotated AST Syntax Analysis AST Seman(c Analysis
More informationLecture 14 Sections Mon, Mar 2, 2009
Lecture 14 Sections 5.1-5.4 Hampden-Sydney College Mon, Mar 2, 2009 Outline 1 2 3 4 5 Parse A parse tree shows the grammatical structure of a statement. It includes all of the grammar symbols (terminals
More informationSEMANTIC ANALYSIS TYPES AND DECLARATIONS
SEMANTIC ANALYSIS CS 403: Type Checking Stefan D. Bruda Winter 2015 Parsing only verifies that the program consists of tokens arranged in a syntactically valid combination now we move to check whether
More informationIntermediate Code Generation
Intermediate Code Generation In the analysis-synthesis model of a compiler, the front end analyzes a source program and creates an intermediate representation, from which the back end generates target
More informationSYED AMMAL ENGINEERING COLLEGE (An ISO 9001:2008 Certified Institution) Dr. E.M. Abdullah Campus, Ramanathapuram
CS6660 COMPILER DESIGN Question Bank UNIT I-INTRODUCTION TO COMPILERS 1. Define compiler. 2. Differentiate compiler and interpreter. 3. What is a language processing system? 4. List four software tools
More informationWe now allow any grammar symbol X to have attributes. The attribute a of symbol X is denoted X.a
Attribute Grammars Attribute Grammars were invented by Don Knuth as a way to unify all of the stages of compiling into one. They give a formal way to pass semantic information (types, values, etc.) around
More informationSemantic Analysis. Role of Semantic Analysis
Semantic Analysis Chapter 4 Role of Semantic Analysis Following parsing, the next two phases of the "typical" compiler are semantic analysis (intermediate) code generation The principal job of the semantic
More informationSection A. A grammar that produces more than one parse tree for some sentences is said to be ambiguous.
Section A 1. What do you meant by parser and its types? A parser for grammar G is a program that takes as input a string w and produces as output either a parse tree for w, if w is a sentence of G, or
More informationExamples of attributes: values of evaluated subtrees, type information, source file coordinates,
1 2 3 Attributes can be added to the grammar symbols, and program fragments can be added as semantic actions to the grammar, to form a syntax-directed translation scheme. Some attributes may be set by
More informationBuilding Compilers with Phoenix
Building Compilers with Phoenix Syntax-Directed Translation Structure of a Compiler Character Stream Intermediate Representation Lexical Analyzer Machine-Independent Optimizer token stream Intermediate
More informationFinal Term Papers 2013
Solved by: Sahar (well wisher) Class BSCS 6 th Semester Subject CS606 (COMPILER CONSTRUCTION) Solution Type: Final Term Solved Subjective including Papers of Year : 2013,2012,2011,2010,2009 2006 Institute:
More informationStatic and Dynamic Semantics
Copyright R.A. van Engelen, FSU Department of Computer Science, 2000 Semantic Analysis In this set of notes you will learn about: Static semantics Dynamic semantics Attribute grammars Abstract syntax trees
More informationSemantic analysis. Syntax tree is decorated with typing- and other context dependent
Semantic analysis Semantic analysis Semantic analysis checks for the correctness of contextual dependences: { nds correspondence between declarations and usage of identiers, { performs type checking/inference,
More informationChapter 4 - Semantic Analysis. June 2, 2015
Chapter 4 - Semantic Analysis June 2, 2015 The role of the semantic analyzer Compilers use semantic analysis to enforce the static semantic rules of a language It is hard to generalize the exact boundaries
More information4. Semantic Processing and Attributed Grammars
4. Semantic Processing and Attributed Grammars 1 Semantic Processing The parser checks only the syntactic correctness of a program Tasks of semantic processing Checking context conditions - Declaration
More informationChapter 2: Syntax Directed Translation and YACC
Chapter 2: Syntax Directed Translation and YACC 長庚大學資訊工程學系陳仁暉助理教授 Tel: (03) 211-8800 Ext: 5990 Email: jhchen@mail.cgu.edu.tw URL: http://www.csie.cgu.edu.tw/~jhchen All rights reserved. No part of this
More informationPrinciples of Programming Languages COMP251: Syntax and Grammars
Principles of Programming Languages COMP251: Syntax and Grammars Prof. Dekai Wu Department of Computer Science and Engineering The Hong Kong University of Science and Technology Hong Kong, China Fall 2007
More informationLR Parsing LALR Parser Generators
LR Parsing LALR Parser Generators Outline Review of bottom-up parsing Computing the parsing DFA Using parser generators 2 Bottom-up Parsing (Review) A bottom-up parser rewrites the input string to the
More informationEvaluation of Semantic Actions in Predictive Non- Recursive Parsing
Evaluation of Semantic Actions in Predictive Non- Recursive Parsing José L. Fuertes, Aurora Pérez Dept. LSIIS School of Computing. Technical University of Madrid Madrid, Spain Abstract To implement a syntax-directed
More informationAbstract Syntax Trees & Top-Down Parsing
Abstract Syntax Trees & Top-Down Parsing Review of Parsing Given a language L(G), a parser consumes a sequence of tokens s and produces a parse tree Issues: How do we recognize that s L(G)? A parse tree
More informationAbstract Syntax Trees & Top-Down Parsing
Review of Parsing Abstract Syntax Trees & Top-Down Parsing Given a language L(G), a parser consumes a sequence of tokens s and produces a parse tree Issues: How do we recognize that s L(G)? A parse tree
More information4. An interpreter is a program that
1. In an aboslute loading scheme, which loader function is accomplished by programmer? A. Allocation B. LInking C. Reallocation D. both (A) and (B) 2. A compiler program written in a high level language
More informationProgram Assignment 2 Due date: 10/20 12:30pm
Decoration of parse tree for (1 + 3) * 2 N. Meng, S. Arthur 1 Program Assignment 2 Due date: 10/20 12:30pm Bitwise Manipulation of Hexidecimal Numbers CFG E E A bitwise OR E A A A ^ B bitwise XOR A B B
More informationComputer Science Department Carlos III University of Madrid Leganés (Spain) David Griol Barres
Computer Science Department Carlos III University of Madrid Leganés (Spain) David Griol Barres dgriol@inf.uc3m.es Compiler Architecture Source language Scanner (lexical analysis) tokens Parser (syntax
More informationCompiler Code Generation COMP360
Compiler Code Generation COMP360 Students who acquire large debts putting themselves through school are unlikely to think about changing society. When you trap people in a system of debt, they can t afford
More informationAbstract Syntax Trees & Top-Down Parsing
Review of Parsing Abstract Syntax Trees & Top-Down Parsing Given a language L(G), a parser consumes a sequence of tokens s and produces a parse tree Issues: How do we recognize that s L(G)? A parse tree
More informationSemantic Analysis. CSE 307 Principles of Programming Languages Stony Brook University
Semantic Analysis CSE 307 Principles of Programming Languages Stony Brook University http://www.cs.stonybrook.edu/~cse307 1 Role of Semantic Analysis Syntax vs. Semantics: syntax concerns the form of a
More informationComputer Science Department Carlos III University of Madrid Leganés (Spain) David Griol Barres
Computer Science Department Carlos III University of Madrid Leganés (Spain) David Griol Barres dgriol@inf.uc3m.es Introduction He am a driver might be syntactically correct but semantically wrong. Semantic
More informationRYERSON POLYTECHNIC UNIVERSITY DEPARTMENT OF MATH, PHYSICS, AND COMPUTER SCIENCE CPS 710 FINAL EXAM FALL 96 INSTRUCTIONS
RYERSON POLYTECHNIC UNIVERSITY DEPARTMENT OF MATH, PHYSICS, AND COMPUTER SCIENCE CPS 710 FINAL EXAM FALL 96 STUDENT ID: INSTRUCTIONS Please write your student ID on this page. Do not write it or your name
More informationTime : 1 Hour Max Marks : 30
Total No. of Questions : 6 P4890 B.E/ Insem.- 74 B.E ( Computer Engg) PRINCIPLES OF MODERN COMPILER DESIGN (2012 Pattern) (Semester I) Time : 1 Hour Max Marks : 30 Q.1 a) Explain need of symbol table with
More informationAbout the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Compiler Design
i About the Tutorial A compiler translates the codes written in one language to some other language without changing the meaning of the program. It is also expected that a compiler should make the target
More informationAnatomy of a Compiler. Overview of Semantic Analysis. The Compiler So Far. Why a Separate Semantic Analysis?
Anatomy of a Compiler Program (character stream) Lexical Analyzer (Scanner) Syntax Analyzer (Parser) Semantic Analysis Parse Tree Intermediate Code Generator Intermediate Code Optimizer Code Generator
More informationError Handling Syntax-Directed Translation Recursive Descent Parsing. Lecture 6
Error Handling Syntax-Directed Translation Recursive Descent Parsing Lecture 6 1 Outline Extensions of CFG for parsing Precedence declarations (previous slide set) Error handling (slight digression) I.e.,
More informationCS606- compiler instruction Solved MCQS From Midterm Papers
CS606- compiler instruction Solved MCQS From Midterm Papers March 06,2014 MC100401285 Moaaz.pk@gmail.com Mc100401285@gmail.com PSMD01 Final Term MCQ s and Quizzes CS606- compiler instruction If X is a
More informationSyntax Directed Translation
CS143 Handout 16 Summer 2011 July 6 th, 2011 Syntax Directed Translation Handout written by Maggie Johnson and revised by Julie Zelenski. Syntax-directed translation refers to a method of compiler implementation
More informationSemantic Analysis with Attribute Grammars Part 3
with Attribute Grammars Part 3 Department of Computer Science and Automation Indian Institute of Science Bangalore 560 012 NPTEL Course on Principles of Compiler Design Outline of the Lecture Introduction
More informationError Handling Syntax-Directed Translation Recursive Descent Parsing
Error Handling Syntax-Directed Translation Recursive Descent Parsing Lecture 6 by Professor Vijay Ganesh) 1 Outline Recursive descent Extensions of CFG for parsing Precedence declarations Error handling
More informationCSE302: Compiler Design
CSE302: Compiler Design Instructor: Dr. Liang Cheng Department of Computer Science and Engineering P.C. Rossin College of Engineering & Applied Science Lehigh University February 20, 2007 Outline Recap
More informationCOP4020 Spring 2011 Midterm Exam
COP4020 Spring 2011 Midterm Exam Name: (Please print Put the answers on these sheets. Use additional sheets when necessary or write on the back. Show how you derived your answer (this is required for full
More informationIntroduction to Compiler Construction
Introduction to Compiler Construction ASU Textbook Chapter 1 Tsan-sheng Hsu tshsu@iis.sinica.edu.tw http://www.iis.sinica.edu.tw/~tshsu 1 What is a compiler? Definitions: A recognizer. A translator. source
More informationEarlier edition Dragon book has been revised. Course Outline Contact Room 124, tel , rvvliet(at)liacs(dot)nl
Compilerconstructie najaar 2013 http://www.liacs.nl/home/rvvliet/coco/ Rudy van Vliet kamer 124 Snellius, tel. 071-527 5777 rvvliet(at)liacs(dot)nl college 1, dinsdag 3 september 2013 Overview 1 Why this
More information