תזכורת מתרגולים אחרונים
DESCRIPTION
backend. ניתוח סמנטי. ניתוח תחבירי. ניתוח לקסיקלי. תזכורת מתרגולים אחרונים. מבנה סכמתי של קומפיילר ניתוח תחבירי: Top Down : LL(1) RD Bottom up : LR(0) SLR LR(1) \ CLR LALR. אסימונים (tokens). Canonical LR (CLR / LR(1) ). - PowerPoint PPT PresentationTRANSCRIPT
תזכורת מתרגולים אחרוניםמבנה סכמתי של קומפיילר•
ניתוח תחבירי:•–Top Down: LL(1) RD–Bottom up:
•LR(0)•SLR•LR(1)\ CLR •LALR
ניתוחלקסיקלי
ניתוחתחבירי
ניתוחbackendסמנטי
אסימונים(tokens)
Canonical LR (CLR / LR(1) )מנתח LR(1)אלגוריתם • על לאלגוריתמים LRמבוסס בדומה
. שראינו הקודמים
•: הרעיון • , קונפליקטים למנוע מנת מצבי על את LR(0)נפרק
, על מידע גם המכילים יותר עדינים . lookaheadלמצביםפריט • מהו פריטים LR(1)נגדיר עבור סגור פונקצית ונגדיר
אלו. יבנה בעזרת פריטי LR(1)האוטומט הפרפיקסי עבור מנתח •
LR(1).כל שאר האלגוריתם: כולל בניית האוטומט + יצירת הטבלה •
.LR(0)נעשה באופן דומה ל ממנו וניהול המחסנית
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
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)הדקדוק אינו ב- •
הניתוח טבלת בניית
(A→α●,t) ∈ Ii(S’→S●,$) ∈ Ii
- הרצה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
LR(1) סיכום
•LR(1) :יתרונות יכול להתמודד עם כמות הדקדוקים הגדולה ביותר.–
• LR(1):חסרונות צורך כמות זיכרון רבה בשל גודל הטבלה הנוצרת–
נובע בעיקר מכמות המצבים המורחבת שנוצרת •באוטומט.
נרצה למצוא פיתרון:•יותר חסכוני בזיכרון.–היעילות שלו תשאר גבוהה: יוכל להתמודד עם כמות –
).LR(1)דקדוקים גדולה (כמעט כמו של
LALR
.LR(1)בניית אוטומט וטבלה כפי שעושה • זהה.LR(0)מאחד מצבים בעלי פריט •
A → c*,a A → c*,b
A → c*,(b,a)
LR(1)
LALR
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
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
דקדוקים - סיכום
1שאלה
.LR(1) השייך למחלקה G=(V,T,P,S)נתון דקדוק •עבור כל אחד מהדקדוקים הבאים, רשמו האם •
:LR(1) ב בהכרחהוא
1שאלה
:LR(1)הדקדוק בהכרח ב • הוא משתנה חדש שאינו נגזר באגף Xהמשתנה –
ימין של אף כלל. t→X במצבי האוטומט, הכלל closureבזמן ביצוע –
לעולם לא ייכנס., שהוא חסר Gהאוטומט יהיה זהה לאוטומט של –
קונפליקטים.
1שאלה
.LR(1)אינו בהכרח ב •הכלל החדש יכול להפוך את הדקדוק לדו משמעי. –
לדוגמא:
:LR(1)הדקדוק בהכרח ב •לאוטומט מתווספים שני מצבים:–
,$ בלבד.●S’→tמצב אחד המכיל את הפריט •,$ בלבד.●S’→Sמצב אחד מכיל את הפריט •
בודד ואין מהם LR(1)במצבים אלו יש רק פריט –קשתות יוצאות, ולכן לא יגרמו לקונפליקט.
:LR(1)הדקדוק בהכרח ב •,$ S’→●tבנוסף למצב התחילי מתווספים הפריטים –
,$ שאינם יכולים לגרום לקונפליקט:S’→●Sו- לא יתווסף כי הפריטים החדשים לא R/Rקונפליקט •
.Reduceמובילים ל ,$ לא גרם להוספת קשת, וכל הפריטים S’→●Sהפריט •
שלו כבר היו לפני כן במצב התחילי closureשנמצאים ב של האוטומט.
, אך t,$ גרם להוספת קשת המסומנת ב S’→●tהפריט •במצב התחילי של האוטומט אין אף פריט מהצורה
A→α●,t מאחר ועבור כל פריט B→β●Aγ,r מתקיים t ∉first(γr).
.LR(1)אינו בהכרח ב •הכלל החדש יכול להפוך את הדקדוק לדו משמעי. –
לדוגמא:
ההבדל העיקרי מהסעיף הקודם הוא שכעת – יכול להשתתף בכללי דקדוק אחרים, Xהמשתנה
במצב S/Rולכן ייתכן מצב בו יתווסף קונפליקט התחילי של האוטומט.
1שאלה
2שאלה אשר באוטומט LR(1)קבעו האם ייתכן דקדוק •
שלו קיים המצב המצויין בסעיף (המצב בדיוק- ללא פריטים נוספים):
2שאלה
מצב כזה לא ייתכן:•אם נניח בשלילה שישנו מצב כזה, נקבל קונפליקט –
R/R במצב המתקבל ע"י מעבר על הקשת a..LR(1)התקבלה סתירה לכך שהדקדוק הוא –
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לכך שבמצב
בסעיף.
2שאלה
מצב כזה ייתכן:•לדוגמא הדקדוק:–
S →Ad|aAeA →aaa