ADTS, GRAMMARS, PARSING, TREE TRAVERSALS. Regrades 10/6/15. Prelim 1. Prelim 1. Expression trees. Pointers to material

Similar documents
ADTS, GRAMMARS, PARSING, TREE TRAVERSALS

ADTS, GRAMMARS, PARSING, TREE TRAVERSALS

ADTS, GRAMMARS, PARSING, TREE TRAVERSALS

If you are going to form a group for A2, please do it before tomorrow (Friday) noon GRAMMARS & PARSING. Lecture 8 CS2110 Spring 2014

syntax tree - * * * - * * * * * 2 1 * * 2 * (2 * 1) - (1 + 0)

GRAMMARS & PARSING. Lecture 7 CS2110 Fall 2013

ASTS, GRAMMARS, PARSING, TREE TRAVERSALS. Lecture 14 CS2110 Fall 2018

Grammars & Parsing. Lecture 12 CS 2112 Fall 2018

syntax tree - * * * * * *

Announcements. Application of Recursion. Motivation. A Grammar. A Recursive Grammar. Grammars and Parsing

Finish Lec12 TREES, PART 2. Announcements. JavaHyperText topics. Trees, re-implemented. Iterate through data structure 3/7/19

Application of recursion. Grammars and Parsing. Recursive grammar. Grammars

There are many other applications like constructing the expression tree from the postorder expression. I leave you with an idea as how to do it.

TREES. Trees - Introduction

CSE 3302 Programming Languages Lecture 2: Syntax

COMP 250 Fall binary trees Oct. 27, 2017

7.1 Introduction. A (free) tree T is A simple graph such that for every pair of vertices v and w there is a unique path from v to w

Principles of Programming Languages COMP251: Syntax and Grammars

Stacks, Queues and Hierarchical Collections

Lexical Scanning COMP360

([1-9] 1[0-2]):[0-5][0-9](AM PM)? What does the above match? Matches clock time, may or may not be told if it is AM or PM.

Compiling Regular Expressions COMP360

Stacks, Queues and Hierarchical Collections. 2501ICT Logan

Section 5.5. Left subtree The left subtree of a vertex V on a binary tree is the graph formed by the left child L of V, the descendents

Lecture Chapter 6 Recursion as a Problem Solving Technique

Introduction to Parsing. Lecture 8

Lecture 12 TREES II CS2110 Spring 2018

Outline. Parser overview Context-free grammars (CFG s) Derivations Syntax-Directed Translation

F453 Module 7: Programming Techniques. 7.2: Methods for defining syntax

Compiler Design Concepts. Syntax Analysis

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

Revision Statement while return growth rate asymptotic notation complexity Compare algorithms Linear search Binary search Preconditions: sorted,

CS164: Midterm I. Fall 2003

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

Lecture 7: Deterministic Bottom-Up Parsing

Building Compilers with Phoenix

Friday, March 30. Last time we were talking about traversal of a rooted ordered tree, having defined preorder traversal. We will continue from there.

First Semester - Question Bank Department of Computer Science Advanced Data Structures and Algorithms...

CS W3134: Data Structures in Java

This book is licensed under a Creative Commons Attribution 3.0 License

12 Abstract Data Types

Lecture 8: Deterministic Bottom-Up Parsing

Introduction to Parsing. Lecture 5

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

Outline. Limitations of regular languages. Introduction to Parsing. Parser overview. Context-free grammars (CFG s)

Chapter 4. Lexical and Syntax Analysis. Topics. Compilation. Language Implementation. Issues in Lexical and Syntax Analysis.

Peace cannot be kept by force; it can only be achieved by understanding. Albert Einstein

Upcoming ACM Events Linux Crash Course Date: Time: Location: Weekly Crack the Coding Interview Date:

A simple syntax-directed

Advanced Java Concepts Unit 5: Trees. Notes and Exercises

EECS 6083 Intro to Parsing Context Free Grammars

Outline. Limitations of regular languages Parser overview Context-free grammars (CFG s) Derivations Syntax-Directed Translation

COMP-421 Compiler Design. Presented by Dr Ioanna Dionysiou

Defining Program Syntax. Chapter Two Modern Programming Languages, 2nd ed. 1

Supplemental Materials: Grammars, Parsing, and Expressions. Topics. Grammars 10/11/2017. CS2: Data Structures and Algorithms Colorado State University

CPS 506 Comparative Programming Languages. Syntax Specification

Formal Languages and Automata Theory, SS Project (due Week 14)

References and Homework ABSTRACT DATA TYPES; LISTS & TREES. Abstract Data Type (ADT) 9/24/14. ADT example: Set (bunch of different values)

CS2383 Programming Assignment 3

Compiler Code Generation COMP360

More Assigned Reading and Exercises on Syntax (for Exam 2)

A Simple Syntax-Directed Translator

Lecture Notes 16 - Trees CSS 501 Data Structures and Object-Oriented Programming Professor Clark F. Olson

Syntactic Analysis. The Big Picture Again. Grammar. ICS312 Machine-Level and Systems Programming

A programming language requires two major definitions A simple one pass compiler

CSE 401 Midterm Exam Sample Solution 2/11/15

Bottom Up Parsing. Shift and Reduce. Sentential Form. Handle. Parse Tree. Bottom Up Parsing 9/26/2012. Also known as Shift-Reduce parsing

A language is a subset of the set of all strings over some alphabet. string: a sequence of symbols alphabet: a set of symbols

Expressions and Assignment

CS 314 Principles of Programming Languages

MIDTERM EXAMINATION - CS130 - Spring 2003

Specifying Syntax. An English Grammar. Components of a Grammar. Language Specification. Types of Grammars. 1. Terminal symbols or terminals, Σ

Algorithms and Data Structures Exercise I

ITEC2620 Introduction to Data Structures

Ambiguity. Lecture 8. CS 536 Spring

Advanced Java Concepts Unit 5: Trees. Notes and Exercises

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

Context-Free Languages & Grammars (CFLs & CFGs) Reading: Chapter 5

XC Total Max Score Grader

Question Points Score

CMSC 330, Fall 2009, Practice Problem 3 Solutions

CSE au Final Exam Sample Solution

Syntax and Grammars 1 / 21

Trees! Ellen Walker! CPSC 201 Data Structures! Hiram College!

FINALTERM EXAMINATION Fall 2009 CS301- Data Structures Question No: 1 ( Marks: 1 ) - Please choose one The data of the problem is of 2GB and the hard

Context-Free Grammars

TREES Lecture 10 CS2110 Spring2014

09 STACK APPLICATION DATA STRUCTURES AND ALGORITHMS REVERSE POLISH NOTATION

Compiler Theory. (Semantic Analysis and Run-Time Environments)

Principles of Programming Languages COMP251: Syntax and Grammars

Introduction to Parsing. Lecture 5

Plan for Today. Regular Expressions: repetition and choice. Syntax and Semantics. Context Free Grammars

announcements CSE 311: Foundations of Computing review: regular expressions review: languages---sets of strings

Non-deterministic Finite Automata (NFA)

Theory and Compiling COMP360

CMSC 330 Practice Problem 4 Solutions

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

Part 3. Syntax analysis. Syntax analysis 96

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

2.2 Syntax Definition

Transcription:

1 Prelim 1 2 Max: 99 Mean: 71.2 Median: 73 Std Dev: 1.6 ADS, GRAMMARS, PARSING, R RAVRSALS Lecture 12 CS2110 Spring 2015 3 Prelim 1 Score Grade % 90-99 A 82-89 A-/A 26% 70-82 B/B 62-69 B-/B 50% 50-59 C-/C 18% 0-9 D/D 5% < 0 3% Regrades We work hard to grade exams quickly but we are not perfect! If you find a mistake: Do not modify your exam! Write up a clear explanation of the error on the regrade request form Return to the handback room Deadline: pm riday, October 9th Pointers to material xpression trees 5 Parse trees: text, section 23.36 Definition of Java Language, sometimes useful: docs.oracle.com/javase/specs/jls/se7/html/index.html Grammar for most of Java, for those who are curious: docs.oracle.com/javase/specs/jls/se7/html/jls-18.html ree traversals preorder, inorder, postorder: text, sections 23.13.. 23.15. 6 Can draw a tree for (2 3) (1 (5 ) 5 public abstract class xp { / return the value of this xp / public abstract int eval(); 1

xpression trees 8 tree for (2 3) (1 ) 7 public abstract class xp { / return the value of this xp / public abstract int eval(); public class Int extends xp { int v; public int eval() { return v; public class Add extends xp { xp left; xp right; public int eval() { return left.eval() right.eval(); Preorder traversal: 1. Visit the root 2. Visit left subtree, in preorder 3. Visit right subtree, in preorder 1 - prefix and postfix notation proposed by Jan Lukasiewicz in 1951 Postfix (we see it later) is often called RPN for Reverse Polish Notation 9 tree for (2 3) (1 ) 10 tree for (2 3) (1 ) In about 197, Gries paid $300 for an HP calculator, which had some memory and used postfix notation! Still works. Come up to see it. Postorder traversal: 1. Visit left subtree, in postorder 2. Visit right subtree, in postorder 3. Visit the root 1 - Postfix notation Cornell tuition Calculator cost Percent 1973 $5030 $300.0596 201 $7,050 $60.00127 hen: (HP 5) RPN. 9 memory locations, -level stack, 1-line display Now: (HP 35S) RPN and infix. 30K user memory, 2-line display 11 tree for (2 3) (1 ) 12 tree for (2 3) (1 ) Postfix is easy to compute. Process elements left to right. Number? Push it on a stack Binary operator? Remove two top stack elements, apply operator to it, push result on stack Unary operator? Remove top stack element, apply operator to it, push result on stack Postfix notation 1 - Inorder traversal: 1. Visit left subtree, in inorder 2. Visit the root 3. Visit right subtree, in inorder o help out, put parens around expressions with operators (2 3) (1 (- )) 2

13 xpression trees public class Add extends xp { xp left; xp right; / Return the value of this exp. / public int eval() {return left.eval() right.eval(); public abstract class xp { public abstract int eval(); public abstract String pre(); public abstract String post(); / Return the preorder./ public String pre() {return left.pre() right.pre(); / Return the postorder./ public String post() {return left.post() right.post() ; 1 he cat ate the rat. he cat ate the rat slowly. he small cat ate the big rat slowly. he small cat ate the big rat on the mat slowly. he small cat that sat in the hat ate the big rat on the mat slowly, then got sick. Motivation for grammars Not all sequences of words are legal sentences he ate cat rat the How many legal sentences are there? How many legal Java programs? How do we know what programs are legal? http://docs.oracle.com/javase/specs/jls/se7/html/index.html A Grammar A Grammar 15 Noun Verb Noun see White space between words does not matter A very boring grammar because the set of s is finite (exactly 18 sentences) Our sample grammar has these rules: A can be a Noun followed by a Verb followed by a Noun A Noun can be boys or girls or bunnies A Verb can be like or see 16 Noun Verb Noun Verb see Grammar: set of rules for generating sentences of a language. xamples of : girls see bunnies bunnies like boys he words boys, girls, bunnies, like, see are called tokens or terminals he words, Noun, Verb are called nonterminals A recursive grammar Detour 17 18 and or Noun Verb Noun see his grammar is more interesting than previous one because the set of s is infinite What makes this set infinite? Answer: Recursive definition of What if we want to add a period at the end of every sentence? and. or. Noun Verb Noun. Noun Does this work? No! his produces sentences like: girls like boys. and boys like bunnies.. 3

s with periods Grammars for programming languages 19 Punctuated. and or Noun VerbNoun New rule adds a period only at end of sentence. okens are the 7 words plus the period (.) Grammar is ambiguous: boys like girls Verb see and girls like boys or girls like bunnies 20 Grammar describes every possible legal expression You could use the grammar for Java to list every possible Java program. (It would take forever.) Grammar tells the Java compiler how to parse a Java program docs.oracle.com/javase/specs/jls/se7/html/jls-2.html#jls-2.3 21 Grammar for simple expressions (not the best) integer ( ) Simple expressions: An can be an integer. An can be ( followed by an followed by followed by an followed by ) Set of expressions defined by this grammar is a recursively-defined set Is language finite or infinite? Do recursive grammars always yield infinite languages? Some legal expressions: 2 (3 3) ((23) 89) Some illegal expressions: (3 3 okens of this grammar: ( ) and any integer 22 Use a grammar in two ways: A grammar defines a language (i.e. the set of properly structured sentences) Parsing A grammar can be used to parse a sentence (thus, checking if a string is asentence is in the language) o parse a sentence is to build a parse tree: much like diagramming a sentence integer ( ) xample: Show that ((23) 89) is a valid expression by building a parse tree ( ) ( ) 23 89 Ambiguity Recursive descent parsing 23 23 Grammar is ambiguous if it allows two parse trees for a sentence. he grammar below, using no parentheses, is ambiguous. he two parse trees to right show this. We don t know which to evaluate first in the expression 1 2 3 integer 1 2 3 2 Write a set of mutually recursive methods to check if a sentence is in the language (show how to generate parse tree later). One method for each nonterminal of the grammar. he method is completely determined by the rules for that nonterminal. On the next pages, we give a high-level version of the method for nonterminal : integer ( ) 1

25 Parsing an integer ( ) / Unprocessed input starts an. Recognize that, throwing away each piece from the input as it is recognized. Return false if error is detected and true if no errors. Upon return, processed tokens have been removed from input. / public boolean parse() before call: already processed unprocessed after call: (call returns true) ( 2 ( 8 ) 9 ) already processed unprocessed ( 2 ( 8 ) 9 ) Specification: / Unprocessed input starts an. / 26 public boolean parse() { integer ( ) if (first token is an integer) remove it from input and return true; if (first token is not ( ) return false else remove it from input; if (!parse()) return false; if (first token is not ) return false else remove it from input; if (!parse()) return false; if (first token is not ) ) return false else remove it from input; return true; Same code used 3 times. Cries out for a method to do that Illustration of parsing to check syntax he scanner constructs tokens 27 integer ( ) 28 An object scanner of class Scanner is in charge of the input String. It constructs the tokens from the String as necessary. e.g. from the string 1663 build the token 16, the token, and the token 63. It is ready to work with the part of the input string that has not yet been processed and has thrown away the part that is already processed, in left-to-right fashion. already processed unprocessed ( 1 ( 2 ) ) ( 2 ( 8 ) 9 ) Change parser to generate a tree integer 29 / Return a ree for the if no error. ( ) Return null if there was an error/ public ree parse() { if (first token is an integer) remove it from input and return true; if (first token is an integer) { ree t= new ree(the integer); Remove token from input; return t; Change parser to generate a tree 30 / Return a ree for the if no error. Return null if there was an error/ public ree parse() { if (first token is an integer) ; if (first token is not ( ) return null else remove it from input; ree t1= parse(); if (t1 == null) return null; if (first token is not ) return null else remove it from input; ree t2= parse(); if (t2 == null) return null; if (first token is not ) ) return false else remove it from input; return new ree(t1,, t2); integer ( ) 5

Code for a stack machine Code for a stack machine 31 32 Code for 2 (3 ) PUSH 2 PUSH 3 PUSH : remove two top values from stack, add them, and place result on stack 37 2 S t a c k Code for 2 (3 ) PUSH 2 PUSH 3 PUSH : remove two top values from stack, add them, and place result on stack 7 29 S t a c k It s postfix notation! It s postfix notation! Use parser to generate code for a stack machine Grammar that gives precedence to over 33 Code for 2 (3 ) PUSH 2 PUSH 3 PUSH : remove two top values from stack, add them, and place result on stack It s postfix notation! parse can generate code as follows: or integer i, return string PUSH i \n or (1 2), return a string containing w Code for 1 w Code for 2 w \n 3 -> { -> { -> integer -> ( ) 2 3 says do first Notation: { xxx means 0 or more occurrences of xxx. : xpression : erm : actor 2 3 ry to do first, can t complete tree Does recursive descent always work? Syntactic ambiguity 35 Some grammars cannot be used for recursive descent rivial example (causes infinite recursion): S b S Sa Can rewrite grammar S b S ba A a A aa or some constructs, recursive descent is hard to use Other parsing techniques exist take the compiler writing course 36 Sometimes a sentence has more than one parse tree S A aaxb A x aab aaxbb can be parsed B b bb in two ways his kind of ambiguity sometimes shows up in programming languages. In the following, which then does the else go with? if 1 then if 2 then S1 else S2 6

Syntactic ambiguity Huffman trees 37 38 his kind of ambiguity sometimes shows up in programming languages. In the following, which then does the else go with? if 1 then if 2 then S1 else S2 his ambiguity actually affects the program s meaning 0 e 197 1 e t a s t 63 0 26 a s Resolve it by either (1) Modify the grammar to eliminate the ambiguity (best) (2) Provide an extra non-grammar rule (e.g. else goes with closest if) Can also think of modifying the language (require end delimiters) ixed length encoding 1972 632 02 262 = 652 Huffman encoding 1971 632 03 263 = 521 Huffman compression of Ulysses Huffman compression of Ulysses 39 0 ' ' 22125 00100000 3 110 'e' 13996 01100101 3 000 't' 95660 01110100 1010 'a' 89651 01100001 1000 'o' 8888 01101111 0111 'n' 7865 01101110 0101 'i' 76505 01101001 0100 's' 73186 01110011 0011 'h' 68625 01101000 5 11111 'r' 68320 01110010 5 11110 'l' 52657 01101100 5 10111 'u' 3292 01110101 6 111011 'g' 26201 01100111 6 101101 'f' 2528 01100110 6 101100 '.' 21361 00101110 6 011010... '7' 68 00110111 15 111010101001111 '/' 58 00101111 15 111010101001110 'X' 19 01011006 0110000000100011 '&' 3 00100118 011000000010001010 '%' 3 00100101 19 0110000000100010111 '' 2 00101011 19 0110000000100010110 original size 1190320 compressed size 6822151 2.7% compression 'p' 20661 01110000 6 011001 39 0 Summary: What you should know xercises 1 preorder, inorder, and postorder traversal. How they can be used to get prefix notation, infix notation, and postfix notation for an expression tree. Grammars: productions or rules, tokens or terminals, nonterminals. he parse tree for a sentence of a grammar. Ambiguous grammar, because a sentence is ambiguous (has two different parse trees). You should be able to tell whether string is a sentence of a simple grammar or not. You should be able to tell whether a grammar has an infinite number of sentences. You are not responsible for recursive descent parsing 2 Write a grammar and recursive descent parser for sentence palindromes that ignores white spaces & punctuation Was it liot's toilet I saw? No trace, not one carton Go deliver a dare, vile dog! Madam, I'm Adam Write a grammar and recursive program for strings A n B n AB AABB AAAAAAABBBBBBB Write a grammar and recursive program for Java identifiers <letter> [<letter> or <digit>] 0 N j27, but not 2j7 7