330 likes | 449 Views
LESSON 05. Overview of Previous Lesson(s). Over View. Model of a Compiler Front End. Over View. Analysis is organized around the "syntax" of the language to be compiled. The syntax of a programming language describes the proper form of its programs.
E N D
Overview of Previous Lesson(s)
Over View Model of a Compiler Front End
Over View.. • Analysis is organized around the "syntax" of the language to be compiled. • The syntax of a programming language describes the proper form of its programs. • The semantics of the language defines the programs actual meaning.
Over View... • Context Free Grammar is used to specify the syntax of the language. • A grammar describes the hierarchical structure of most programming language constructs. • It has components • A set of tokens (terminal symbols) • A set of nonterminals • A set of productions • A designated start symbol
Over View... • Given a CF grammar determining the set of all stringsgenerated by the grammar is known as derivation. • Begin with the start symbol • In each step, replace one nonterminal in the current sentential form with one of the right-hand sides of a production for that nonterminal
Over View... • Derivation for 9 – 5 + 2 list Start Symbol list+digit P-1 list-digit+digit P-2 digit-digit+digit P-3 9 -digit+digit P-4 9 - 5 +digit P-4 9 - 5 + 2 P-4 • This is an leftmost derivation, because we replacedthe leftmost nonterminal.
Over View... • Parsing is the problem of taking a string of terminals and figuring out how to derive it from the start symbol of the grammar. • Given a CFG, a parse tree according to the grammar is a tree with the following properties: • The root is labeled by the start symbol. • Each leaf is labeled by a terminal or by ɛ. • Each interior node is labeled by a nonterminal. • If A X1 X2 … Xn is a production, then node A has immediate children X1, X2, …, Xn where Xi is a (non)terminal or .
Over View... Parse tree of the string 9-5+2 using grammar G list list digit list digit digit The sequence ofleafs is called theyield of the parse tree 9 - 5 + 2
Over View… Ambiguity: Two Parse Trees for 9 – 5 + 2 string string string string string string string string string string 9 - 5 + 2 9 - 5 + 2
Contents • Attributes • Translation Schemes • Postfix Notation • Synthesized Attributes • Tree Traversals • Translation Schemes • Preorder and Postorder Traversals
Syntax-Directed Translation • Syntax-directed translation is done by attaching rules or program fragments to productions in a grammar. • Ex. consider an expression expr generated by the production Expr -> expr1 + term • Translating exprby exploiting its structure, got the following pseudo-code: translate expr1; translate term; handle +;
Syntax-Directed Translation.. • Syntax directed translation introduces two new concepts Attributes and Translation schemes. • An attribute is any quantity associated with a programming construct . • Examples of attributes are • Data types of expressions, • Number of instructions in the generated code, • The location of the first instruction in the generated code.
Syntax-Directed Translation... • A translation scheme is a notation for attaching program fragments to the productions of a grammar. • The program fragments are executed when the production is used during syntax analysis. • Combined result of all these fragment executions, produces the translation of the program.
Postfix Notation • The postfixnotation for an expression E can be defined inductively as follows: • If E is a variable or constant , then the postfix notation for E is E itself. • If E is an expression of the form El op E2 , where op is any binary operator, then the postfix notation for E is E1’ E2’ op, where E1’and E2’ are the postfix notations for El and E2 , respectively. • If E is a parenthesized expression of the form (E1), then the postfix notation for E is the same as the postfix notation for E1.
Postfix Notation.. • Ex (9 - 5) + 2 Translations of 9, 5 and 2 are constant themselves by Rule 1 9 – 5 is 95- by Rule 2 (9-5) is the same by Rule 3 Now we have to apply Rule 2 So E1 represents (9-5) , E2represents 2 , op is + We got 95-2+ by Rule 2
Postfix Notation... • Another Ex 9 – (5 + 2)
Synthesized Attributes • A syntax-directed definition associates • With each grammar symbol, a set of attributes, and • With each production, a set of semantic rules for computing the values of the attributes associated with the symbols appearing in the production. • A parse tree showing the attribute values at each node is called an annotated parse tree.
Synthesized Attributes.. • Suppose a node N in a parse tree is labeled by the grammar symbol X then X.a is used to denote the value of attribute a of X at that node.
Synthesized Attributes... • An attribute is said to be synthesized if its value at a parse-tree node N is determined from attribute values at the children of N and at N itself. • Synthesized attributes can be evaluated during a single bottom-up traversal of a parse tree. • An annotated parse tree is based on the syntax directed definition.
Synthesized Attributes... • Each non terminal has a string-valued attribute t that represents the postfix notation for the expression generated by that non terminal in a parse tree. • String concatenation operator || Syntax-directed definition for infix to postfix translation
Tree Traversals • Tree traversalsare used for describing attribute evaluation and for specifying the execution of code fragments in a translation scheme. • A traversal of a tree starts at the root and visits each node of the tree in some order. • A depth-first traversal starts at the root and recursively visits the children of each node in any order, not necessarily from left to right .
Tree Traversals A depth-first traversal of a tree
Translation Schemes • A syntax-directed translation scheme is a notation for specifying a translation by attaching program fragments to productions in a grammar. • Program fragments embedded within production bodies are called semantic actions. rest -> + term { print('+') } rest1 Action to be executed
Translation Schemes.. • An extra leaf is constructed for the semantic action.
Translation Schemes... • Actions translating 9-5+2into 95-2+
Translation Schemes... • Actions for translating into postfix notation
Translation Schemes... • The implementation of a translation scheme must ensure • Semantic actions are performed in the order they would appear during a postordertraversal of a parse tree.
Preorder and Postorder Traversals • In preorder traversal action is done when we first visit a node. • If the action is done just before we leave a node for the last time, then we say it is a postorder traversal of the tree. • Preorder and postorder traversals define corresponding orderings on nodes, based on when the action at a node would be performed.