CPSC 411, 2015W Term 2 Midterm Exam Date: February 25, 2016; Instructor: Ron Garcia
|
|
- Janice Black
- 5 years ago
- Views:
Transcription
1 CPSC 411, 2015W Term 2 Midterm Exam Date: February 25, 2016; Instructor: Ron Garcia This is a closed book exam; no notes; no calculators. Answer in the space provided. There are 8 questions on 14 pages, totaling 100 marks. You have 80 minutes to complete the exam. NAME: STUDENT NUMBER: SIGNATURE: The following are the rules governing formal examinations: 1. Each candidate must be prepared to produce, upon request, a UBCcard for identification; 2. Candidates are not permitted to ask questions of the invigilators, except in cases of supposed errors or ambiguities in examination questions; 3. No candidate shall be permitted to enter the examination room after the expiration of one-half hour from the scheduled starting time, or to leave during the first half hour of the examination; 4. Candidates suspected of any of the following, or similar, dishonest practices shall be immediately dismissed from the examination and shall be liable to disciplinary action; Having at the place of writing any books, papers or memoranda, calculators, computers, sound or image players/recorders/transmitters (including telephones), or other memory aid devices, other than those authorized by the examiners; Speaking or communicating with other candidates; Purposely exposing written papers to the view of other candidates or imaging devices. The plea of accident or forgetfulness shall not be received; 5. Candidates must not destroy or mutilate any examination material; must hand in all examination papers; and must not take any examination material from the examination room without permission of the invigilator; and 6. Candidates must follow any additional examination rules or directions communicated by the instructor or invigilator.
2 1 /15 2 /20 3 /4 4 /12 5 /14 6 /10 7 /10 8 /15 Total /100 2
3 Use this page for extra space if needed. 3
4 1. (15 marks) High Level Concepts So far you have implemented 5 compiler stages. The initial input is a program represented as ASCII text characters. The final output is Linearized Intermediate Representation (Linearized IR). In the space below, in order from first to last, write the name of each stage and briefly describe what it does. Stage 1 Name: Input: String of ASCII characters Output: Description: Stage 2 Name: Input: Output: Description: Stage 3 Name: Input: Output: Description: Stage 4 Name: Input: Output: Description: Stage 5 Name: Input: Output: Linearized Intermediate Representation (Linearized IR) Description: 4
5 2. (20 marks) Visitors In lectures and in the book, we discussed at least two options for implementing routines that operate on recursive tree data structures like abstract syntax trees, intermediate representation trees, and other similar representations in an object-oriented language like Java. In all cases, we represent trees by using a class hierarchy of tree elements. In the method-based approach, operations are implemented using methods, and the code for a routine is spread throughout the class hierarchy. In the visitor-based approach, the routine is encapsulated in a subclass of a Visitor class that is designed to interact with all of the tree elements. Consider the following code for a small language of arithmetic and boolean expressions. It implements a type checker for the language using the method-based approach. Your job is to reimplement from scratch the class hierarchy and type checker using the visitor-based approach. The abstract Visitor class and the Type enumeration have been provided for you. Method-Based Approach: public enum Type {INT, BOOL public abstract class Expr { public abstract Type typeo f ( ) ; public class Num extends Expr { public f i n a l i n t n ; Num( i n t n ) { this. n = n ; public Type typeo f ( ) { return Type. INT ; public class Plus extends Expr { public f i n a l Expr l h s ; public f i n a l Expr rhs ; Plus ( Expr lhs, Expr rhs ) { this. l h s = l h s ; this. rhs = rhs ; public Type t y p e o f ( ) { i f ( l h s. typeof ( ) == Type. INT && rhs. t y p e o f ( ) == Type. INT ) { return Type. INT ; else { throw new E r r o r ( Type E r r o r ) ; public class Equal extends Expr { public f i n a l Expr l h s ; public f i n a l Expr rhs ; Equal ( Expr lhs, Expr rhs ) { this. l h s = l h s ; this. rhs = rhs ; public Type t y p e o f ( ) { i f ( l h s. typeof ( ) == Type. INT && rhs. t y p e o f ( ) == Type. INT ) { return Type.BOOL; else { throw new E r r o r ( Type E r r o r ) ; 5
6 Visitor-Based Approach: public enum Type {INT, BOOL public abstract class V i s i t o r <R> { public abstract R v i s i t ( Plus e ) ; public abstract R v i s i t ( Equal e ) ; public abstract R v i s i t (Num e ) ; Solution: 6
7 Use this page for extra space if needed. 7
8 3. (4 marks) Dispatch Circle one answer for each of the following questions: The Visitor pattern uses O to determine which implementation of the visit method to call within the concrete visitor class. Dynamic Dispatch Overloading The Visitor pattern uses O among the expression classes. to determine which implementation of the accept method to call Dynamic Dispatch Overloading 8
9 4. (12 marks) Parsing Consider the following grammar for a super-simple expression language: Exp ::= Exp "+" Term Term Term ::= Term "*" Factor Factor Factor ::= Identifier Number "(" Exp ")" Identifier ::= "a" "b"... "z" Number ::= "0" "1"... "9" For simplicity, we ignore whitespace, and treat single characters as the tokens of our language. This grammar represents all strings of tokens that count as legal programs in our language. Unfortunately, this grammar cannot directly be used as the basis for a predictive, top-down, recursivedescent parser (i.e. an LL(1) parser). Briefly explain what the problem is with this grammar, explain how to fix it, and provide a new grammar that represents the same strings and is an acceptable LL(1) grammar. If needed, use /* empty */ to mark any empty productions in your grammar. Problem: 9
10 5. (14 marks) Translation to IR Using the IR syntax provided in the appendix, write out plausible IR code that a hypothetical translator might produce. You may assume that the code is from a valid program and that any variables in the code are allocated to a TEMP of the same name (e.g. x TEMP(x) ) 1. sum = sum + i; 2. i = i + 1; 3. i = j < 7? ( i + 1) : ( i + 2); (with a completely strict evaluation strategy that evaluates both branches) 4. i = j < 7? ( i + 1) : ( i + 2); (with a lazy evaluation strategy that only evaluates what it must) 10
11 6. (10 marks) Canonicalization We have seen a technique to transform Intermediate Representation (IR) terms into a more manageable canonical form, where all sequencing is at the top-level and all function calls contain only simple arguments. The algorithm conceptually implements a set of rewriting rules that, among other things, eliminate ESEQ nodes from an IR tree. The rewriting rules in the book are a subset of the rules necessary to eliminate all ESEQs from expressions. Provide rewrites for each of the following IR expressions to eliminate the ESEQ expressions. In some cases, you can improve the rewrite if you know that underlying terms can commute. If that s the case, provide rewrites for both the commuting and non-commuting case and say explicitly which terms must commute to justify the rewrite. 1. MOVE(TEMP t, ESEQ(s, e)) 2. EXP(CALL(e0, ESEQ(s, e1), e2)) 11
12 7. (10 marks) True and false For each of the following statements, indicate whether it is true or false. Explain your answer briefly. 7a. (2 marks) Every language that can be defined by a grammar (in BNF notation) can also be defined by a regular expression. 7b. (2 marks) In a statically typed language commands do not need to be type checked. 7c. (2 marks) The intermediate representation we are using (IR trees) would be strictly less expressive if it did not have the ESEQ primitive. 7d. (2 marks) Whether one or two passes over the parse tree is required to determine whether identifiers are being properly used is primarily determined by the compiler, and not by the language being compiled. 7e. (2 marks) In the majority of statically typed languages, the type of an expression is determined both by the type of its sub-expressions and the context in which it appears. 12
13 8. (15 marks) Liveness Analysis Consider the following list of X86-like instructions, extended with temporaries. To help us with register allocation, we would like to determine the liveness of variables along the control flow. Recall that X86 instructions have the source location as the first argument and the destination location (which may also be a source location depending on the instruction) as the second argument. Compute the liveness of temporaries (and registers) along this list of instructions. Between each instruction, write the temporaries that are live along that edge. 1: movq $1, t1 2: movq $46, t2 3: movq t1, t3 4: addq $7, t3 5: movq t3, t4 6: addq $4, t4 7: movq t3, t5 8: addq t2, t5 9: movq t5, %rax 10: subq t4, %rax 13
14 APPENDIX: IR Tree Syntax Items between /*..*/ are comments indicating the purpose of an element. They are not part of the actual syntax. E.g MOVE contains two sub expressions, the first one is the destination. Exp,* should be taken to mean a list of expressions separated by commas. Exp ::= CONST( int ) NAME( Label ) TEMP( Temp ) BINOP( Op, Exp, Exp) MEM(Exp) CALL( Exp /*fun*/, Exp,* /*args*/) ESEQ( Stm, Exp ) Stm ::= MOVE(Exp /*dst*/, Exp /*src*/) EXP(Exp) JUMP(Label) CJUMP(RelOp, Exp, Exp, Label /*thn*/, Label /*els*/) SEQ( Stm, Stm) LABEL( Label ) Op ::= PLUS, MINUS, MUL, DIV, AND, OR, LSHIFT,... RelOp ::= EQ, NE, LT, GT, LE, GE, ULT, ULE,... Label ::= <IDENTIFIER> TEMP ::= <IDENTIFIER> To make IR code more readable, it is acceptable to use SEQ(s1, s2, s3,..., sn) as shorthand for SEQ(s1, SEQ(s2, SEQ(s3,..., sn)))) Use meaningful formatting and indentation conventions to make the tree/nesting structure of the IR clear. For example: ESEQ( SEQ( MOVE(TEMP(x), CONST(0)), MOVE(TEMP(y), CALL(NAME(dothings), TEMP(y)) TEMP(x), CONST(5)))), 14
CPSC 411, Fall 2010 Midterm Examination
CPSC 411, Fall 2010 Midterm Examination. Page 1 of 11 CPSC 411, Fall 2010 Midterm Examination Name: Q1: 10 Q2: 15 Q3: 15 Q4: 10 Q5: 10 60 Please do not open this exam until you are told to do so. But please
More informationCPSC 311, 2010W1 Midterm Exam #2
CPSC 311, 2010W1 Midterm Exam #2 2010/11/02 Page 1 of 18 CPSC 311, 2010W1 Midterm Exam #2 Name: Q1: 20 Student ID: Q2: 20 Signature (required; indicates agreement with rules below): Q3: 20 Q4: 20 Q5: 20
More informationQuestion Marks 1 /20 2 /16 3 /7 4 /10 5 /16 6 /7 7 /24 Total /100
CSC 460/660, Midterm March 14, 2005 Name: Student ID: Signature: You have 75 minutes to write the 7 questions on this examination. A total of 100 marks is available. Justify all of your answers You may
More informationUNIVERSITY REGULATIONS
CPSC 221: Algorithms and Data Structures Midterm Exam, 2013 February 15 Name: Student ID: Signature: Section (circle one): MWF(201) TTh(202) You have 60 minutes to solve the 5 problems on this exam. A
More informationAnnouncements. Project 2: released due this sunday! Midterm date is now set: check newsgroup / website. Chapter 7: Translation to IR
Announcements Project 2: released due this sunday! Midterm date is now set: check newsgroup / website. 1 Translation to Intermediate Code (Chapter 7) This stage converts an AST into an intermediate representation.
More informationThe University of British Columbia Final Examination - December 02, 2014 Mathematics 308. Closed book examination. No calculators.
The University of British Columbia Final Examination - December 02, 2014 Mathematics 308 Closed book examination. No calculators. Time: 2.5 hours Last Name First Signature Student Number No books, notes,
More informationQuestion Marks 1 /11 2 /4 3 /13 4 /5 5 /11 6 /14 7 /32 8 /6 9 /11 10 /10 Total /117
CSC 326, Midterm November 3, 2005 Name: Student ID: Signature: You have 75 minutes to write the 10 questions on this examination. A total of 117 marks is available. Justify all of your answers You may
More informationQuestion Marks 1 /16 2 /13 3 /12 4 /15 5 /8 6 /15 7 /8 8 /5 9 /8 Total /100
CSC 460/660, Midterm March 22, 2006 Name: Student ID: Signature: You have 75 minutes to write the 9 questions on this examination. A total of 100 marks is available. Justify all of your answers You may
More informationUNIVERSITY REGULATIONS
CPSC 221: Algorithms and Data Structures Midterm Exam, 2015 October 21 Name: Student ID: Signature: Section (circle one): MWF(101) TTh(102) You have 90 minutes to solve the 8 problems on this exam. A total
More informationQuestion Marks 1 /12 2 /6 3 /14 4 /8 5 /5 6 /16 7 /34 8 /25 Total /120
CSC 326, Midterm October 25, 2004 Name: Student ID: Signature: You have 75 minutes to write the 8 questions on this examination. A total of 120 marks is available. Justify all of your answers You may use
More informationAdministration. Today
Announcements Administration Office hour today changed to 3:30 4:30 Class is cancelled next Monday I have to attend a Senate Curriculum Committee meeting Project Build a Functions compiler from the Expressions
More informationCPSC 320 Midterm 2. July 13, 2007
CPSC 0 Midterm July, 007 Name: Student ID: Signature: You have hour to write the 5 questions on this examination. A total of 0 marks are available. Justify all of your answers. Keep your answers short.
More informationCS 411 Midterm Feb 2008
CS 411 Midterm Feb 2008 Exam number: P1: / 9 P4: / 10 P2: / 4 P5: / 9 Student Name: P3: / 7 P6: / 8 P7: / 8 SUBTOTALS: / 20 / 35 Student ID number: TOTAL: / 55 READ THIS CAREFULLY BEFORE PROCEEDING DO
More informationCPSC 121 Midterm 1 Friday October 14th, Signature: Section (circle one): 11:00 15:30 17:00
CPSC 121 Midterm 1 Friday October 14th, 2016 Name: Student ID: Signature: Section (circle one): 11:00 15:30 17:00 You have 70 minutes to write the 9 questions on this examination. A total of 60 marks are
More informationFull Name: CS Account:
THE UNIVERSITY OF BRITISH COLUMBIA CPSC 313: QUIZ 4 October 31, 2018 Full Name: CS Account: Signature: UBC Student #: Important notes about this examination 1. Write your 4 or 5 character CS account both
More informationTHE UNIVERSITY OF BRITISH COLUMBIA CPSC 261: MIDTERM 1 February 14, 2017
THE UNIVERSITY OF BRITISH COLUMBIA CPSC 261: MIDTERM 1 February 14, 2017 Last Name: First Name: Signature: UBC Student #: Important notes about this examination 1. You have 70 minutes to write the 6 questions
More informationCPSC 121 Some Sample Questions for the Final Exam Tuesday, April 15, 2014, 8:30AM
CPSC 121 Some Sample Questions for the Final Exam Tuesday, April 15, 2014, 8:30AM Name: Student ID: Signature: Section (circle one): George Steve Your signature acknowledges your understanding of and agreement
More informationTHE UNIVERSITY OF BRITISH COLUMBIA CPSC 110: MIDTERM 1 Part B May 26, Important notes about this examination
THE UNIVERSITY OF BRITISH COLUMBIA CPSC 110: MIDTERM 1 Part B May 26, 2014 Last Name: First Name: Signature: UBC Student #: Important notes about this examination 1. This exam has two separate parts. Your
More informationMARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #1 Examination 12:30 noon, Tuesday, February 14, 2012
MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #1 Examination 12:30 noon, Tuesday, February 14, 2012 Instructor: K. S. Booth Time: 70 minutes (one hour ten minutes)
More informationCPSC 121 Sample Final Examination December 2013
CPSC 121 Sample Final Examination December 2013 Name: Student ID: Signature: You have 150 minutes to write the 11 questions on this examination. A total of 98 marks are available. Justify all of your answers.
More informationMARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012
MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012 Instructor: K. S. Booth Time: 70 minutes (one hour ten minutes)
More informationCPSC 311, 2011W1 Midterm Exam #2 2011/11/09
CPSC 311, 2011W1 Midterm Exam #2 Page 1 of 18 CPSC 311, 2011W1 Midterm Exam #2 2011/11/09 Name: Sample Solution Student ID: Signature (required; indicates agreement with rules below): Q1: 20 Q2: 20 Q3:
More informationThe University of Oregon May 16, 2015 Oregon Invitational Mathematics Tournament:
The University of Oregon May 16, 2015 Oregon Invitational Mathematics Tournament: losed book examination Geometry Exam Time: 90 minutes Last Name First Name School Grade (please circle one): 7 8 9 10 11
More informationCompilers. Compiler Construction Tutorial The Front-end
Compilers Compiler Construction Tutorial The Front-end Salahaddin University College of Engineering Software Engineering Department 2011-2012 Amanj Sherwany http://www.amanj.me/wiki/doku.php?id=teaching:su:compilers
More informationEXAMINATION INSTRUCTIONS
EXAMINATION INSTRUCTIONS This examination has 6 pages. Check that you have a complete paper. Each candidate should be prepared to produce, upon request, his or her SUNY/UB card. This examination has 5
More informationEXAMINATION INSTRUCTIONS
Midterm exam SAMPLE CSE115 Computer Science I Fall 2018 EXAMINATION INSTRUCTIONS This examination has 9 pages. Check that you have a complete paper. Each candidate should be prepared to produce, upon request,
More informationThis examination has 11 pages. Check that you have a complete paper.
MARKING KEY The University of British Columbia MARKING KEY Computer Science 252 2nd Midterm Exam 6:30 PM, Monday, November 8, 2004 Instructors: K. Booth & N. Hutchinson Time: 90 minutes Total marks: 90
More informationEXAMINATION INSTRUCTIONS
EXAMINATION INSTRUCTIONS This examination has 6 pages. Check that you have a complete paper. Each candidate should be prepared to produce, upon request, his or her SUNY/UB card. This examination has 5
More informationTHE UNIVERSITY OF BRITISH COLUMBIA CPSC 121: MIDTERM 2 Group March 12, 2014
THE UNIVERSITY OF BRITISH COLUMBIA CPSC 121: MIDTERM 2 Group March 12, 2014 Important notes about this examination 1. You have 40 minutes to complete this exam. 2. No electronic aides (e.g., phones or
More informationCPSC 121 Midterm 1 Friday February 5th, Signature: Section (circle one): Morning Afternoon
CPSC 121 Midterm 1 Friday February 5th, 2016 Name: Student ID: Signature: Section (circle one): Morning Afternoon You have 70 minutes to write the 8 questions on this examination. A total of 60 marks are
More informationWe ve written these as a grammar, but the grammar also stands for an abstract syntax tree representation of the IR.
CS 4120 Lecture 14 Syntax-directed translation 26 September 2011 Lecturer: Andrew Myers We want to translate from a high-level programming into an intermediate representation (IR). This lecture introduces
More informationExamination in Compilers, EDAN65
Examination in Compilers, EDAN65 Department of Computer Science, Lund University 2016 10 28, 08.00-13.00 Note! Your exam will be marked only if you have completed all six programming lab assignments in
More informationThe University of Oregon May 16, 2015 Oregon Invitational Mathematics Tournament:
The University of Oregon May 16, 015 Oregon Invitational Mathematics Tournament: losed book examination Geometry xam Time: 90 minutes Last Name First Name School Grade (please circle one): 7 8 9 10 11
More information1 Lexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout Decaf Language Thursday, Feb 7 The project for the course is to write a compiler
More information7 Translation to Intermediate Code
7 Translation to Intermediate Code ( 7. Translation to Intermediate Code, p. 150) This chpater marks the transition from the source program analysis phase to the target program synthesis phase. All static
More informationCompiler Internals. Reminders. Course infrastructure. Registering for the course
Compiler Internals 15-745 Optimizing Compilers Spring 2006 Peter Lee Reminders Get on the course mailing list Check out the web site http://www.cs.cmu.edu/afs/cs/ academic/class/15745-s06/web subscribe
More informationLexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 6 Decaf Language Wednesday, September 7 The project for the course is to write a
More informationIntermediate Representations
Intermediate Representations A variety of intermediate representations are used in compilers Most common intermediate representations are: Abstract Syntax Tree Directed Acyclic Graph (DAG) Three-Address
More informationParsing II Top-down parsing. Comp 412
COMP 412 FALL 2018 Parsing II Top-down parsing Comp 412 source code IR Front End Optimizer Back End IR target code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved. Students enrolled
More informationLexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2010 Handout Decaf Language Tuesday, Feb 2 The project for the course is to write a compiler
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 informationCIS 341 Midterm February 28, Name (printed): Pennkey (login id): SOLUTIONS
CIS 341 Midterm February 28, 2013 Name (printed): Pennkey (login id): My signature below certifies that I have complied with the University of Pennsylvania s Code of Academic Integrity in completing this
More informationCPSC 410 Advanced Software Engineering Mid-term Examination (Term I ): Solution Instructor: Gail Murphy
CPSC 410 Advanced Software Engineering Mid-term Examination (Term I 2003-2004): Solution Instructor: Gail Murphy Do NOT start until you are informed you can start! This examination has 6 questions. The
More informationWhere we are. What makes a good IR? Intermediate Code. CS 4120 Introduction to Compilers
Where we are CS 4120 Introduction to Compilers Andrew Myers Cornell University Lecture 13: Intermediate Code 25 Sep 09 Source code (character stream) Token stream Abstract syntax tree Abstract syntax tree
More informationTopic 3: Syntax Analysis I
Topic 3: Syntax Analysis I Compiler Design Prof. Hanjun Kim CoreLab (Compiler Research Lab) POSTECH 1 Back-End Front-End The Front End Source Program Lexical Analysis Syntax Analysis Semantic Analysis
More informationEXAMINATION INSTRUCTIONS
Midterm exam CSE5/503 Computer Science I Spring 209 EXAMINATION INSTRUCTIONS This examination has 9 pages. If your copy is missing a page, let one of the course staff know. Before starting this test, students
More informationProjects for Compilers
Projects for Compilers 1. Project One: Lexical Analysis (Required) (1) Directions Implement a transition-diagram-based lexical analysis for the programming language TINY. (2) Outputs Source code (implemented
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 informationCS164: Midterm I. Fall 2003
CS164: Midterm I Fall 2003 Please read all instructions (including these) carefully. Write your name, login, and circle the time of your section. Read each question carefully and think about what s being
More informationMATH 253/101,102,103,105 Page 1 of 12 Student-No.:
MATH 253/101,102,103,105 Page 1 of 12 Student-No.: Final Examination December 16, 2015 Duration: 2.5 hours This test has 10 questions on 12 pages, for a total of 80 points. Dr. G. Slade, Dr. C. Macdonald,
More informationCS 132 Compiler Construction
CS 132 Compiler Construction 1. Introduction 2 2. Lexical analysis 31 3. LL parsing 58 4. LR parsing 110 5. JavaCC and JTB 127 6. Semantic analysis 150 7. Translation and simplification 165 8. Liveness
More informationComputer Science 304
The University of British Columbia Computer Science 304 Final Examination Instructor: Rachel Pottinger Time: 2.5 hours Total marks: 48 Name ANSWER KEY (PRINT) (Last) (First) Signature This examination
More informationCMSC 330: Organization of Programming Languages. Formal Semantics of a Prog. Lang. Specifying Syntax, Semantics
Recall Architecture of Compilers, Interpreters CMSC 330: Organization of Programming Languages Source Scanner Parser Static Analyzer Operational Semantics Intermediate Representation Front End Back End
More informationUNIVERSITY REGULATIONS
CPSC 101: Connecting with Computer Science Sample Final Exam, December 2012 Name: Student ID: Signature: You have 150 minutes to solve the 9 problems on this exam. A total of 100 marks is available. You
More informationCSE P 501 Exam 8/5/04
Name There are 7 questions worth a total of 65 points. Please budget your time so you get to all of the questions. Keep your answers brief and to the point. You may refer to the following references: Course
More informationAn Introduction to Functions
Chapter 4 An Introduction to Functions Through the agency of with, we have added identifiers and the ability to name expressions to the language. Much of the time, though, simply being able to name an
More informationLECTURE 3. Compiler Phases
LECTURE 3 Compiler Phases COMPILER PHASES Compilation of a program proceeds through a fixed series of phases. Each phase uses an (intermediate) form of the program produced by an earlier phase. Subsequent
More informationThe University of British Columbia Computer Science 304 Practice Final Examination
The University of British Columbia Computer Science 304 Practice Final Examination Instructor: Time: 2.5 hours Total marks: 100 Name (PRINT) (Last) (First) Signature This examination has 13 pages. Check
More informationDEMO A Language for Practice Implementation Comp 506, Spring 2018
DEMO A Language for Practice Implementation Comp 506, Spring 2018 1 Purpose This document describes the Demo programming language. Demo was invented for instructional purposes; it has no real use aside
More informationContext-free grammars (CFG s)
Syntax Analysis/Parsing Purpose: determine if tokens have the right form for the language (right syntactic structure) stream of tokens abstract syntax tree (AST) AST: captures hierarchical structure of
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 informationCPSC 411: Introduction to Compiler Construction
CPSC 411: to Compiler Construction Kris De Volder kdvolder@cs.ubc.ca http://www.ugrad.cs.ubc.ca/~cs411/ 1 This Lecture Course Organization and Policies Website Newsgroup Assignments General Information
More informationComp 311: Sample Midterm Examination
Comp 311: Sample Midterm Examination October 29, 2007 Name: Id #: Instructions 1. The examination is closed book. If you forget the name for a Scheme operation, make up a name for it and write a brief
More informationTopic 7: Intermediate Representations
Topic 7: Intermediate Representations COS 320 Compiling Techniques Princeton University Spring 2016 Lennart Beringer 1 2 Intermediate Representations 3 Intermediate Representations 4 Intermediate Representations
More informationTypes and Static Type Checking (Introducing Micro-Haskell)
Types and Static (Introducing Micro-Haskell) Informatics 2A: Lecture 13 Alex Simpson School of Informatics University of Edinburgh als@inf.ed.ac.uk 16 October, 2012 1 / 21 1 Types 2 3 4 2 / 21 Thus far
More informationCS 164 Handout 11. Midterm Examination. There are seven questions on the exam, each worth between 10 and 20 points.
Midterm Examination Please read all instructions (including these) carefully. Please print your name at the bottom of each page on the exam. There are seven questions on the exam, each worth between 10
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 informationProgram Analysis ( 软件源代码分析技术 ) ZHENG LI ( 李征 )
Program Analysis ( 软件源代码分析技术 ) ZHENG LI ( 李征 ) lizheng@mail.buct.edu.cn Lexical and Syntax Analysis Topic Covered Today Compilation Lexical Analysis Semantic Analysis Compilation Translating from high-level
More informationCompilers - Chapter 2: An introduction to syntax analysis (and a complete toy compiler)
Compilers - Chapter 2: An introduction to syntax analysis (and a complete toy compiler) Lecturers: Paul Kelly (phjk@doc.ic.ac.uk) Office: room 304, William Penney Building Naranker Dulay (nd@doc.ic.ac.uk)
More informationCS 4240: Compilers and Interpreters Project Phase 1: Scanner and Parser Due Date: October 4 th 2015 (11:59 pm) (via T-square)
CS 4240: Compilers and Interpreters Project Phase 1: Scanner and Parser Due Date: October 4 th 2015 (11:59 pm) (via T-square) Introduction This semester, through a project split into 3 phases, we are going
More informationSyntax Analysis/Parsing. Context-free grammars (CFG s) Context-free grammars vs. Regular Expressions. BNF description of PL/0 syntax
Susan Eggers 1 CSE 401 Syntax Analysis/Parsing Context-free grammars (CFG s) Purpose: determine if tokens have the right form for the language (right syntactic structure) stream of tokens abstract syntax
More informationTypes and Static Type Checking (Introducing Micro-Haskell)
Types and Static (Introducing Micro-Haskell) Informatics 2A: Lecture 14 John Longley School of Informatics University of Edinburgh jrl@inf.ed.ac.uk 17 October 2017 1 / 21 1 Types 2 3 4 2 / 21 So far in
More informationCompilation 2013 Translation to IR
Compilation 2013 Erik Ernst Aarhus University Intermediate Representation Translation source/target uses IR as a bridge Simplification: n+m combinations, not n m Java SML Pascal C C++ SPARC MIPS Pentium
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 informationChapter 3: Describing Syntax and Semantics. Introduction Formal methods of describing syntax (BNF)
Chapter 3: Describing Syntax and Semantics Introduction Formal methods of describing syntax (BNF) We can analyze syntax of a computer program on two levels: 1. Lexical level 2. Syntactic level Lexical
More informationSyntax and Grammars 1 / 21
Syntax and Grammars 1 / 21 Outline What is a language? Abstract syntax and grammars Abstract syntax vs. concrete syntax Encoding grammars as Haskell data types What is a language? 2 / 21 What is a language?
More informationEXAMINATION INSTRUCTIONS
Midterm exam CSE115/503 Computer Science I Spring 2019 EXAMINATION INSTRUCTIONS This examination has 9 pages. If your copy is missing a page, let one of the course staff know. Before starting this test,
More informationName EID. (calc (parse '{+ {with {x {+ 5 5}} {with {y {- x 3}} {+ y y} } } z } ) )
CS 345 Spring 2010 Midterm Exam Name EID 1. [4 Points] Circle the binding instances in the following expression: (calc (parse '+ with x + 5 5 with y - x 3 + y y z ) ) 2. [7 Points] Using the following
More informationItree Stmts and Exprs. Back-End Code Generation. Summary: IR -> Machine Code. Side-Effects
Back-End Code Generation Given a list of itree fragments, how to generate the corresponding assembly code? datatype frag = PROC of {name : Tree.label, function name body : Tree.stm, function body itree
More informationASTs, Objective CAML, and Ocamlyacc
ASTs, Objective CAML, and Ocamlyacc Stephen A. Edwards Columbia University Fall 2012 Parsing and Syntax Trees Parsing decides if the program is part of the language. Not that useful: we want more than
More informationSyntax Analysis, III Comp 412
Updated algorithm for removal of indirect left recursion to match EaC3e (3/2018) COMP 412 FALL 2018 Midterm Exam: Thursday October 18, 7PM Herzstein Amphitheater Syntax Analysis, III Comp 412 source code
More informationDecaf Language Reference Manual
Decaf Language Reference Manual C. R. Ramakrishnan Department of Computer Science SUNY at Stony Brook Stony Brook, NY 11794-4400 cram@cs.stonybrook.edu February 12, 2012 Decaf is a small object oriented
More informationCPS 506 Comparative Programming Languages. Syntax Specification
CPS 506 Comparative Programming Languages Syntax Specification Compiling Process Steps Program Lexical Analysis Convert characters into a stream of tokens Lexical Analysis Syntactic Analysis Send tokens
More informationUNIVERSITY OF TORONTO Faculty of Arts and Science. Midterm Sample Solutions CSC324H1 Duration: 50 minutes Instructor(s): David Liu.
UNIVERSITY OF TORONTO Faculty of Arts and Science Midterm Sample s CSC324H1 Duration: 50 minutes Instructor(s): David Liu. No Aids Allowed Name: Student Number: Please read the following guidelines carefully.
More informationCOP4020 Programming Languages. Syntax Prof. Robert van Engelen
COP4020 Programming Languages Syntax Prof. Robert van Engelen Overview Tokens and regular expressions Syntax and context-free grammars Grammar derivations More about parse trees Top-down and bottom-up
More informationCPSC 410? Advanced Software Engineering Mid-term Examination (Term I ) SOLUTION Instructor: Gail Murphy
CPSC 410? Advanced Software Engineering Mid-term Examination (Term I 2001-2002) SOLUTION Instructor: Gail Murphy Do NOT start until you are informed you can start! This examination has 7 questions. The
More informationLecture 2: Big-Step Semantics
Lecture 2: Big-Step Semantics 1 Representing Abstract Syntax These are examples of arithmetic expressions: 2 * 4 1 + 2 + 3 5 * 4 * 2 1 + 2 * 3 We all know how to evaluate these expressions in our heads.
More informationPrinciples of Programming Languages
Principles of Programming Languages Lesson 14 Type Checking Collaboration and Management Dana Fisman www.cs.bgu.ac.il/~ppl172 1 Type Checking We return to the issue of type safety we discussed informally,
More informationFirst Midterm Exam CS164, Fall 2007 Oct 2, 2007
P a g e 1 First Midterm Exam CS164, Fall 2007 Oct 2, 2007 Please read all instructions (including these) carefully. Write your name, login, and SID. No electronic devices are allowed, including cell phones
More informationParsing. Note by Baris Aktemur: Our slides are adapted from Cooper and Torczon s slides that they prepared for COMP 412 at Rice.
Parsing Note by Baris Aktemur: Our slides are adapted from Cooper and Torczon s slides that they prepared for COMP 412 at Rice. Copyright 2010, Keith D. Cooper & Linda Torczon, all rights reserved. Students
More informationCompiler Construction
Compiler Construction Important facts: Name: Prof. Dr. Peter Thiemann Email: thiemann@informatik.uni-freiburg.de Office: 079-00-015 Exercises: Name: Dipl.-Inform. Manuel Geffken Email: geffken@informatik.uni-freiburg.de
More informationFundamentals of Compilation
PART ONE Fundamentals of Compilation 1 Introduction A compiler was originally a program that compiled subroutines [a link-loader]. When in 1954 the combination algebraic compiler came into use, or rather
More informationQuestion Points Score
CS 453 Introduction to Compilers Midterm Examination Spring 2009 March 12, 2009 75 minutes (maximum) Closed Book You may use one side of one sheet (8.5x11) of paper with any notes you like. This exam has
More informationLexical and Syntax Analysis. Top-Down Parsing
Lexical and Syntax Analysis Top-Down Parsing Easy for humans to write and understand String of characters Lexemes identified String of tokens Easy for programs to transform Data structure Syntax A syntax
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 informationUNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division. P. N. Hilfinger
UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division CS 164 Spring 1999 P. N. Hilfinger CS 164: Final Examination Name: Login: Please do not discuss
More informationPART ONE Fundamentals of Compilation
PART ONE Fundamentals of Compilation 1 Introduction A compiler was originally a program that compiled subroutines [a link-loader]. When in 1954the combination algebraic compiler came into use, or rather
More informationChapter 2 A Quick Tour
Chapter 2 A Quick Tour 2.1 The Compiler Toolchain A compiler is one component in a toolchain of programs used to create executables from source code. Typically, when you invoke a single command to compile
More informationSMURF Language Reference Manual Serial MUsic Represented as Functions
SMURF Language Reference Manual Serial MUsic Represented as Functions Richard Townsend, Lianne Lairmore, Lindsay Neubauer, Van Bui, Kuangya Zhai {rt2515, lel2143, lan2135, vb2363, kz2219}@columbia.edu
More informationCS251 Programming Languages Handout # 29 Prof. Lyn Turbak March 7, 2007 Wellesley College
CS5 Programming Languages Handout # 9 Prof. Lyn Turbak March, 00 Wellesley College Postfix: A Simple Stack Language Several exercises and examples in this course will involve the Postfix mini-language.
More information