













Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
This is the compiler design lecture notes.
Typology: Lecture notes
1 / 21
This page cannot be seen from the preview
Don't miss anything!
66.648 Compiler Design Lecture (02/04/98) 66.648 Compiler Design Lecture (02/04/98) Computer Science Computer Science Rensselaer Polytechnic Rensselaer Polytechnic
Consider a grammar to generate all palindromes. Consider a grammar to generate all palindromes.
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
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.
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.
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)={ }}
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.
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.
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.
state state Input symbolInput symbol (^) gotogoto aa^ bb^ cc $$^ PP 00 s2 s3s2 s3 s4s4 22
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
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.
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.