LR(1) for Bill McKeeman Dartmouth April 18, 2008 E ← T ┤ T ← F

Slides:



Advertisements
Similar presentations
A question from last class: construct the predictive parsing table for this grammar: S->i E t S e S | i E t S | a E -> B.
Advertisements

Lesson 8 CDT301 – Compiler Theory, Spring 2011 Teacher: Linus Källberg.
Compiler Designs and Constructions
Lecture # 11 Theory Of Automata By Dr. MM Alam 1.
 CS /11/12 Matthew Rodgers.  What are LL and LR parsers?  What grammars do they parse?  What is the difference between LL and LR?  Why do.
Bottom-up Parsing A general style of bottom-up syntax analysis, known as shift-reduce parsing. Two types of bottom-up parsing: Operator-Precedence parsing.
CH4.1 CSE244 SLR Parsing Aggelos Kiayias Computer Science & Engineering Department The University of Connecticut 371 Fairfield Road, Box U-155 Storrs,
Review: LR(k) parsers a1 … a2 … an $ LR parsing program Action goto Sm xm … s1 x1 s0 output input stack Parsing table.
LR Parsing – The Items Lecture 10 Mon, Feb 14, 2005.
LR Parsing Table Costruction
LR(1) for Bill McKeeman Dartmouth April 18, 2008 E ← T ┤ T ← F T ← T * F F ← i F ← ( T )
1 Example S'  S, S  CC, C  cC, C  d State 0. Closure({[S'  S, $]}) = { S'  S, $ S   CC, FIRST( $)  S   CC, $ C   cC, FIRST(C$)  C.
Cse321, Programming Languages and Compilers 1 6/12/2015 Lecture #10, Feb. 14, 2007 Modified sets of item construction Rules for building LR parse tables.
6/12/2015Prof. Hilfinger CS164 Lecture 111 Bottom-Up Parsing Lecture (From slides by G. Necula & R. Bodik)
1 Bottom Up Parsing. 2 Bottom-Up Parsing l Bottom-up parsing is more general than top-down parsing »And just as efficient »Builds on ideas in top-down.
CS 536 Spring Bottom-Up Parsing: Algorithms, part 1 LR(0), SLR Lecture 12.
Bottom Up Parsing.
The Implicit Mapping into Feature Space. In order to learn non-linear relations with a linear machine, we need to select a set of non- linear features.
1 Bottom-up parsing Goal of parser : build a derivation –top-down parser : build a derivation by working from the start symbol towards the input. builds.
JPEG Compression in Matlab
 an efficient Bottom-up parser for a large and useful class of context-free grammars.  the “ L ” stands for left-to-right scan of the input; the “ R.
410/510 1 of 21 Week 2 – Lecture 1 Bottom Up (Shift reduce, LR parsing) SLR, LR(0) parsing SLR parsing table Compiler Construction.
$100 $200 $300 $400 $500 $100 $200 $300 $400 $500 $100 $200 $300 $400 $500 $100 $200 $300 $400 $500 $100 $200 $300 $400 $500 $100 $200 $300.
SLR PARSING TECHNIQUES Submitted By: Abhijeet Mohapatra 04CS1019.
LR(k) Parsing CPSC 388 Ellen Walker Hiram College.
A New Look at LR(k) Bill McKeeman, MathWorks Fellow for Worcester Polytechnic Computer Science Colloquium February 20, 2004.
10/13/2015IT 3271 Tow kinds of predictive parsers: Bottom-Up: The syntax tree is built up from the leaves Example: LR(1) parser Top-Down The syntax tree.
Chapter 4 Syntactic Analysis II. Chapter 4 -- Syntactic Analysis II2 1. Introduction to Bottom-Up parsing  Grammar: E--> E+E | E*E | i  Expression:
 an efficient Bottom-up parser for a large and useful class of context-free grammars.  the “ L ” stands for left-to-right scan of the input; the “ R.
Chapter 3-3 Chang Chi-Chung Bottom-Up Parsing LR methods (Left-to-right, Rightmost derivation)  LR(0), SLR, Canonical LR = LR(1), LALR 
The Notation of Mathematics Bill McKeeman Dartmouth April 18, 2008.
Prof. Necula CS 164 Lecture 8-91 Bottom-Up Parsing LR Parsing. Parser Generators. Lecture 6.
Announcements/Reading
Donghyun (David) Kim Department of Mathematics and Physics North Carolina Central University 1 Chapter 2 Context-Free Languages Some slides are in courtesy.
Bottom Up Parsing CS 671 January 31, CS 671 – Spring Where Are We? Finished Top-Down Parsing Starting Bottom-Up Parsing Lexical Analysis.
Three kinds of bottom-up LR parser SLR “Simple LR” –most restrictions on eligible grammars –built quite directly from items as just shown LR “Canonical.
Bottom-Up Parsing Algorithms LR(k) parsing L: scan input Left to right R: produce Rightmost derivation k tokens of lookahead LR(0) zero tokens of look-ahead.
Conflicts in Simple LR parsers A SLR Parser does not use any lookahead The SLR parsing method fails if knowing the stack’s top state and next input token.
Chapter 8. LR Syntactic Analysis Sung-Dong Kim, Dept. of Computer Engineering, Hansung University.
Lec04-bottomupparser 4/13/2018 LR Parsing.
Parsing Bottom Up CMPS 450 J. Moloney CMPS 450.
Programming Languages Translator
LR Parsing – The Items Lecture 10 Fri, Feb 13, 2004.
Bottom-Up Parsing.
UNIT - 3 SYNTAX ANALYSIS - II
Winter LR(0) Parsing Summary
Compiler Construction
LALR Parsing Canonical sets of LR(1) items
Canonical LR Parsing Tables
Subject Name:COMPILER DESIGN Subject Code:10CS63
Regular Grammar - Finite Automaton
A New Look at LR(k) Bill McKeeman, MathWorks Fellow for
LR(1) grammars The Chinese University of Hong Kong Fall 2010
Lecture (From slides by G. Necula & R. Bodik)
Compiler Design 7. Top-Down Table-Driven Parsing
Chapter 4. Syntax Analysis (2)
Compiler SLR Parser.
,. . ' ;; '.. I I tI I t : /..: /.. ' : ····t I 'h I.;.; '..'.. I ' :".:".
| b.
Syntax Analysis - 3 Chapter 4.
Kanat Bolazar February 16, 2010
Parsing Bottom-Up.
LR(1) grammars The Chinese University of Hong Kong Fall 2011
Compiler Construction
Compiler Construction
Chapter 4. Syntax Analysis (2)
Parsing Bottom-Up LR Table Construction.
Parsing Bottom-Up LR Table Construction.
Chap. 3 BOTTOM-UP PARSING
Items and Itemsets An itemset is merely a set of items
Presentation transcript:

LR(1) for Bill McKeeman Dartmouth April 18, 2008 E ← T ┤ T ← F F ← i F ← ( T ) Bill McKeeman Dartmouth April 18, 2008

a simple expression cfg E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) a simple expression cfg end-of-file symbol

E ← ▫ T ┤ E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) LR start state

marked rules closure for T lookahead kernel in red closure in green E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F ┤ E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) marked rules closure for T lookahead kernel in red closure in green

closure for F E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤

another closure for T E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i

another closure for F E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i

merge lookaheads closure complete E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) merge lookaheads closure complete

shift T new kernel E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) E ← T ▫ ┤ T ← T ▫ * F ┤* shift T new kernel

shift F another new kernel E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i ┤* E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) E ← T ▫ ┤ T ← T ▫ * F ┤* T ← F ▫ ┤* shift F another new kernel

shift i another new kernel E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i ┤* E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) E ← T ▫ ┤ T ← T ▫ * F ┤* T ← F ▫ ┤* shift i F ← i ▫ ┤* another new kernel

1 finish state 1 shift ( another new kernel E ← ▫ T ┤ T ← ▫ F ┤* E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) 1 E ← T ▫ ┤ T ← T ▫ * F ┤* finish state 1 T ← F ▫ ┤* shift ( F ← i ▫ ┤* another new kernel F ← ( ▫ T ) ┤*

1 closure E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* E ← T ┤ ) *

shift ┤ (final LR state) E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* E ← T ┤ ▫ E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) 1 E ← T ▫ ┤ T ← T ▫ * F ┤* shift ┤ (final LR state) T ← F ▫ ┤* F ← i ▫ ┤* F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) *

1 2 shift * 3 finish states 2,3,4 4 E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F ┤* E ← T ┤ ▫ E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) T ← T * ▫ F ┤* 1 E ← T ▫ ┤ T ← T ▫ * F ┤* 2 shift * 3 T ← F ▫ ┤* finish states 2,3,4 4 F ← i ▫ ┤* F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) *

1 2 closure 3 4 E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) *

1 2 3 4 shift T E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) * E ← T ▫ ┤ T ← T ▫ * F ┤* 2 3 T ← F ▫ ┤* 4 F ← i ▫ ┤* shift T F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) *

1 2 3 4 shift F E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) * E ← T ▫ ┤ T ← T ▫ * F ┤* 2 T ← F ▫ ) * 3 T ← F ▫ ┤* 4 F ← i ▫ ┤* shift F F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) *

1 2 3 4 shift i E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) * E ← T ▫ ┤ T ← T ▫ * F ┤* 2 T ← F ▫ ) * 3 T ← F ▫ ┤* F ← i ▫ ) * 4 F ← i ▫ ┤* shift i F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) *

1 2 3 4 shift ( 5 finish state 5 E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i ┤* E ← T ┤ ▫ E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) T ← T * ▫ F F ← ▫ i F ← ▫ ( T ) ┤* 1 F ← ( T ▫ ) T ← T ▫ * F ┤* ) * E ← T ▫ ┤ T ← T ▫ * F ┤* 2 T ← F ▫ ) * 3 T ← F ▫ ┤* F ← i ▫ ) * 4 F ← i ▫ ┤* shift ( F ← ( ▫ T ) ) * F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) * 5 finish state 5

1 2 3 4 closure 5 E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) * E ← T ▫ ┤ T ← T ▫ * F ┤* 2 T ← F ▫ ) * 3 T ← F ▫ ┤* F ← i ▫ ) * 4 F ← i ▫ ┤* closure F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ) * F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) * 5

6 7 4 1 5 2 finish state 6 shift on F and I and ( finish state 7 E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* 6 E ← T ┤ ▫ T ← T * F ▫ ┤* 7 T ← T * ▫ F F ← ▫ i F ← ▫ ( T ) ┤* 4 F ← i ▫ ┤* 1 5 F ← ( ▫ T ) ┤* F ← ( T ▫ ) T ← T ▫ * F ┤* ) * E ← T ▫ ┤ T ← T ▫ * F ┤* 2 finish state 6 shift on F and I and ( finish state 7 repeat state 4 and 5 T ← F ▫ ) * 3 T ← F ▫ ┤* F ← i ▫ ) * 4 F ← i ▫ ┤* F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ) * F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) * 5

6 7 4 1 5 8 2 9 3 10 4 shift on ) and * finish states 8,9,10 5 E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* 6 E ← T ┤ ▫ T ← T * F ▫ ┤* 7 T ← T * ▫ F F ← ▫ i F ← ▫ ( T ) ┤* 4 F ← i ▫ ┤* 1 5 F ← ( ▫ T ) ┤* F ← ( T ▫ ) T ← T ▫ * F ┤* ) * F ← ( T ) ▫ ┤* E ← T ▫ ┤ T ← T ▫ * F ┤* 8 2 T ← T * ▫ F ) * 9 T ← F ▫ ) * 3 T ← F ▫ ┤* 10 F ← i ▫ ) * 4 F ← i ▫ ┤* shift on ) and * finish states 8,9,10 F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ) * F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) * 5

6 7 4 1 5 8 2 9 3 10 4 closure 5 E ← T ┤ T ← F T ← T * F F ← i ┤* 6 E ← T ┤ ▫ T ← T * F ▫ ┤* 7 T ← T * ▫ F F ← ▫ i F ← ▫ ( T ) ┤* 4 F ← i ▫ ┤* 1 5 F ← ( ▫ T ) ┤* F ← ( T ▫ ) T ← T ▫ * F ┤* ) * F ← ( T ) ▫ ┤* E ← T ▫ ┤ T ← T ▫ * F ┤* 8 2 T ← T * ▫ F F ← ▫ i F ← ▫ ( T ) ) * 9 T ← F ▫ ) * 3 T ← F ▫ ┤* 10 F ← i ▫ ) * 4 F ← i ▫ ┤* F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ) * F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) * closure 5

shift on T and F and i and ( E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* 6 E ← T ┤ ▫ 12 T ← T * F ▫ ┤* 7 T ← T * ▫ F F ← ▫ i F ← ▫ ( T ) ┤* 4 F ← i ▫ ┤* 1 5 F ← ( ▫ T ) ┤* F ← ( T ▫ ) T ← T ▫ * F ┤* ) * 13 F ← ( T ) ▫ ┤* E ← T ▫ ┤ T ← T ▫ * F ┤* 8 2 T ← T * ▫ F F ← ▫ i F ← ▫ ( T ) ) * 9 T ← F ▫ ) * 3 T ← F ▫ ┤* 10 F ← i ▫ ) * 4 F ← i ▫ ┤* 11 F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ) * F ← ( T ▫ ) T ← T ▫ * F ) * F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) * 9 T ← F ▫ ) * 5 10 F ← i ▫ ) * 11 F ← ( ▫ T ) ) * shift on T and F and i and ( finish state 11, repeat states 9,10,11, finish states 12,13

finish state 14, repeat states 10,11 E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* 6 E ← T ┤ ▫ 12 T ← T * F ▫ ┤* 7 T ← T * ▫ F F ← ▫ i F ← ▫ ( T ) ┤* 4 F ← i ▫ ┤* 1 5 F ← ( ▫ T ) ┤* F ← ( T ▫ ) T ← T ▫ * F ┤* ) * 13 F ← ( T ) ▫ ┤* E ← T ▫ ┤ T ← T ▫ * F ┤* 8 2 T ← T * F ▫ ) * 14 T ← T * ▫ F F ← ▫ i F ← ▫ ( T ) ) * 9 T ← F ▫ ) * 11 F ← i ▫ ) * 3 T ← F ▫ ┤* 10 F ← i ▫ ) * 10 F ← ( ▫ T ) ) * 4 F ← i ▫ ┤* 11 F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ) * F ← ( T ▫ ) T ← T ▫ * F ) * F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) * 9 T ← F ▫ ) * 5 10 F ← i ▫ ) * 11 F ← ( ▫ T ) ) * shift on F and i and ( finish state 14, repeat states 10,11

shift ) and *, finish state 15, repeat state 14 E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* 6 E ← T ┤ ▫ 12 T ← T * F ▫ ┤* 7 T ← T * ▫ F F ← ▫ i F ← ▫ ( T ) ┤* 4 F ← i ▫ ┤* 1 5 F ← ( ▫ T ) ┤* F ← ( T ▫ ) T ← T ▫ * F ┤* ) * 13 F ← ( T ) ▫ ┤* E ← T ▫ ┤ T ← T ▫ * F ┤* 8 2 T ← T * F ▫ ) * 14 T ← T * ▫ F F ← ▫ i F ← ▫ ( T ) ) * 9 T ← F ▫ ) * 11 F ← i ▫ ) * 3 T ← F ▫ ┤* 10 F ← i ▫ ) * 10 F ← ( ▫ T ) ) * 4 F ← i ▫ ┤* 11 F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ) * F ← ( T ▫ ) T ← T ▫ * F ) * F ← ( T ) ▫ ) * 15 F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) * 14 T ← T * ▫ F ) * 9 T ← F ▫ ) * 5 10 F ← i ▫ ) * 11 F ← ( ▫ T ) ) * shift ) and *, finish state 15, repeat state 14

E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) E ← ▫ T ┤ T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* 6 E ← T ┤ ▫ 12 T ← T * F ▫ ┤* 7 T ← T * ▫ F F ← ▫ i F ← ▫ ( T ) ┤* 4 F ← i ▫ ┤* 1 5 F ← ( ▫ T ) ┤* F ← ( T ▫ ) T ← T ▫ * F ┤* ) * 13 F ← ( T ) ▫ ┤* E ← T ▫ ┤ T ← T ▫ * F ┤* 8 2 16 T ← T * F ▫ ) * 14 T ← T * ▫ F F ← ▫ i F ← ▫ ( T ) ) * 9 T ← F ▫ ) * 11 F ← i ▫ ) * 3 T ← F ▫ ┤* 10 F ← i ▫ ) * 10 F ← ( ▫ T ) ) * 4 F ← i ▫ ┤* 11 F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ) * F ← ( T ▫ ) T ← T ▫ * F ) * 17 F ← ( T ) ▫ ) * 15 F ← ( ▫ T ) T ← ▫ F T ← ▫ T * F F ← ▫ i F ← ▫ ( T ) ┤* ) * 14 T ← T * ▫ F ) * 9 T ← F ▫ ) * 5 10 F ← i ▫ ) * 11 F ← ( ▫ T ) ) * finish states 16,17

The LR Matrix symbols stack input states i * i ┤ 1 1i4 * i ┤ 1F * i ┤ ( ) 1 2 3 4 5 6 7 -2 -4 8 9 10 11 -1 12 14 13 15 -3 -5 16 17 -1: -2: -3: -4: -5: E ← T ┤ T ← F T ← T * F F ← i F ← ( T ) i * i ┤ 1 1i4 * i ┤ 1F * i ┤ 1F3 * i ┤ 1T * i ┤ 1T2 * i ┤ 1T2*7 i ┤ states 1T2*7i4 ┤ 1T2*7F ┤ 1T2*7F12 ┤ 1T ┤ 1T2 ┤ 1T2 ┤6 E