Upload
elijah-guerra
View
60
Download
0
Embed Size (px)
DESCRIPTION
מנתח LL(1). נכתב ע"י אלכס קוגן ( (sakogan@cs סמסטר חורף, תשס"ח. S. A. תזכורת מהתרגול הקודם. ניתוח Top-Down : מתחילים מ- S , מפעילים כללי גזירה עד שמגיעים למילת הקלט. A α A β ?. שיטת Recursive Descent שיפור מנגנון ההחלטה - PowerPoint PPT Presentation
Citation preview
LL(1)מנתח
sakogan@cs(נכתב ע"י אלכס קוגן (סמסטר חורף, תשס"ח
1
תזכורת מהתרגול הקודם
, מפעילים S: מתחילים מ-Top-Downניתוח •כללי גזירה עד שמגיעים למילת הקלט.
S
A
A αA β ?
Recursive Descentשיטת •שיפור מנגנון ההחלטה•
כדי להחליט איזה כלל להפעיל על סמך הטרמינל –select2הבא הנצפה בקלט, הגדרנו את פונקצית
3
תזכורת (המשך)
•select(Aα) קבוצת כל הטרמינלים אשר יגרמו :.Aלבחור בכלל הזה עבור המשתנה
, הגדרנו את פונקציות העזר selectלצורך חישוב •first-ו follow
•first(A) כל הטרמינלים שיכולים להופיע בתחילת :.Aמילה שנגזרת מ-
•first(α) ההרחבה של :first.לתבניות פסוקיות
•follow(A) אחרי: כל הטרמינלים שיכולים להופיע .כלשהי בגזירה Aהמשתנה
LL(1)מנתח ניתוח שמאלי ביותר, מייצר משמאל לימיןקורא קלט •
. של טרמינל אחדlookaheadונעזר ב- בעת הניתוח.selectמסתמך על פונקצית •
אם ורק אם לא קיים LL(1) קיים מנתח Gלדקדוק •קונפליקט בדקדוק, כלומר לכל שני כללים בדקדוק עבור
:Aα , Aβאותו המשתנה- select(Aα) ∩ select(Aβ) = Ø
הרעיון: לחקות בעזרת מחסנית את תכנית ה - •Recursive Descent
RDשקול בכוח הניתוח ל-–4
מבני נתונים של המנתח•Q שרוצים עדיין : מחסנית הניתוח שמחזיקה את מה
לראותבראש המחסנית - מה שרוצים לראות מיד–Sאתחול: בראש המחסנית יהיה –pop, push, topתומכת בפעולות –
•M טבלה שאומרת איזה כלל גזירה יש להפעיל בהינתן :המשתנה הבא לגזירה והטרמינל הבא בקלט
M (X,t) = X α t select(X α)
error otherwise X Vt T
5 מכיל איבר אחד בלבדMכאשר אין קונפליקטים, כל תא של
דוגמה
נתון דקדוק הבא:•S Ab | bC
A a
C cA.LL(1) של מנתח Mנבנה טבלת • selectלצורך כך, נחשב תחילה את פונקציית •
עבור כל כלל גזירה.
6
דוגמה (המשך)
select(SAb) = {a}
select(SbC) = {b}
select(Aa) = {a}
select(CcA) = {c}
$ c b a
SbC SAb S
Aa A
CcA C
בניית הטבלה
errorהמקומות הריקים מכילים
M:
7
פעולות המנתח•MATCH t,t : הוצאת טרמינלים תואמים מהקלט
ומהמחסנית.אם הם לא תואמים עוצרים עם הודעת שגיאה.
•PREDICT X,t : החלפת משתנהX בצד ימין של כלל גזירה מתאים
איזה כלל גזירה להפעילM(X,t)חפש ב-–, עצור עם הודעת שגיאהerrorאם מצאת • מהמחסנית X. הוצא את X Y1Y2…Ynאחרת, נניח שזהו כלל •
למחסנית בסדר הפוך Y1Y2…Ynודחוף המחסניתבראש Y1כאשר
A
b
B
C
d
bPREDICT A,eכאשר
M(A,e) = A BCd
ראש
ראש
8
אלגוריתם הניתוחInit: push(Q,S), t is the next terminal in input1. If (isEmpty(Q))
– if (t == $), report success // $ - end of input– else, report error
2. else– X = top(Q)– if (X is terminal)
MATCH (X,t)– if (X is variable)
PREDICT (X,t)
3. goto 1
9
המשך הדוגמה
:bcaריצת המנתח על המילה •
פעולה קלט מחסנית
bca$ S
10
c b a
S bC
S Ab
S
Aa A
C cA
C
X = top(Q) if (X is terminal)
MATCH (X,t) if (X is variable)
PREDICT (X,t)
:bcaריצת המנתח על המילה •
פעולה קלט מחסנית
predict S,b bca$ S
bca$ Cbראש
המחסנית
11
המשך הדוגמהX = top(Q) if (X is terminal)
MATCH (X,t) if (X is variable)
PREDICT (X,t)
c b a
S bC
S Ab
S
Aa A
C cA
C
:bcaריצת המנתח על המילה •
פעולה קלט מחסנית
predict S,b bca$ S
match b,b bca$ Cb
predict C,c ca$ C
match c,c ca$ Ac
predict A,a a$ A
match a,a a$ a
success $ <empty>12
המשך הדוגמה
c b a
S bC
S Ab
S
Aa A
C cA
C
X = top(Q) if (X is terminal)
MATCH (X,t) if (X is variable)
PREDICT (X,t)
שאלה לדוגמה
אשר מקיים:Gתנו דוגמה לדקדוק ח"ה .1L(G).מכילה לפחות שתי מילים .2G אינו דקדוק LL(1)..3G הינו דקדוק LL(k) עבור k>1. Gמספר המשתנים, הטרמינלים וכללי הגזירה ב-4.
1-3הוא המינימלי שניתן לבחור כך שהדרישות יתקיימו.
13
פתרון השאלה
הדקדוק חייב להכיל לפחות •שני כללי גזירה מאותו משתנה
מדוע?–חייב להיות לפחות משתנה אחד•
מדוע?–חייב להיות לפחות טרמינל אחד•
מדוע?–לפיכך, נציע:•
S aa | a
.1L(G) מכילה לפחות שתי מילים.
.2G אינו דקדוק LL(1).
.3G הינו דקדוק LL(k) עבור k>1 .
.4 G 1 מינימלי עבור-3
S AABA aB b
עבור כל אחת מהאפשרויות הבאות, קבעו האם תוכן המחסנית הנתון
עבור הדקדוק הנ"ל על LL(1)בה, יכול להתקבל בריצה של המנתח
מילת קלט כלשהי (שאינה בהכרח בשפה). הסימן הימני ביותר הוא
בראש המחסנית:BAא.Baב.bAג. Aaד.
15
נתון הדקדוק הבא:
שאלה ממבחן (מועד א', אביב, תשס"ז)
שאלה ממבחן - המשך
BAא.
Baב.bAג.Aaד.
: נבנה את הטבלה: 1שלב
16
b a
S AAB S
A a A
B b B
S AABA aB b
BAא.
Baב.bAג.Aaד.
: נבנה לפי הטבלה את המצבים האפשריים במחסנית: 2שלב
S, BAA, BAa, BA, Ba, B, b --- ----- ----- ---- ---- --- --- ---
BA and Ba are ok …17
b a
S AAB S
A a A
B b B
שאלה ממבחןנתונים שני דקדוקים:
כך ש:
(שימו לב, קבוצת הטרמינלים משותפת)
נגדיר:
טבעי כך ש kהוכח/הפרך: קיים
18
שאלה ממבחן
אם ורק אם לא קיים LL(k) יש מנתח Gלדקדוק • טרמינלים.k של lookaheadקונפליקט בדקדוק עבור
או במילים אחרות, אין שני כללי גזירה המתאימים •לאותו התא בטבלה
M:
19
שאלה ממבחן ( ):k=2למשל עבור •
20
$$ b$ bb ba a$ ab aa
S
V1 variables
…
V2 variables
…
M:
שאלה ממבחן
אם ורק אם לא קיים LL(k) יש מנתח Gלדקדוק • טרמינלים.k של lookaheadקונפליקט בדקדוק עבור
במקרה זה הטענה אינה נכונה. נייצר דוגמא נגדית:•
k ולכן לכל Gלמילה יהיו שתי גזירות שונות בM(S,) יהיה קונפליקט בתא 1גדול/שווה ל-
21