UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division. P. N. Hilfinger.

Similar documents
CS 164, Spring 2010 CS 164: Test #1 Solutions P. N. Hilfinger DO NOT. Copyright (c) 2010 by P. N. Hilfinger. Copying and reproduction prohibited.

UNIVERSITY OF CALIFORNIA

UNIVERSITY 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. P. N. Hilfinger

UNIVERSITY 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. P. N. Hilfinger

CS164: Midterm I. Fall 2003

Syntax-Directed Translation. Lecture 14

Introduction to Lexing and Parsing

8 Parsing. Parsing. Top Down Parsing Methods. Parsing complexity. Top down vs. bottom up parsing. Top down vs. bottom up parsing

Examples of attributes: values of evaluated subtrees, type information, source file coordinates,

Syntax Errors; Static Semantics

CSE 3302 Programming Languages Lecture 2: Syntax

Question Points Score

Review main idea syntax-directed evaluation and translation. Recall syntax-directed interpretation in recursive descent parsers

Syntax/semantics. Program <> program execution Compiler/interpreter Syntax Grammars Syntax diagrams Automata/State Machines Scanning/Parsing

CS Exam #1-100 points Spring 2011

CSCI312 Principles of Programming Languages!

Lecture 6: Top-Down Parsing. Beating Grammars into Programs. Expression Recognizer with Actions. Example: Lisp Expression Recognizer

Midterm I - Solution CS164, Spring 2014

Downloaded from Page 1. LR Parsing

RYERSON POLYTECHNIC UNIVERSITY DEPARTMENT OF MATH, PHYSICS, AND COMPUTER SCIENCE CPS 710 FINAL EXAM FALL 96 INSTRUCTIONS

Syntax. In Text: Chapter 3

CSE P 501 Exam 11/17/05 Sample Solution

Recursive Descent Parsers

Structure of Programming Languages Lecture 3

Review of CFGs and Parsing II Bottom-up Parsers. Lecture 5. Review slides 1

Lecture 8: Deterministic Bottom-Up Parsing

MidTerm Papers Solved MCQS with Reference (1 to 22 lectures)

Part 5 Program Analysis Principles and Techniques

Lexical Analysis. Lecture 2-4

Lecture 7: Deterministic Bottom-Up Parsing

1. Consider the following program in a PCAT-like language.

flex is not a bad tool to use for doing modest text transformations and for programs that collect statistics on input.

Theory and Compiling COMP360

CSE302: Compiler Design

Static Semantics. Lecture 15. (Notes by P. N. Hilfinger and R. Bodik) 2/29/08 Prof. Hilfinger, CS164 Lecture 15 1

CS143 Handout 20 Summer 2012 July 18 th, 2012 Practice CS143 Midterm Exam. (signed)

Theoretical Part. Chapter one:- - What are the Phases of compiler? Answer:

Today. Assignments. Lecture Notes CPSC 326 (Spring 2019) Quiz 2. Lexer design. Syntax Analysis: Context-Free Grammars. HW2 (out, due Tues)

programming languages need to be precise a regular expression is one of the following: tokens are the building blocks of programs

LECTURE 3. Compiler Phases

CSE450 Translation of Programming Languages. Lecture 4: Syntax Analysis

Derivations vs Parses. Example. Parse Tree. Ambiguity. Different Parse Trees. Context Free Grammars 9/18/2012

LL(k) Parsing. Predictive Parsers. LL(k) Parser Structure. Sample Parse Table. LL(1) Parsing Algorithm. Push RHS in Reverse Order 10/17/2012

Bottom-Up Parsing. Lecture 11-12

Parsing #1. Leonidas Fegaras. CSE 5317/4305 L3: Parsing #1 1

CSE 401 Midterm Exam 11/5/10

Top down vs. bottom up parsing

Parsing Techniques. CS152. Chris Pollett. Sep. 24, 2008.

CS664 Compiler Theory and Design LIU 1 of 16 ANTLR. Christopher League* 17 February Figure 1: ANTLR plugin installer

CS143 Midterm Fall 2008

EECS 6083 Intro to Parsing Context Free Grammars

CSE 401 Midterm Exam Sample Solution 2/11/15

CS 4120 Introduction to Compilers

Context-Free Grammar. Concepts Introduced in Chapter 2. Parse Trees. Example Grammar and Derivation

Lexical Analysis. COMP 524, Spring 2014 Bryan Ward

Lexical Analysis. Introduction

Compiling Regular Expressions COMP360

1 Lexical Considerations

Chapter 3. Parsing #1

11. a b c d e. 12. a b c d e. 13. a b c d e. 14. a b c d e. 15. a b c d e

COP 3402 Systems Software Syntax Analysis (Parser)

Syntactic Analysis. CS345H: Programming Languages. Lecture 3: Lexical Analysis. Outline. Lexical Analysis. What is a Token? Tokens

First Midterm Exam CS164, Fall 2007 Oct 2, 2007

Chapter 3: Describing Syntax and Semantics. Introduction Formal methods of describing syntax (BNF)

Lexical Analysis. Lecture 3-4

CS 406: Syntax Directed Translation

CSE 130 Programming Language Principles & Paradigms Lecture # 5. Chapter 4 Lexical and Syntax Analysis

Programming Language Syntax and Analysis

UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division. P. N. Hilfinger.

CS415 Compilers. Syntax Analysis. These slides are based on slides copyrighted by Keith Cooper, Ken Kennedy & Linda Torczon at Rice University

CS 164 Programming Languages and Compilers Handout 8. Midterm I

CSE431 Translation of Computer Languages

CS143 Handout 20 Summer 2011 July 15 th, 2011 CS143 Practice Midterm and Solution

Introduction to Parsing. Lecture 8

Lexical Scanning COMP360

CSCI Compiler Design

A simple syntax-directed

COL728 Minor1 Exam Compiler Design Sem II, Answer all 5 questions Max. Marks: 20

CS143 Midterm Spring 2014

CS164: Programming Assignment 2 Dlex Lexer Generator and Decaf Lexer

CS 314 Principles of Programming Languages

COMPILER CONSTRUCTION LAB 2 THE SYMBOL TABLE. Tutorial 2 LABS. PHASES OF A COMPILER Source Program. Lab 2 Symbol table

CS Lecture 2. The Front End. Lecture 2 Lexical Analysis

Compilers. Computer Science 431

Homework. Lecture 7: Parsers & Lambda Calculus. Rewrite Grammar. Problems

Principles of Programming Languages COMP251: Syntax and Grammars

MIT Specifying Languages with Regular Expressions and Context-Free Grammars. Martin Rinard Massachusetts Institute of Technology

MIT Specifying Languages with Regular Expressions and Context-Free Grammars

CMPS Programming Languages. Dr. Chengwei Lei CEECS California State University, Bakersfield

MASSACHUSETTS INSTITUTE OF TECHNOLOGY Fall Test I

COP4020 Spring 2011 Midterm Exam

CPS 506 Comparative Programming Languages. Syntax Specification

UNIVERSITY OF EDINBURGH COLLEGE OF SCIENCE AND ENGINEERING SCHOOL OF INFORMATICS INFR08008 INFORMATICS 2A: PROCESSING FORMAL AND NATURAL LANGUAGES

Midterm I (Solutions) CS164, Spring 2002

COLLEGE OF ENGINEERING, NASHIK. LANGUAGE TRANSLATOR

Building a Parser III. CS164 3:30-5:00 TT 10 Evans. Prof. Bodik CS 164 Lecture 6 1

Syntax. 2.1 Terminology

Chapter 3. Describing Syntax and Semantics ISBN

Transcription:

UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division CS 164 Spring 2010 P. N. Hilfinger CS 164: Test #1 Name: Login: You have one hour and twenty minutes to complete this test. Please put your login on each sheet, as indicated, in case pages get separated. Answer all questions in the space provided on the exam paper. Show all work (but be sure to indicate your answers clearly.) The exam is worth a total of 20+ points (out of the total of 200), distributed as indicated on the individual questions. You may use any notes or books you please anything unresponsive. We suggest that you read all questions before trying to answer any of them and work first on those about which you feel most confident. You should have 8 problems on 8 pages. 1. /2 5. / 2. /1 6. /5 3. /1 7. /4 4. /3 8. /4 TOT /20 1

Login: 2 1. [2 points] Consider the following very simple grammar: p : s s : /* Empty */ s : ( s ) Suppose that we have a shift-reduce parser for this grammar. Write a regular expression that describes the possible contents of the parsing stack just after a shift or reduce. 2. [1 point] I have a language implementation that involves a Flex lexer. A new revision of the language standard requires me to double the number of different kinds of token returned by the lexer. What effect will this have on the lexer s speed and why? (Assume that both new and old lexer action rules (the things in curly braces) all take about the same time to execute.) 3. [1 point] From a given grammar, I am able to produce two different derivations of a certain string, S. Under what circumstances would this indicate that the grammar is ambiguous?

Login: 3 4. [3 points] An elevator travels back and forth between two floors. We can describe its operation in the abstract as a sequence of events. It receives a command (C) to move up or down to the other floor, it starts moving up (U) or down (D), and it arrives at the other floor (A), after which the cycle can repeat. After the elevator starts moving and before it arrives, it can receive a command (C) to return to the floor it just came from, in which case it will start back in the opposite direction after it arrives (A) at the floor it s going to. So in the abstract, we can describe a day on the elevator with a sequence of letters from the alphabet {A,C,D,U}. Design a DFA that recognizes the legal sequences of events, assuming that the elevator starts on the lower floor (motionless), and ends on either floor with no commands pending. Ignore the possibility of redundant commands (receiving two C s that command the same thing before finishing the first). For example, CUCADACUA is valid, but UDA, CUUA, CUCA, and CCUA are not.

Login: 4 5. [1 point] What is the name of the dealer you d go to for...answers oracular, Bogies spectacular, Tetrapods tragical, Mirrors so magical, Facts astronomical, Solemn or comical,...? 6. [5 points] The following grammar describes the structure of a tree-like specification language: spec : block block : TAG ID attrs kids attrs : /* EMPTY */ attr attrs kids : /* EMPTY */ BEGIN blocklist blocklist : END block blocklist attr : ID = NUM Upper-case names and quoted symbols denote terminal symbols (returned by the lexer). Assume the following are already implemented: # The syntactic category of the next token (ID, BEGIN, END, =, etc.). def peek():... # If token is not None, check that peek() == token. Then discard the # current value of peek() and replace it with the next token in the input. # Indicate an error if the check fails. def scan(token = None):... # Report error def ERROR():... On the next page, complete a recursive-descent parser for this language. Do recognition only; don t worry about semantic values.

Login: 5 def spec(): # Complete the implementation here. def block(): def attrs(): def kids(): def blocklist(): def attr():

Login: 6 7. [4 points] Consider the following reverse derivation: I P I C I N P I t P I C I N P I t P t C I N P I t C I N P I t as C I N P I t as C I t P I t as C I t P t t as C I t t as a t as e p Upper-case letters (and ) are terminal symbols; lower-case letters are nonterminals. a. Show the parse tree corresponding to this derivation. Problem continues on next page

Login: 7 b. Show as much as you can of the grammar corresponding to this derivation. c. Is the grammar ambiguous? Why or why not? d. Starting with p, show the first five derivation steps (the first five steps) in the leftmost derivation that corresponds to the same parse tree.

Login: 8 8. [4 points] A very primitive text formatter for mathematics allows one to write things like x^2+y_{i+1}^{3}-c_{q_{j}} and get x 2 +y 3 i+1 c q j. The grammar below gives the syntax for the input language: eqn : text { output( ) } text : /*EMPTY*/ { } text item { } item : GLYPH sub0 sup0 { } sub0 : /*EMPTY*/ { } _ { text } { } sup0 : /*EMPTY*/ { } ^ { text } { } The terminal symbols are GLYPH, {, }, _, and ^. The object that you output is a box, a container of printable text, which is defined for you in the form of two functions: box() returns an empty box. add(b 1,B 2,x,y), where B 1 and B 2 are boxes and x and y are numbers, returns a new box containing B 1 s text, with B 2 s text positioned so that its lower-left corner is at coordinates (x,y) relative to B 1 s lower-left corner. Thus if B 1 contains the text hello and B 2 contains the text world, then add(b 1,B 2,6,1) would output as hello world. For each GLYPH The lexical analyzer returns a box containing text of width 1. Superscripts and subscripts are one unit above and below the text they are attached to, respectively. We will not bother with decreasing the font size of subscripts and superscripts for this problem. Fill in the blanks above to achieve the desired effect. Your semantic actions must not have side effects, except to assign to $$. You may, however, use any Python values and data structures you d like for semantic values (numbers, boxes, dictionaries, lists, etc.).