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

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

  • Upload
    zytka

  • View
    71

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

קומפיילר • של סכמתי מבנה

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

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

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

ניתוחתחבירי

ניתוחסמנטי

backendאסימונים

(tokens)

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

למעלה – ניתוח BottomמלמטהUp

• , למשתנה עד להגיע ומנסים הקלט במילת הניתוח את מתחילים.) הגזירה ) עץ שורש ההתחלתי

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

מנתחי :LRתכונותהקלט • את (Lלימין )משמאלקוראיםהגזירה • את , R )הימניתמוצאים בסדר( לסדר הפוךביותר

הגזירה.

בגישת לניתוח :Bottom-Upדוגמא

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

מנתח LRמבנה:LRמנתח מכיל

הקלט 1( , סרט " סוף) וסימן הדקדוק טרמינלי של ב א בעלהקלט(.

. מחסנית2( עתה: עד שראינו הפסוקית התבנית את מייצג תוכנהרק יהיה תוכנה כאשר ייעצר .Sהניתוח הגזירה – עץ שורש

ניתוח 3( בדקדוק )טבלת - actionהתלויה (.gotoו

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

מנתח LRמבנה: המנתח בניית שלבי

הדקדוק 1( לפי פרפיקסי אוטומט בנייתהנתון

)2 " האוטומט פ ע הניתוח טבלת בנייתהפרפיקסי

: קלט על המנתח הרצת: יכול המנתח צעד בכל

למחסנית - מהקלט תו להכניסאו:

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

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

LR(0)מנתח כלומר:, lookaheadאין LR(0)במנתח •

כל קריאת לאחר כלל כל לזהות מהאלגוריתם מצפים , שלו הימני ההמשך החלק קריאת .בלי

• LR(0) מנתחי מבין ביותר הפשוט .LRהוא

• . לנתח יצליח לא שהוא רבים דקדוקים קיימים

התכנות LR(1)אלגוריתם • שפות רב עם להתמודד מסוגלהקיימות.

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

האוטומט – LR(0)מנתח בנייתכאשר( A→α●βהוא )LR(0)פריט •

•. המנתח של מצבו את מסמל פריט

• , את: למצוא מצפים אנו וכעת הנקודה לפני שנמצא מה את זיהינו משמעותו

. מימינה שנמצא מה

פריטי • קבוצת הוא המנתח אוטומט ממצבי אחד .LR(0)כל

:שאלה הכלל: עבור לקבל אפשר פריטים ?A εאילו

A P

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

האוטומט – LR(0)מנתח בנייתA→αβ Pכאשר( A→α●βהוא )LR(0)פריט •

פריטי • קבוצת הוא המנתח אוטומט ממצבי אחד .LR(0)כל

פריטים (closureסגור )• קבוצת מוגדר באופן אינדוקטיבי:Iעל

closure(I)=Iבסיס: •

אז)closure)I (A→α●Bβ)צעד: אם •

closure(I) (B→●γ גם )B→γ Pלכל

:פונקצית המעברים של האוטומט•

, closure A A IXI X X

X T V קבוצתLR(0)פריטי

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

האוטומט – LR(0)מנתח בניית

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

LR (0)דוגמא - 0) S’ S1) S aA2) S aB3) A a4) B b

S` ●SS ●aAS ●aB

0

•: פרפיקסי אוטומט בניית

I0 = closure({S’→●S})

• closure(I)=I• If (A→α●Bβ) closure(I) , then for all B→γ P, add (B→●γ) to closure(I)

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

LR (0)דוגמא - 0) S’ S1) S aA2) S aB3) A a4) B b

a

S` ●SS ●aAS ●aB

0S a●AS a●BA ●aB ●b

2

S

S’ S●1

•: פרפיקסי אוטומט בניית

,I X closure A X A X I

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

LR (0)דוגמא - 0) S’ S1) S aA2) S aB3) A a4) B b

a

S` ●SS ●aAS ●aB

0S a●AS a●BA ●aB ●b

2 BS aB●

AS aA●

3

4

S

S’ S●1

•: פרפיקסי אוטומט בניית

aA a● 5b

B b● 6

כלל: הערה את מוסיפים ?0מדוע. שמאל באגף רק הגזירה בחוקי יופיע ההתחלתי שהמשתנה מנת על

. הגזירה שהסתיימה ונדע במחסנית סימנים עוד שאין יובטח אכן ההתחלתי למשתנה בצמצום כך

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

הניתוח – LR(0)מנתח טבלת בניית

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

הניתוח – LR(0)מנתח טבלת בניית

טבלת :LR(0)למנתח actionהגדרת

טבלת :LR(0)למנתח gotoהגדרת

t Tשל אינדקס

מצב באוטומט

X V

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

דוגמא – הניתוח טבלת בניית

a b $

0 s2

1 acc

2 s5 s6

3 r2 r2 r2

4 r1 r1 r1

5 r3 r3 r3

6 r4 r4 r4

S A B

1

4 3

actions goto

a

S` ●SS ●aAS ●aB

0S a●AS a●BA ●aB ●b

2B

S aB●

AS aA●

3

4

S

S’ S●1

aA a● 5b

B b● 6

0) S’ S1) S aA2) S aB3) A a4) B b

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

ה בטבלת אפשריות Actionפעולות

- ב .tנסמן הקלט בראש הטרמינל הוא

•shift(k) ( - בצעshift מצב ( :kאלאת )1. למחסנית ( .k,tדחוף.2. ימינה אחד צעד הקלט את הקורא הראש את קדם

•reduce(j) ( - בצעreduce הגזירה כלל הוא A→αלפי (:jשמספרו. αהוצא |1. ב| סמן מהמחסנית שהתגלה’ kזוגות המצב את

. המחסנית בראש

את )2. למחסנית ( .goto[k’,A],Aדחוף

את 3. כפלט להוציא (. jניתן השתמשנו ) בו הגזירה כלל מספר

הימנית הגזירה את תיתן הפוך בסדר הגזירה כללי הדפסת

ביותר.

•accept : ( . לפעולה – שקול הערה המילה את (.reduce(0)קבל•error. שגיאה – על הודע

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

הניתוח אלגוריתם

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

: בקלט האסימונים $abרצף

קלט מחסנית פעולה

ab$ (0, ) Action[0,a] = Shift 2

b$ (0, ), (2,a) Action[2,b] = Shift 6

$ (0, ), (2,a), (6,b) Action[6,$] = Reduce (4)

$ (0, ), (2,a), (3,B) Action[3,$] = Reduce (2)

$ (0, ), (1,S) Action[1,$] = accept

הרצה - LR (0)דוגמא

0) S’ S1) S aA2) S aB3) A a4) B b

[goto(2,B)=3]

[goto(0,S)=1]

, חוקית פסוקית תבנית של רישא הוא המחסנית תוכן שלב בכל

a b $

0 s2

1 acc

2 s5 s6

3 r2 r2 r2

4 r1 r1 r1

5 r3 r3 r3

6 r4 r4 r4

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

SLRמנתח לעומת • דקדוקים יותר לזהות .LR(0)יכול קונפליקטים ללא

לעומת • :LR(0)השינויפריט עם מצב מוסיפים , A αלכל ●reduce של בשורה Aמתאים

ה - , actionבטבלת ל שייך שבראשן שהאסימון לעמודות רקfollow(A).

המשתמש SLRב- • פרפיקסי אוטומט סמך על הניתוח טבלת את בונים.LR(0)בפריטי

טבלת :SLRלמנתח actionהגדרת

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

SLRדוגמא - 0) S’ S1) S aA2) S aB3) A a4) B b

a

S` ●SS ●aAS ●aB

0S a●AS a●BA ● aB ● b

2 BS aB ●

AS aA ●

3

4

S

S’ S●1

•: דבר – אותו נשאר פרפיקסי אוטומט

aA a ● 5b

B b ● 6

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

SLRדוגמא - 0) S’ S1) S aA2) S aB3) A a4) B b

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

a b $

0 s2

1 acc

2 s5 s6

3 r2

4 r1

5 r3

6 r4

S A B

1

4 3

actions goto

follow(S) = follow(A) = follow(B) = {$}

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

במנתחי אפשריים LRקונפליקטיםיש • כאשר הניתוח בטבלת נוצר באותה 2קונפליקט יותר או שונות פעולות

. בטבלה משבצת

:2קיימים • קונפליקטים סוגי

:shift/reduceקונפליקט 1(

לצמצם ? או הקלט את לקרוא להמשיך האם

reduce/reduceקונפליקט : 2(

לצמצם ? גזירה כלל איזה לפי

קונפליקט: שאלה אין ?shift/shiftמדוע

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

קונפליקטים ? מתקבלים מתיהקונפליקט

LR(0) SLR

S\R קיימים מצב :2באותו מהצורה פריטיםA α●tβ

B δ●

:LR(0)כמו נדרש, ובנוסףt - ב follow(B)נמצא

R\R קיימים מצב :2באותו מהצורה פריטיםA α●B β●

:LR(0)כמו נדרש, ובנוסףבין - follow(A)החיתוך ל follow(B). ריק אינו

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

קונפליקט - R\Rדוגמא0. S` S$ 1. S Aa 2. S Bb3. A b4. B b

b

a b $

0 s1

1 r3,r4 r3,r4 r3,r4

………

S` ●S$ S ●Aa S ●BbA ●bB ●b

0

A b●B b●

1

LR(0)

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

קונפליקט - R\Rדוגמא0. S` S$ 1. S Aa 2. S Bb3. A b4. B b

a b $

0 s1

1 r3,r4r3

r3,r4r4

r3,r4

SLR Follow(A)={a}Follow(B)={b}

ל מעבר כי לב .SLRנשים זה במקרה הקונפליקט את פותר

b

S` ●S$ S ●Aa S ●BbA ●bB ●b

0

A b●B b●

1

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

קונפליקט - R\Rדוגמא

•: הבא הדקדוק עבור $S` S .0אבל1. S Aa 2. S Ba3. A b4. B b

b

a b $

0 s1

1 r3, r4

………

S` ●S$ S ●Aa S ●BaA ●bB ●b

0

A b●B b●

1

SLR Follow(A)={a}Follow(B)={a}

ל מעבר זו .SLRבדוגמא הקונפליקט את פותר אינו

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

קונפליקט - R\Sדוגמא0. S` S$ 1. S A2. S aAa3. A a

a

a $

0 s1

1 r3, s2 r3

………

S` ●S$ S ●AS ●aAaA ●a

0

S a●AaA a●A ●a

1

LR(0)

a A a●

2

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

קונפליקט - R\Sדוגמא0. S` S$ 1. S A2. S aAa3. A a

a $

0 s1

1 r3, s2 r3

LR(0) SLR Follow(A)={a, $}

a

S` ●S$ S ●AS ●aAaA ●a

0

S a●AaA a●A ●a

1

a A a●

2

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

קונפליקט - R\Sדוגמא0. S` S$ 1. S A2. S aAa3. A a

a $

0 s1

1 r3, s2r3, s2

r3r3

LR(0) SLR Follow(A)={a, $}

a

S` ●S$ S ●AS ●aAaA ●a

0

S a●AaA a●A ●a

1

, ב גם קיים הקונפליקט זו ב LR(0)בדוגמא .SLRוגם

a

2

A a●

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

1שאלה G דקדוקLR(0) - ה מנתח תוכן LR(0)שבריצת התקבל שלו

המחסנית:

[0[,]x,a[,],y b[,],z S[,],w b]

: / הפרך ( הוכח א

G: כלל להכיל S->aיכול

' הפעם( כאשר א על ענו SLRהוא Gב

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

1שאלה G דקדוקLR(0) - ה מנתח :LR(0)שבריצת המחסנית תוכן התקבל שלו

[0[,]x,a[,],y b[,],z S[,],w b]

: / הפרך ( הוכח א

G: כלל להכיל S->aיכול

- Gתשובה: . ב כזה כלל שקיים בשלילה נניח אם זה כלל להכיל יכול , Gלאשבמצב נקבל קונפליקט xאז יש בקלט s/rבאוטומט הבא האסימון אם

- bהוא ש, לכך סתירה .LR(0)הוא Gוזו

' הפעם( כאשר א על ענו SLRהוא Gב

, Gתשובה: . כעת אך הקודם לסעיף דומה הנימוק זה כלל להכיל יכול לא - ב שמדובר - SLRכיוון ש, להתקיים גם - bצריך ב " follow(S)נמצא פ. ע

. מתקיים אכן זה המחסנית תוכן על הנתון

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

2שאלה - ש דקדוק Gנתון .SLRהוא

: הפרך/ הוכח

למנתח V={S}אם הפרפיקסי האוטומט עבור הפעולות טבלת אזLR(0) עבורG קונפליקט אינה .R/Rמכילה

. קונפליקט: שיש בשלילה נניח אם נכונה הטענה אז, R/Rתשובה : מהצורה פריטים שני יש שבו באוטומט מצב ● , S α● , S βיש

- ש גורר זה - Gאך ב לא גם . ) SLRהוא לב לשים יש לנתון בסתירהמנתח עבור גם אוטומט באותו מנתח LR(0)שמדובר עבור וגם

SLR הדקדוק (.Gעבור

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

3שאלה : המחלקות בין הכלה יחסי יש ?LL(1) , LR(0) , SLRהאם

- LR(0) - ב SLRמוכלת

דקדוק - - Gלכל , ב הוא אם אפסילון כללי בו - LL(1)שאין ב גם הוא אזLR(0).

- - ב לדקדוק - LL(1)דוגמא ב LR(0): S a| εשאינו

- - ב לדקדוק - LL(1)דוגמא ב SLR: S AaAb | BbBaשאינוA εB ε

- - ב לדקדוק - LR(0)דוגמא ב LL(1): S aA | aBשאינוA aB b