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