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
אחרונים מתרגולים תזכורת
קומפיילר • של סכמתי מבנה
•: תחבירי ניתוח–Top Down: LL(1) , RD–Bottom up:
•LR(0)•SLR•LR(1)\ CLR •LALR
ניתוחלקסיקלי
ניתוחתחבירי
ניתוחסמנטי
backendאסימונים
(tokens)
למעלה – ניתוח BottomמלמטהUp
• , למשתנה עד להגיע ומנסים הקלט במילת הניתוח את מתחילים.) הגזירה ) עץ שורש ההתחלתי
•. אותה הגוזר במשתנה פסוקית תבנית מחליפים
מנתחי :LRתכונותהקלט • את (Lלימין )משמאלקוראיםהגזירה • את , R )הימניתמוצאים בסדר( לסדר הפוךביותר
הגזירה.
בגישת לניתוח :Bottom-Upדוגמא
מנתח LRמבנה:LRמנתח מכיל
הקלט 1( , סרט " סוף) וסימן הדקדוק טרמינלי של ב א בעלהקלט(.
. מחסנית2( עתה: עד שראינו הפסוקית התבנית את מייצג תוכנהרק יהיה תוכנה כאשר ייעצר .Sהניתוח הגזירה – עץ שורש
ניתוח 3( בדקדוק )טבלת - actionהתלויה (.gotoו
מנתח LRמבנה: המנתח בניית שלבי
הדקדוק 1( לפי פרפיקסי אוטומט בנייתהנתון
)2 " האוטומט פ ע הניתוח טבלת בנייתהפרפיקסי
: קלט על המנתח הרצת: יכול המנתח צעד בכל
למחסנית - מהקלט תו להכניסאו:
המחסנית - בראש פסוקית תבנית לצמצםאותה הגוזר למשתנה
LR(0)מנתח כלומר:, lookaheadאין LR(0)במנתח •
כל קריאת לאחר כלל כל לזהות מהאלגוריתם מצפים , שלו הימני ההמשך החלק קריאת .בלי
• LR(0) מנתחי מבין ביותר הפשוט .LRהוא
• . לנתח יצליח לא שהוא רבים דקדוקים קיימים
התכנות LR(1)אלגוריתם • שפות רב עם להתמודד מסוגלהקיימות.
האוטומט – LR(0)מנתח בנייתכאשר( A→α●βהוא )LR(0)פריט •
•. המנתח של מצבו את מסמל פריט
• , את: למצוא מצפים אנו וכעת הנקודה לפני שנמצא מה את זיהינו משמעותו
. מימינה שנמצא מה
פריטי • קבוצת הוא המנתח אוטומט ממצבי אחד .LR(0)כל
:שאלה הכלל: עבור לקבל אפשר פריטים ?A εאילו
A P
האוטומט – 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)פריטי
האוטומט – LR(0)מנתח בניית
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)
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
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מדוע. שמאל באגף רק הגזירה בחוקי יופיע ההתחלתי שהמשתנה מנת על
. הגזירה שהסתיימה ונדע במחסנית סימנים עוד שאין יובטח אכן ההתחלתי למשתנה בצמצום כך
הניתוח – LR(0)מנתח טבלת בניית
הניתוח – LR(0)מנתח טבלת בניית
טבלת :LR(0)למנתח actionהגדרת
טבלת :LR(0)למנתח gotoהגדרת
t Tשל אינדקס
מצב באוטומט
X V
דוגמא – הניתוח טבלת בניית
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
ה בטבלת אפשריות 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. שגיאה – על הודע
הניתוח אלגוריתם
: בקלט האסימונים $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
SLRמנתח לעומת • דקדוקים יותר לזהות .LR(0)יכול קונפליקטים ללא
לעומת • :LR(0)השינויפריט עם מצב מוסיפים , A αלכל ●reduce של בשורה Aמתאים
ה - , actionבטבלת ל שייך שבראשן שהאסימון לעמודות רקfollow(A).
המשתמש SLRב- • פרפיקסי אוטומט סמך על הניתוח טבלת את בונים.LR(0)בפריטי
טבלת :SLRלמנתח actionהגדרת
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
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) = {$}
במנתחי אפשריים LRקונפליקטיםיש • כאשר הניתוח בטבלת נוצר באותה 2קונפליקט יותר או שונות פעולות
. בטבלה משבצת
:2קיימים • קונפליקטים סוגי
:shift/reduceקונפליקט 1(
לצמצם ? או הקלט את לקרוא להמשיך האם
reduce/reduceקונפליקט : 2(
לצמצם ? גזירה כלל איזה לפי
קונפליקט: שאלה אין ?shift/shiftמדוע
קונפליקטים ? מתקבלים מתיהקונפליקט
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). ריק אינו
קונפליקט - 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)
קונפליקט - 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
קונפליקט - 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בדוגמא הקונפליקט את פותר אינו
קונפליקט - 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
קונפליקט - 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
קונפליקט - 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●
1שאלה G דקדוקLR(0) - ה מנתח תוכן LR(0)שבריצת התקבל שלו
המחסנית:
[0[,]x,a[,],y b[,],z S[,],w b]
: / הפרך ( הוכח א
G: כלל להכיל S->aיכול
' הפעם( כאשר א על ענו SLRהוא Gב
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)נמצא פ. ע
. מתקיים אכן זה המחסנית תוכן על הנתון
2שאלה - ש דקדוק Gנתון .SLRהוא
: הפרך/ הוכח
למנתח V={S}אם הפרפיקסי האוטומט עבור הפעולות טבלת אזLR(0) עבורG קונפליקט אינה .R/Rמכילה
. קונפליקט: שיש בשלילה נניח אם נכונה הטענה אז, R/Rתשובה : מהצורה פריטים שני יש שבו באוטומט מצב ● , S α● , S βיש
- ש גורר זה - Gאך ב לא גם . ) SLRהוא לב לשים יש לנתון בסתירהמנתח עבור גם אוטומט באותו מנתח LR(0)שמדובר עבור וגם
SLR הדקדוק (.Gעבור
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