Download presentation
Presentation is loading. Please wait.
Published byBryce Payne Modified over 9 years ago
1
Compiler Construction 1
2
Objectives Given a context-free grammar, G, and the grammar- independent functions for a recursive-descent parser, complete the recursive-descent parser by adding the grammar-dependent functions. Given naive intermediate code for a C loop, hand-optimize the code, reducing by at least 20% the number of intermediate code instructions needed while maintaining semantic correctness of the program. Define "register assignment" in the context of a compiler. Explain why register assignment is an important compiler optimization. 2
3
Compiler Tasks 3 Source Lexor Intermediate ParserOptimizer Tokens Intermediate Assembler or Binary or Source Code Generation
4
CFGs: Example Simplified description of English grammar: G = S NP VP NP N | Adj NP N car | dog Adj big | green VP V | V NP V is | eats Example derivation: S G NP VP G Adj NP VP G Adj N VP G Adj N V G Adj N eats G big N eats G big dog eats 4 Production form: LHS = variable. RHS = string of variables and/or terminals.
5
CFGs: Formal Definition G = (V, , P, S) V= variablesa finite set = alphabet or terminalsa finite set P= productionsa finite set S= start variableS V Productions ’ form, where A V, (V ) * : A 5
6
CFGs: Example 1 {a n b n | n 0} S | a S b Formally: G = ({S}, {a,b}, {S , S a S b}, S) 6
7
CFGs & CFLs: Example 2 all strings of balanced parentheses A core idea of most programming languages. 7 P | ( P ) | P P
8
CFGs: Example 2 Language of Assignment Statements P S P P S S id = E; E expressions (expressions left as “ exercise ” ) 8
9
Example Languages Set of strings over {a,b} with an even number of a ’ s Arithmetic expressions using +, *, /, -, (,) Assume that all operands are called “ id ” 9
10
Recursive Descent Parser Built from a context-free grammar Simple rules build recursive program Grammar independent part (see pdf file) Grammar dependent – Include a function for each non-terminal (lhs) – Generate code for each rule, left to right “ Call ” non-terminals “ Match ” terminals Use if statement to choose between multiple rules with the same lhs (non-terminal) symbol 10
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.