Transcript Document
ادخ مان هب
یحارط اهرلیاپماک
40 414 7
) 1 ( LR یوحن یاهرگلیلحت
:) دشاب مه اراک هک ( شهاک لاقتنا یوحن لیلحت شور نیرت یوق
LR (k)
o
تسار هب پچ شیوپ درگ تسار قاقتشا : یدورو یدعب ی هناشن k ) دسنیون یمن ار k ،دشاب k = 1 رگا ( اریز ،تسا هجوت بلاج LR یوحن لیلحت ) تسه مه ا راک ًانمض هک ( تسا درگ بقع نودب ،شهاک لاقتنا یوحن لیلحت شور نیرت یلک LR یوحن لیلحت
ی هرس ی هعومجمریز ،دنا یوحن لیلحت لباق LR شور کمک هب هک ) ی یاهرمارگ ( ی یاه نابز ی هعومجم
دنا لیلحت لباق ) LL(1) ًلاثم ( وگ شیپ یوحن یاهرگلیلحت کمک هب هک تسا ) ی یاهرمارگ ( ی یاه نابز
o
فشک ، LR یوحن رگلیلحت دنک یم
1
) 2 ( LR یوحن یاهرگلیلحت
: LR یوحن یاهرگلیلحت دنهد یم ششوپ ار اهرمارگ زا یگرزب هورگ
هداس LR یوحن رگلیلحت :) Simple LR ( SLR
LR یوحن رگلیلحت نیرت یلک : LR
) طسوتم ( ینایم LR یوحن رگلیلحت :) Look-Ahead LR ( LALR
رد اهنت ن اش توافت و ) تسا ناسکی اه ن ا یوحن لیلحت متیروگلا ( دننک یم راک مه لثم LALR و ، LR ، SLR
o
تسا لیلحت لودج 2
هرابنا S m X m S m-1 X m-1 .
.
S 1 X 1 S 0
) 1 ( LR یوحن لیلحت متیروگلا
a 1 … a i … a n $ یدورو ی وحن لیلحت متیروگلا LR لامعا لودج
(Action Table)
$ و اه هنایاپ فلتخم لمع 4 یجورخ Goto لودج
(Goto Table)
اه هنایاپریغ ی هرامش اه هناخ رد دو ش یم هتشون اه تلاح 3
) 2 ( LR یوحن لیلحت متیروگلا
: LR یوحن لیلحت یدنبرکیپ کی
o (
S 0 X 1 S 1 هرابنا ...
X m S m a i a i+1 … a n $
)
یدورو ی هدنام یقاب رد هرابنا ( دننک یم صخشم لیلحت لودج هب عوجر اب ار رگلیلحت یدعب مدق ، a i و S m
o
) تسا S 0 یواح طقف ادتبا : دهد یم ناشن ار درگ تسار یا هلمج مرف LR یوحن لیلحت یدنبرکیپ کی
o
X 1 … X m a i a i+1 … a n $ 4
) 1 ( LR یوحن رگلیلحت یاه لمع
دهد یم رارق هرابنا یور ، s تلاح هارمه هب ار یدعب یدورو : s لاقتنا ) 1 (
o
( S 0 X 1 S 1 … X m S m , a i a i+1 … a n $ ) → (S 0 X 1 S 1 … X m S m a i s , a i+1 … a n $ ) :) تسا هدعاق ی هرامش n هک ، n شهاک ای ( A → β شهاک هرابنا یور زا رصنع 2 × |β| ) =r ( نتشادرب s = goto[sm-r, A] هک یروط هب ،هرابنا یور s و A نداد رارق ) 2 (
o
( S 0 X 1 S 1 … X m S m , a i a i+1 … a n $ ) → (S 0 X 1 S 1 … X m-r S m-r A s , a i … a n $ ) A → β ی هدعاق ،یجورخ
دسر یم مامتا هب تیقفوم اب یوحن لیلحت : شریذپ ) 3 (
o
) لیلح ت لودج رد یلاخ یا هناخ ( دهد یم صیخشت ار اطخ کی یوحن رگلیلحت : اطخ ) 4 (
o
5
) 2 ( LR یوحن رگلیلحت یاه لمع
شهاک لمع
o
β = Y 1 Y 2 … Y r دینک ضرف ؛هرابنا یور زا رصنع 2 × |β| ) =r ( نتشادرب s = goto[S m-r , A] هک یروط هب ،هرابنا یور s و A نداد رارق
( S 0 X 1 S 1 … X m-r S m-r Y 1 S m-r … Y r S m , a i a i+1 … a n $ ) → (S 0 X 1 S 1 … X m-r S m-r A s , a i … a n $ ) تسا هریگتسد کی Y1 Y2 … Yr ،تقیقح رد
X 1 … X m-r A a i … a n $ X 1 … X m Y 1 … Y r a i a i+1 … a n $ 6
SLR لیلحت لودج
تلاح 8 9 10 11 0 1 2 3 4 5 6 7 id s5 s5 s5 s5 s6 r1 r3 r5 + لامعا لودج * ( s4 s6 r2 r4 s7 r4 s4 r6 r6 s4 s4 s7 r3 r5 ) r2 r4 r6 s11 r1 r3 r5 $ acc r2 r4 r6 r1 r3 r5 E 1 Goto لودج T 2 F 3 8 2 9 3 3 10 : لاثم
1 2 3 4 5 6 E → E + T E → T T → T * F T → F F → ( E ) F → id o
7
هرابنا 0 0 id 5 0 F 3 0 T 2 0 T 2 * 7 0 T 2 * 7 id 5 0 T 2 * 7 F 10 0 T 2 0 E 1 0 E 1 + 6 0 E 1 + 6 id 5 0 E 1 + 6 F 3 0 E 1 + 6 T 9 0 E 1
(S)LR یوحن رگلیلحت کی یاه لمع
: لاثم
o
یدورو id * id + id $ * id + id $ * id + id $ * id + id $ id + id $ + id $ + id $ + id $ + id $ id $ $ $ $ $ لمع 5 لاقتنا F → id اب شهاک T → F اب شهاک 7 لاقتنا 5 لاقتنا F → id اب شهاک T → T * F اب شهاک E → T اب شهاک 6 لاقتنا 5 لاقتنا F → id اب شهاک T → F اب شهاک E → E + T اب شهاک شریذپ یجورخ F → id T → F F → id T → T * F E → T F → id T → F E → E + T 8
) 1 ( لیلحت لودج تخاس
LR(0) متی ا میا هتشاذگ یا » هطقن « ،ن ا تسار تمس زا ی یاج رد هک تسا G زا یا هدعاق ، G رمارگ زا LR(0) متی ا کی
A → A → A →
●
a B b
a ●
B b a B
● b ، A → a B b : میشاب هتشاد رگا ًلاثم : دنتسه اه نیا ،نکمم LR(0) یاه متی ا
• A →
Goto و لامعا لودج یاه تلاح LR(0) یاه متی ا ی هعومجم
تخاس یارب ی یانبم ) » LR(0) ینوناک ی هعومجم « هب موسوم ( LR(0) یاه متی ا یاه هعومجم زا یا هعومجم
تسا SLR یوحن یاهرگلیلحت
o
هدوزفا رمارگ
o
دیدج دامن S’ ن ا رد هک میا هدوزفا S’ → S ی هدعاق ن ا هب هک تسا G رمارگ نامه ، G’ ی هدوزفا رمارگ
تسا عورش 9
) 2 ( لیلحت لودج تخاس
) Closure ( راتسب لمع تسا LR(0) یاه متی ا زا یا هعومجم ، I راتسب ،دشاب G رمارگ یارب LR(0) یاه متی ا زا یا هعومجم I رگا
o
: تسا هدش هتخاس نوناق ود نیا هب هجوت اب I زا هک دوش یم هفاضا I راتسب هب I رد LR(0) متی ا ره ،ادتبا رد ) 1 (
•
B ،تروص ن ا رد ، G رمارگ یاه هدعاق زا یکی زین B → γ و دشاب I راتسب رد A → α ● B β رگا ) 2 (
•
هب یدیدج LR(0) متی ا رگید هک مینک یم لامعا ی یاج ات ار نوناق نیا ( دوب دهاوخ I راتسب رد زین → ● γ ) دوشن هفاضا I راتسب 10
) 3 ( لیلحت لودج تخاس
E’ E E T T F F
→ → → → → → →
E E + T T T * F F ( E )
id ) kernel ( هتسه یاه متی ا {
E T E’ E T F F
→ → → → → → →
● E ● E + T ● T ● T * F ● F ● ( E ) ●
id : لاثم
o
} = {E’ → ● E} راتسب 11
) 4 ( لیلحت لودج تخاس
Goto عبات A → α ● X هک تسا A → α X ● β لکش هب یاه متی ا ی همه ی هعومجم راتسب Goto(I, X) دشاب I وضع β
تسا ی یاه متی ا ی همه ی هعومجم ، Goto(I, X) هک درک نایب تروص نیا هب ناوت یم ًادوهش ار لااب فیرعت
» دنا یسرتسد لباق « I زا ) X ندش هدید تروص رد ( هک
o
: تروص نیا رد ،دشاب دینک ضرف ًلاثم
I = { E’ → E ● , E → E ● + T } Goto(I, +) = { E → E + ● F → ● id } T, T → ● T * F, T → ● F, F → ● ( E ), 12
) 5 ( لیلحت لودج تخاس
G’ رمارگ LR(0) ینوناک ی هعومجم دیاب ، G رمارگ SLR لیلحت لودج تخاس یارب
o
میهد لیکشت ار : متیروگلا
o
تسا { S’ → ● S } راتسب C نک رارکت ،دوشن هفاضا C هب LR(0) یاه متی ا زا یدیدج ی هعومجم رگید هک ی یاج ات ار ریز یاه ماگ X رمارگ دامن ره و ، C رد I ره یازا هب ،دشابن زین C رد و ،دشابن یهت Goto(I, X) ی هعومجم رگا نک هفاضا C هب ار Goto(I, X) یاضعا تسا C رد دوجوم یاه هعومجم یور DFA کی Goto عبات
o
13
) 6 ( لیلحت لودج تخاس
I 0
E’ → E → E → T → T → F → F → ● E ● E + T ● T ● T * F ● F ● ( E ) ●
id I 1 I 2
E’ → E ● E → E ● + T E → T ● T → T ● * F
I 6 I 3
T → F ●
I 4
F → ( ● E → E → ● E + T ● T E ) T → T → ● T * F ● F F → F → ● ( E ) ●
id I 7 I 8
E → E + ● E → ● T T → T → ● ● F T T * F F → F → ● ( E ) ●
id
T → T * ● F F → F → ● ( E ) ●
id
F → ( E ● E → E ●
)
+ T
I 9 I 10 I 11 : لاثم
o E → E + T ● T → T ● * F T → T * F ● F → ( E ) ●
I 5
F → id ●
14
I 0 I 1
E T
I 2
F
( I 3 I 4 id I 5
) 7 ( لیلحت لودج تخاس
+ I 6 * I 7
E T
I 8 I 2
F
( I 3 I 4 id I 5
T
: یلبق لاثم DFA I 9 * I 7
o F
id ( id
F
( I 10 I 4 I 5 ) I 11 + I 6 I 3 I 4 I 5 15
) 8 ( لیلحت لودج تخاس
:) G’ ی هدوزفا رمارگ یارب ( SLR لیلحت لودج نتخاس G’ رمارگ LR(0) یاه متی ا یاه هعومجم زا ینوناک ی هعومجم نتخاس ) 1 (
C ← {I 0 , …, I n } : بیترت نیا هب لامعا لودج نتخاس ) 2 ( ار action[i, a] هاگ ن ا ،دشاب Goto(I i , a) = I j و ، I i وضع A → α ● a β ،هنایاپ کی a رگا میهد یم رارق shift j ، a
Follow(A) ی همه یازا هب هاگ ن ا ،دشاب I i وضع A → α ● رگا ) A ≠ S’ هک یتروص رد ( میهد یم رارق reduce A → α ار action[i, a]
• •
میهد یم رارق accept ار action[i, $] هاگ ن ا ،دشاب I i وضع S’ → S ● رگا تسین SLR(1) رمارگ ،دی ا دوجو هب یلخادت لااب یاه نوناق زا هدافتسا اب رگا
• •
: بیترت نیا هب Goto لودج نتخاس ) 3 ( میهد یم رارق j ار Goto[i, A] ،دشاب Goto(I i , A) = I j رگا ، ) A ًلاثم ( اه هنایاپریغ ی همه یازا هب
•
دنتسه اطخ فرعم ،دنا هدنام یلاخ لحارم نیا زا دعب هک ی یاه هناخ ی همه ) 4 ( تسا S’ → ● S لماش ،رگلیلحت ی هیلوا تلاح ) 5 (
o
16
) 9 ( لیلحت لودج تخاس
تلاح 8 9 10 11 0 1 2 3 4 5 6 7 id s5 s5 s5 s5 s6 r1 r3 r5 + لامعا لودج * ( s4 s6 r2 r4 s7 r4 s4 r6 r6 s4 s4 s7 r3 r5 ) r2 r4 r6 s11 r1 r3 r5 $ acc r2 r4 r6 r1 r3 r5 E 1 Goto لودج T 2 F 3 8 2 9 3 3 10 : لاثم
1 2 3 4 5 6 E → E + T E → T T → T * F T → F F → ( E ) F → id o
17
SLR(1) رمارگ
،دنک هدافتسا G رمارگ یارب SLR(1) لیلحت لودج زا هک یا LR یوحن رگلیلحت
o
دوش یم هدیمان G رمارگ SLR(1) یوحن رگلیلحت رمارگ ًارصتخم ای ( SLR(1) رمارگ ،دشاب هتشاد SLR(1) لیلحت لودج ،یرمارگ رگا
o
دوش یم هدیمان ) SLR تسین SLR ًامازلا ،مهبمان رمارگ ره اما ،دنتسین مهبم SLR یاهرمارگ
o
18
) 1 ( اه لخادت
لمع ای ،میهد ماجنا ار لاقتنا لمع دیاب ،هنایاپ کی یارب مینادن هک میشاب یتلاح رد رگا
o
تسا هداد خر » شهاک لاقتنا لخادت « مییوگ یم ،ار شهاک دیاب ار نکم م ی هدعاق دنچ زا کی مادک ،هنایاپ کی یارب مینادن هک میشاب یتلاح رد رگا
o
تسا هداد خر » شهاک شهاک لخادت « مییوگ یم ،میربب راک هب شهاک یارب تسین SLR رمارگ ن ا ،دشاب لخادت یاراد رمارگ کی SLR لیلحت لودج رگا
o
19
) 2 ( اه لخادت
I 1
S’ → S ●
I 0
S’ → S → S → L → L → R → ● S ● L = R ● R ● * R ●
id
● L
I 2
S → L ● R → L ● = R
I 3
S → R ● S → L = R S → R L → * R L → id R → L
I I 4 5
L → * ● R R → L → L → ● L ● * R ●
id
L → id ●
Follow(R) I 6 I 7
S → L = ● R R → L → L → ● L ● * R ●
id
L → * R ●
I 8
R → L ●
I 9
S → L = R ●
= reduce R → L : = لاثم
o
{ =, $ } shift 6 20
) 3 ( اه لخادت
: لاثم
o S → A a A b S → B b B a A → ε B → ε
I 0
S’ → S
→
S
→
A → B → ● S ● A a A b ● B b B a ● ●
a reduce A → ε reduce B → ε Follow(A) Follow(B) = = { a, b } { a, b } b reduce A → ε reduce B → ε 21