Professional Documents
Culture Documents
קומפיילרים SLR
קומפיילרים SLR
חשוב מאוד :בתרגיל זה ,כאשר אתם מחשבים את הקבוצות של ) ,LR(0חובה לפעול לפי
הכללים הבאים:
)1לכל קבוצת פריטים ,יש לחשב את כל ערכי GOTOשלה לפני שמחשבים את
הערכים עבור קבוצה אחרת.
מ ְספֵּרּו את כלליו.
.1רשמו דקדוק מוגדל ( )Augmented Grammarעבור הדקדוק הנתון ו ַ
𝑇 → 𝐸 )(3
𝐹 ∗ 𝑇 → 𝑇 )(4
𝐹 → 𝑇)(5
𝐹 ∗→ 𝐹 )(6
𝐵 → 𝐹 )(7
𝑑𝑖 → 𝐵 )(8
𝑑𝑖 (9) 𝐵 → 𝐵.
)𝐹( → 𝐵 )(10
}
נריה מחפוד 213919616ויהודה אלנתן 326376445 קומפיילרים 4 לק"י
.2חשבו את מצבי הקבוצה ) LR(0מעל הדקדוק המוגדל .בנו את טבלת המעברים המתאימה.
𝒒𝟏𝟓 = {𝑬 → 𝑻 ⋮, 𝑻 → 𝑻 ⋮∗ 𝑭} = 𝑪𝒍𝒐𝒔(𝒒𝟏𝟓 ) = {𝑬 → 𝑻 ⋮, 𝑻 → 𝑻 ⋮∗ 𝑭}
𝑞15 | ∗= { 𝑇 → 𝑇 ∗⋮ 𝐹} = 𝐶𝑙𝑜𝑠(𝑞12 )
𝑞0 |𝐹 = {𝑇 →⋮ 𝐹} = 𝐶𝑙𝑜𝑠(𝑞14 )
𝑞0 |𝐵 = {𝐹 →⋮ 𝐵, 𝐵 →⋮ 𝐵. 𝑖𝑑} = 𝐶𝑙𝑜𝑠(𝑞6 )
Q 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Id 1 1 1 8 1 1
. 7
+ 10
* 2 2 2 2 12 2 12
( 3 3 3 3 3
) 5
S
E 9
T 15 11
F 14 16 4 14 13
B 6 6 6 6 6
חלק ב'
.1הציגו בטבלאות את פעולת המנתחים ,שבניתם בחלק א' ,על הקלטים הבאים .בכל שלב,
הציגו את תוכן המחסנית ואת הקלט הנותר .עבור ,SLRציינו גם את הפעולה המדויקת
העומדת להתבצע.
.2ציירו את העץ ,הנוצר ע"י המנתח ,כפי שהוא נראה מיד לאחר שנקרא הקלט ,המסומן בקו
(כלומר ,ברגע הראשון בו קלט זה כבר אינו שייך לקלט הנותר).
עבור ):L(G1
$ 0 E 9 + 10 * 2 B 6 R7
$ 0 E 9 + 10 * 2 F 16 R6
$ 0 E 9 + 10 F 14 R5
$ 0 E 9 + 10 T 11 R2
$ 0E9 Acc
E +
T * F
F * F
B B
B . id2 B . id4
id1 id3
326376445 ויהודה אלנתן213919616 נריה מחפוד 4 קומפיילרים לק"י
:1 שאלה
1. F’->F
2. F → foreach var ( L )
3. F → foreach var ( R )
4. L → L , I
5. L → I
6. I → list
7. I → var
8. R → var .. var
:2 שאלה
F → • foreach var ( R ) } F → • foreach var ( L ) , F’-> •F, }S0=
F’-> F•}}S1=
S6={ L → I•}
R->var•…var} S8={I->var•,
S9={I->list•}
={ R->var…•var}3S1
={ L → L , I•}4S1
{={I->var•15S
={ R->var…var•}6S1
ACTION GO TO
forehch var list .. , ( ) $ F L I B
0 S2 1
1 ACC
2 S3
3 S4
4 S8 S9 5 6 7
5 S10 S11
6
7 S12
8 3S1
9
10 15S S9 41
11
12
13 16
14
15
61
3שאלה
ACTION GO TO
forehch var list .. , ( ) $ F L I B
0 S2 1
1 ACC
2 S3
נריה מחפוד 213919616ויהודה אלנתן 326376445 קומפיילרים 4 לק"י
3 S4
4 S8 S9 5 6 7
5 S10 S11
6 R4 R4
7 S12
8 3S1
9 R5 R5
10 15S S9 41
11 R1
12 R2
13 16
14 R3 R3
15 R6 R6
61 R7
326376445 ויהודה אלנתן213919616 נריה מחפוד 4 קומפיילרים לק"י
:חלק ב
מחסנית
Foreach var 1(var2..var 3,list)$ 0
var 1(var2..var 3,list)$ 0foreach2
(var2..var 3,list)$ 0 foreach 2 var1 3
var2..var 3,list)$ 0 foreach 2 var1 3 ( 4
..var 3,list)$ 0 foreach 2 var1 3 ( 4 var 2 8
var 3,list)$ 0 foreach 2 var1 3 ( 4 var 2 8.. 13
,list)$ 0 foreach 2 var1 3 ( 4 var 2 8.. 13 var 3 16
ERROR