Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Compiler Design notes, Lecture notes of Compiler Design

This is the compiler design lecture notes.

Typology: Lecture notes

2015/2016

Uploaded on 11/17/2016

hukhub12
hukhub12 🇮🇳

4.5

(2)

1 document

1 / 21

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Syntax Analysis - LR(0)
Syntax Analysis - LR(0)
Parsing
Parsing
66.648 Compiler Design Lecture (02/04/98)
66.648 Compiler Design Lecture (02/04/98)
Computer Science
Computer Science
Rensselaer Polytechnic
Rensselaer Polytechnic
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15

Partial preview of the text

Download Compiler Design notes and more Lecture notes Compiler Design in PDF only on Docsity!

Syntax Analysis - LR(0)Syntax Analysis - LR(0)

Parsing Parsing

66.648 Compiler Design Lecture (02/04/98) 66.648 Compiler Design Lecture (02/04/98) Computer Science Computer Science Rensselaer Polytechnic Rensselaer Polytechnic

Lecture OutlineLecture Outline

• LR(0) Parsing AlgorithmLR(0) Parsing Algorithm

• Parse TablesParse Tables

• ExamplesExamples

• AdministrationAdministration

Yet Another ExampleYet Another Example

Consider a grammar to generate all palindromes. Consider a grammar to generate all palindromes.

  1. S--> P 1) S--> P
  2. P --> a Pa 2) P --> a Pa
  3. P --> b P b 3) P --> b P b
  4. P --> c 4) P --> c LR parsers work with an augmented grammar in which LR parsers work with an augmented grammar in which the start symbol never appears in the right side of a the start symbol never appears in the right side of a production. In a given grammar, if the start symbol production. In a given grammar, if the start symbol appears in the RHS, we can add a production S’ --> S appears in the RHS, we can add a production S’ --> S (S’ is the new start symbol and S was the old start (S’ is the new start symbol and S was the old start symbol) symbol)

STACKSTACK INPUT BUFFERINPUT BUFFER ACTIONACTION $ $ abcba$abcba$ shiftshift $a $a bcba$bcba$ shiftshift $ab $ab cba$cba$ shiftshift $abc $abc ba$ba$ reducereduce $abP $abP ba$ba$ shiftshift $abPb $abPb a$a$ reducereduce $aP $aP a$a$ shiftshift $aPa $aPa $$ reducereduce $P $P $$ reducereduce $S $S $$ acceptaccept

Example Cont... Example Cont...

LR(0) Items and ClosureLR(0) Items and Closure

LR(0) parser state needs to capture how much of LR(0) parser state needs to capture how much of a given production we have scanned. LR(0) a given production we have scanned. LR(0) parser (like a FSA) needs to know how much the parser (like a FSA) needs to know how much the production (on the rhs) we have scanned so far. production (on the rhs) we have scanned so far. For example: in the production: For example: in the production: P --> a P --> a PP aa An LR(0) item is a production with a mark/dot on An LR(0) item is a production with a mark/dot on the RHS. SO the items for this production will be the RHS. SO the items for this production will be P-->. a P a , P --> a. P a, P --> a P. a, P--> aPa. P-->. a P a , P --> a. P a, P --> a P. a, P--> aPa.

Items and Closure ContdItems and Closure Contd

Intuitively, there is a derivation (or we have seen Intuitively, there is a derivation (or we have seen the input symbols) to the left of dot. the input symbols) to the left of dot. Two kinds of items, kernel items and nonkernel Two kinds of items, kernel items and nonkernel items - Kernel and nonkernel items. items - Kernel and nonkernel items. Kernel Items - Includes initial item S’ --> .S and all Kernel Items - Includes initial item S’ --> .S and all items in which dot does not appear at the left items in which dot does not appear at the left most position. most position. Nonkernel Items- All other items which have dots Nonkernel Items- All other items which have dots at the leftmost position. at the leftmost position.

IntuitionIntuition

Closure represents an equivalent state - all the Closure represents an equivalent state - all the possible ways that you could have reached that possible ways that you could have reached that state. state. Example: I = { S--> .P} Example: I = { S--> .P} Closure (I) = { S-->.P,P-->.aPa,P-->.bPb,P-->.c} Closure (I) = { S-->.P,P-->.aPa,P-->.bPb,P-->.c} In Arithmetic Expression: S’-->.E In Arithmetic Expression: S’-->.E closure(I)={ closure(I)={ }}

GOTO OperationGOTO Operation

Let I be the set of items and let X be a grammar Let I be the set of items and let X be a grammar symbol (nonterminal/terminal). Then symbol (nonterminal/terminal). Then GOTO(I,X) = Closure({A--> alpha X.beta| A--> alpha GOTO(I,X) = Closure({A--> alpha X.beta| A--> alpha

. X beta is in I}). X beta is in I}) It is a new set of items moving a dot over X. It is a new set of items moving a dot over X. Intuitively, we have seen either an input symbol Intuitively, we have seen either an input symbol (terminal symbol) or seen a derivation starting (terminal symbol) or seen a derivation starting with that nonterminal. with that nonterminal.

ExampleExample

S0: S--> .P , P --> .a P a, P--> .bP b, P-->.c S0: S--> .P , P --> .a P a, P--> .bP b, P-->.c S1: S--> P. S1: S--> P. S2: P --> a.Pa, P-->.aPa,P-->.bPb,P-->.c S2: P --> a.Pa, P-->.aPa,P-->.bPb,P-->.c S3:P--> b.P b, P-->.aPa,P-->.bPb,P-->.c S3:P--> b.P b, P-->.aPa,P-->.bPb,P-->.c S4: P--> c. S4: P--> c. S5: P--> aP.a S5: P--> aP.a S6:P--> bP.b S6:P--> bP.b S7: P--> aPa. S7: P--> aPa. S8: P--> bP b. S8: P--> bP b.

Finite State MachineFinite State Machine

Draw the FSA. The major difference is that Draw the FSA. The major difference is that transitions can be both terminal and transitions can be both terminal and nonterminal symbols. nonterminal symbols.

Prasing TablePrasing Table

state state Input symbolInput symbol (^) gotogoto aa^ bb^ cc $$^ PP 00 s2 s3s2 s3 s4s4 22

    1. accacc
    1. s2s2 s3s3 s4s4 55
    1. (^) s2 s3s2 s3 s4s4 (^66)
    1. r3 r3r3 r
    1. s7s
    1. s8s
    1. r1r1 r1r1 r1r1 r1r
    1. r2r2 r2r2 r2r2 r2r

Parsing Table ContdParsing Table Contd

si means shift the input symbol and goto state I. si means shift the input symbol and goto state I. rj means reduce by jth production. Note that we rj means reduce by jth production. Note that we are not storing all the items in the state in our are not storing all the items in the state in our table. table. example: abcba$ example: abcba$ if we go thru, parsing algorithm, we get if we go thru, parsing algorithm, we get

Shift/Reduce ConflictsShift/Reduce Conflicts

An LR(0) state contains aconflict if its canonical An LR(0) state contains aconflict if its canonical set has two items that recommend conflicting set has two items that recommend conflicting actions. actions. shift/reduce conflict - when one item prompts a shift/reduce conflict - when one item prompts a shift action, the other prompts a reduce action. shift action, the other prompts a reduce action. reduce/reduce conflict - when two items prompt reduce/reduce conflict - when two items prompt for reduce actions by different production. for reduce actions by different production. A grammar is said be to be LR(0) grammar, if the A grammar is said be to be LR(0) grammar, if the table does not have any conflicts. table does not have any conflicts.

LALR GrammarLALR Grammar

Programming languages cannot be generated by Programming languages cannot be generated by LR(0) grammar. We usually have a look ahead LR(0) grammar. We usually have a look ahead symbol, to deteremine what kind of action symbol, to deteremine what kind of action parser will be prompted for. parser will be prompted for. These lookaheads refine states and actions. These lookaheads refine states and actions.