תזכורת מתרגולים אחרונים

21
םםםםםם םםםםםםםם םםםםםםם םםםם םםםםם םם םםםםםםםם םםםםם םםםםםם:Top Down: LL(1) RD Bottom up : LR(0) SLR LR(1)\ CLR LALR םםםםם םםםםםםם םםםםם םםםםםם םםםםם םםםםםbackend םםםםםםם ם(tokens )

Upload: talon

Post on 19-Mar-2016

59 views

Category:

Documents


2 download

DESCRIPTION

backend. ניתוח סמנטי. ניתוח תחבירי. ניתוח לקסיקלי. תזכורת מתרגולים אחרונים. מבנה סכמתי של קומפיילר ניתוח תחבירי: Top Down : LL(1) RD Bottom up : LR(0) SLR LR(1) \ CLR LALR. אסימונים (tokens). Canonical LR (CLR / LR(1) ). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: תזכורת מתרגולים אחרונים

תזכורת מתרגולים אחרוניםמבנה סכמתי של קומפיילר•

ניתוח תחבירי:•–Top Down: LL(1) RD–Bottom up:

•LR(0)•SLR•LR(1)\ CLR •LALR

ניתוחלקסיקלי

ניתוחתחבירי

ניתוחbackendסמנטי

אסימונים(tokens)

Page 2: תזכורת מתרגולים אחרונים

Canonical LR (CLR / LR(1) )מנתח LR(1)אלגוריתם • על לאלגוריתמים LRמבוסס בדומה

. שראינו הקודמים

•: הרעיון • , קונפליקטים למנוע מנת מצבי על את LR(0)נפרק

, על מידע גם המכילים יותר עדינים . lookaheadלמצביםפריט • מהו פריטים LR(1)נגדיר עבור סגור פונקצית ונגדיר

אלו. יבנה בעזרת פריטי LR(1)האוטומט הפרפיקסי עבור מנתח •

LR(1).כל שאר האלגוריתם: כולל בניית האוטומט + יצירת הטבלה •

.LR(0)נעשה באופן דומה ל ממנו וניהול המחסנית

Page 3: תזכורת מתרגולים אחרונים

LR(1)פריטי

פריט , LR(1)משמעות , לה: שמימין מה את למצוא מצפים אנו לנקודה שמשמאל מה את זיהינולפריט המצורף האסימון את מכן .ולאחר

. closure נעוץ רק ב-LR(1) ו-LR(0)ההבדל בין פריטי •

∪}${∋A→αβ ∈ P, t T) כאשר A→α●β,t הוא (LR(1)פריט • מוגדר באופן אינדוקטיבי:I על קבוצת פריטים )closureסגור (•

closure(I)=Iבסיס: •∋ x ולכל B→γ ∈ P אז לכל A→α●Bβ,t( ∈ closure(I)(צעד: אם • first(βt),

B→●γ,x (∈ closure(I)גם (:פונקצית המעברים של האוטומט•

, , ,closuX re A t A tI X X I

A→αβ ∈ P) כאשר A→α●β הוא (LR(0)פריט • מוגדר באופן אינדוקטיבי:I על קבוצת פריטים )closureסגור (•

closure(I)=Iבסיס: •B→●γ (∈ closure(I) גם (B→γ ∈ P אז לכל closure(I) ∋ )A→α●Bβ(צעד: אם •

:פונקצית המעברים של האוטומט• , closure A A IXI X X

Page 4: תזכורת מתרגולים אחרונים

LR (1)דוגמא 0. S` S$ 1. S A2. S aAa3. A a

a

S` ●S, $ S ●A, $S ●aAa, $A ●a, $

0

S a●Aa, $A a●, $A ●a, a

1

aA a●, a

AS aA●a, $

aS aAa●, $

2

3 4

A S

S` S●, $S A●, $

5 6

– בדקו!SLR ולא ב- LR(0)הדקדוק אינו ב- •

Page 5: תזכורת מתרגולים אחרונים

הניתוח טבלת בניית

(A→α●,t) ∈ Ii(S’→S●,$) ∈ Ii

Page 6: תזכורת מתרגולים אחרונים

- הרצהLR (1)דוגמא 0. S` S$ 1. S A2. S aAa3. A a

a $0 s11 s2 r32 r33 s44 r25 r16 acc

(0, )

(0, )(1,a)

מחסנית קלט

aaa$

aa$

(0, )(1,a)(2,a) a$

(0, )(1,a)(3,A) a$

(0, )(1,a)(3,A)(4,a) $

(0, )(6,S) $

S A6 5

3

actions goto

a

S` ●S, $ S ●A, $S ●aAa, $A ●a, $

0

S a●Aa, $A a●, $A ●a, a

1

aA a●, a

AS aA●a, $

aS aAa●, $

2

3 4

A S

S` S●, $S A●, $

5 6

Page 7: תזכורת מתרגולים אחרונים

LR(1) סיכום

•LR(1) :יתרונות יכול להתמודד עם כמות הדקדוקים הגדולה ביותר.–

• LR(1):חסרונות צורך כמות זיכרון רבה בשל גודל הטבלה הנוצרת–

נובע בעיקר מכמות המצבים המורחבת שנוצרת •באוטומט.

נרצה למצוא פיתרון:•יותר חסכוני בזיכרון.–היעילות שלו תשאר גבוהה: יוכל להתמודד עם כמות –

).LR(1)דקדוקים גדולה (כמעט כמו של

Page 8: תזכורת מתרגולים אחרונים

LALR

.LR(1)בניית אוטומט וטבלה כפי שעושה • זהה.LR(0)מאחד מצבים בעלי פריט •

A → c*,a A → c*,b

A → c*,(b,a)

LR(1)

LALR

Page 9: תזכורת מתרגולים אחרונים

LALR דוגמא -S → a A a | a B b | b A b | b B aA → aB → a

LR(1)נמצא דקדוק אשר שייך ל-LALRאך לא ל-

S’ → • S, $S → • a A a, $S → • a B b, $S → • b A b, $S → • b B a, $

S → b • A b, $S → b • B a, $A → • a, bB → • a, a

S → a • A a, $S → a • B b, $A → • a, aB → • a, b

A → a •, aB → a •, b

A → a •, bB → a •, a

a b

aa

LR(1): no conflict

Page 10: תזכורת מתרגולים אחרונים

LALR דוגמא -S → a A a | a B b | b A b | b B aA → aB → a

LR(1)נמצא דקדוק אשר שייך ל-LALRאך לא ל-

S’ → • S, $S → • a A a, $S → • a B b, $S → • b A b, $S → • b B a, $

S → b • A b, $S → b • B a, $A → • a, bB → • a, a

S → a • A a, $S → a • B b, $A → • a, aB → • a, b

a b

aa

LALR

A → a •, (a,b)B → a •, (a,b)LALR: R\R

conflict!

LR(1): no conflict

Page 11: תזכורת מתרגולים אחרונים

דקדוקים - סיכום

Page 12: תזכורת מתרגולים אחרונים

1שאלה

.LR(1) השייך למחלקה G=(V,T,P,S)נתון דקדוק •עבור כל אחד מהדקדוקים הבאים, רשמו האם •

:LR(1) ב בהכרחהוא

Page 13: תזכורת מתרגולים אחרונים

1שאלה

:LR(1)הדקדוק בהכרח ב • הוא משתנה חדש שאינו נגזר באגף Xהמשתנה –

ימין של אף כלל. t→X במצבי האוטומט, הכלל closureבזמן ביצוע –

לעולם לא ייכנס., שהוא חסר Gהאוטומט יהיה זהה לאוטומט של –

קונפליקטים.

Page 14: תזכורת מתרגולים אחרונים

1שאלה

.LR(1)אינו בהכרח ב •הכלל החדש יכול להפוך את הדקדוק לדו משמעי. –

לדוגמא:

Page 15: תזכורת מתרגולים אחרונים

:LR(1)הדקדוק בהכרח ב •לאוטומט מתווספים שני מצבים:–

,$ בלבד.●S’→tמצב אחד המכיל את הפריט •,$ בלבד.●S’→Sמצב אחד מכיל את הפריט •

בודד ואין מהם LR(1)במצבים אלו יש רק פריט –קשתות יוצאות, ולכן לא יגרמו לקונפליקט.

Page 16: תזכורת מתרגולים אחרונים

:LR(1)הדקדוק בהכרח ב •,$ S’→●tבנוסף למצב התחילי מתווספים הפריטים –

,$ שאינם יכולים לגרום לקונפליקט:S’→●Sו- לא יתווסף כי הפריטים החדשים לא R/Rקונפליקט •

.Reduceמובילים ל ,$ לא גרם להוספת קשת, וכל הפריטים S’→●Sהפריט •

שלו כבר היו לפני כן במצב התחילי closureשנמצאים ב של האוטומט.

, אך t,$ גרם להוספת קשת המסומנת ב S’→●tהפריט •במצב התחילי של האוטומט אין אף פריט מהצורה

A→α●,t מאחר ועבור כל פריט B→β●Aγ,r מתקיים t ∉first(γr).

Page 17: תזכורת מתרגולים אחרונים

.LR(1)אינו בהכרח ב •הכלל החדש יכול להפוך את הדקדוק לדו משמעי. –

לדוגמא:

ההבדל העיקרי מהסעיף הקודם הוא שכעת – יכול להשתתף בכללי דקדוק אחרים, Xהמשתנה

במצב S/Rולכן ייתכן מצב בו יתווסף קונפליקט התחילי של האוטומט.

1שאלה

Page 18: תזכורת מתרגולים אחרונים

2שאלה אשר באוטומט LR(1)קבעו האם ייתכן דקדוק •

שלו קיים המצב המצויין בסעיף (המצב בדיוק- ללא פריטים נוספים):

Page 19: תזכורת מתרגולים אחרונים

2שאלה

מצב כזה לא ייתכן:•אם נניח בשלילה שישנו מצב כזה, נקבל קונפליקט –

R/R במצב המתקבל ע"י מעבר על הקשת a..LR(1)התקבלה סתירה לכך שהדקדוק הוא –

Page 20: תזכורת מתרגולים אחרונים

2שאלה

מצב כזה לא ייתכן:•:aנסתכל על המצב המוביל אליו על גבי קשת –

A → a•aa, dA → •aa, e….

A → aa•a, dA → a•a, e

a

אינו נמצא בגרעין המצב, ולכן יש A → •aa,eהפריט . ולכן יש בו B → α•Aβ,tבמצב איזשהו פריט נוסף:

, ונקבל סתירה A → •aaa,first(βt)גם את הפריט יש רק את שני הפריטים המצויינים 2לכך שבמצב

בסעיף.

Page 21: תזכורת מתרגולים אחרונים

2שאלה

מצב כזה ייתכן:•לדוגמא הדקדוק:–

S →Ad|aAeA →aaa