Backend
This presentation is the property of its rightful owner.
Sponsored Links
1 / 21

תזכורת מתרגולים אחרונים PowerPoint PPT Presentation


  • 104 Views
  • Uploaded on
  • Presentation posted in: General

backend. ניתוח סמנטי. ניתוח תחבירי. ניתוח לקסיקלי. תזכורת מתרגולים אחרונים. מבנה סכמתי של קומפיילר ניתוח תחבירי: Top Down : LL(1) RD Bottom up : LR(0) SLR LR(1) \ CLR LALR. אסימונים (tokens). Canonical LR (CLR / LR(1) ).

Download Presentation

תזכורת מתרגולים אחרונים

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


4185160

backend

ניתוח

סמנטי

ניתוח

תחבירי

ניתוח

לקסיקלי

תזכורת מתרגולים אחרונים

  • מבנה סכמתי של קומפיילר

  • ניתוח תחבירי:

    • Top Down: LL(1)RD

    • Bottom up:

      • LR(0)

      • SLR

      • LR(1)\ CLR

      • LALR

אסימונים (tokens)


Canonical lr clr lr 1

Canonical LR (CLR / LR(1) )

  • אלגוריתם LR(1) מבוסס על מנתח LR בדומה לאלגוריתמים הקודמים שראינו.

  • הרעיון:

    • על מנת למנוע קונפליקטים, נפרק את מצבי LR(0) למצבים עדינים יותר, המכילים גם מידע על lookahead.

    • נגדיר מהו פריט LR(1) ונגדיר פונקצית סגור עבור פריטים אלו.

    • האוטומט הפרפיקסי עבור מנתח LR(1) יבנה בעזרת פריטי LR(1).

    • כל שאר האלגוריתם: כולל בניית האוטומט + יצירת הטבלה ממנו וניהול המחסנית נעשה באופן דומה ל LR(0).


4185160

פריטי LR(1)

  • פריט LR(1) הוא (A→α●β,t) כאשר A→αβ∈ P, t∈T∪{$}

  • סגור (closure) על קבוצת פריטים I מוגדר באופן אינדוקטיבי:

    • בסיס: closure(I)=I

    • צעד: אם (A→α●Bβ,t)∈closure(I) אזלכל B→γ∈ P ולכל x∈ first(βt),

    • גם (B→●γ,x) ∈closure(I)

  • פונקצית המעברים של האוטומט:

  • פריט LR(0) הוא (A→α●β) כאשר A→αβ∈ P

  • סגור (closure) על קבוצת פריטים I מוגדר באופן אינדוקטיבי:

    • בסיס: closure(I)=I

    • צעד: אם (A→α●Bβ)∈closure(I) אזלכל B→γ∈ P גם (B→●γ) ∈closure(I)

  • פונקצית המעברים של האוטומט:

  • ההבדל בין פריטי LR(0) ו-LR(1) נעוץ רק ב-closure.

משמעות פריט LR(1): זיהינו את מה שמשמאל לנקודה, אנו מצפים למצוא את מה שמימין לה, ולאחר מכן את האסימון המצורף לפריט.


4185160

0. S`  S$

1. S  A

2. S  aAa

3. A  a

דוגמא LR (1)

2

S` ●S, $

S  ●A, $

S  ●aAa, $

A  ●a, $

A  a●, a

S  a●Aa, $

A  a●, $

A  ●a, a

A

a

a

a

S  aA●a, $

S  aAa●, $

1

3

4

0

A

S

S  A●, $

S`  S●, $

5

6

  • הדקדוק אינו ב- LR(0) ולא ב- SLR – בדקו!


4185160

בניית טבלת הניתוח

(A→α●,t)∈ Ii

(S’→S●,$)∈ Ii


4185160

0. S`  S$

1. S  A

2. S  aAa

3. A  a

דוגמא LR (1)- הרצה

actions

goto

S` ●S, $

S  ●A, $

S  ●aAa, $

A  ●a, $

מחסנית

קלט

A  a●, a

S  a●Aa, $

A  a●, $

A  ●a, a

a

A

a

a

aaa$

2

(0, )

aa$

(0, )(1,a)

S  aA●a, $

S  aAa●, $

1

a$

(0, )(1,a)(2,a)

3

4

0

(0, )(1,a)(3,A)

a$

A

S

(0, )(1,a)(3,A)(4,a)

$

S  A●, $

S`  S●, $

(0, )(6,S)

$

6

5


4185160

LR(1) סיכום

  • LR(1) יתרונות:

    • יכול להתמודד עם כמות הדקדוקים הגדולה ביותר.

  • LR(1) חסרונות:

    • צורך כמות זיכרון רבה בשל גודל הטבלה הנוצרת

      • נובע בעיקר מכמות המצבים המורחבת שנוצרת באוטומט.

  • נרצה למצוא פיתרון:

    • יותר חסכוני בזיכרון.

    • היעילות שלו תשאר גבוהה: יוכל להתמודד עם כמות דקדוקים גדולה (כמעט כמו של LR(1)).


4185160

LALR

  • בניית אוטומט וטבלה כפי שעושה LR(1).

  • מאחד מצבים בעלי פריט LR(0)זהה.

A → c*,a

A → c*,b

A → c*,(b,a)

LR(1)

LALR


4185160

LALR דוגמא -

נמצא דקדוק אשר שייך ל-LR(1)

אך לא ל-LALR

S → a A a | a B b | b A b | b B a

A →a

B →a

S’ →• S, $

S →• a Aa, $

S →• a B b, $

S →• b A b, $

S →• b B a, $

S →b • A b, $

S →b • B a, $

A →• a, b

B → • a, a

S →a • A a, $

S →a • B b, $

A →• a, a

B →• a, b

a

b

a

a

LR(1): no conflict

A →a •, a

B →a •, b

A →a •, b

B →a •, a


4185160

LALR דוגמא -

נמצא דקדוק אשר שייך ל-LR(1)

אך לא ל-LALR

S → a A a | a B b | b A b | b B a

A →a

B →a

S’ →• S, $

S →• a Aa, $

S →• a B b, $

S →• b A b, $

S →• b B a, $

S →b • A b, $

S →b • B a, $

A →• a, b

B → • a, a

S →a • A a, $

S →a • B b, $

A →• a, a

B →• a, b

a

b

a

a

LR(1): no conflict

A → a •, (a,b)

B → a •, (a,b)

LALR: R\R conflict!

LALR


4185160

דקדוקים - סיכום


4185160

שאלה 1

  • נתון דקדוק G=(V,T,P,S) השייך למחלקה LR(1).

  • עבור כל אחד מהדקדוקים הבאים, רשמו האם הוא בהכרח ב LR(1) :


4185160

שאלה 1

  • הדקדוק בהכרח ב LR(1):

    • המשתנה X הוא משתנה חדש שאינו נגזר באגף ימין של אף כלל.

    • בזמן ביצוע closure במצבי האוטומט, הכלל t→X לעולם לא ייכנס.

    • האוטומט יהיה זהה לאוטומט של G, שהוא חסר קונפליקטים.


4185160

שאלה 1

  • אינו בהכרח ב LR(1).

    • הכלל החדש יכול להפוך את הדקדוק לדו משמעי. לדוגמא:


4185160

  • הדקדוק בהכרח ב LR(1) :

    • לאוטומט מתווספים שני מצבים:

      • מצב אחד המכיל את הפריט S’→t●,$ בלבד.

      • מצב אחד מכיל את הפריט S’→S●,$ בלבד.

    • במצבים אלו יש רק פריט LR(1) בודד ואין מהם קשתות יוצאות, ולכן לא יגרמו לקונפליקט.


4185160

  • הדקדוק בהכרח ב LR(1) :

    • בנוסף למצב התחילי מתווספים הפריטים S’→●t,$ ו- S’→●S,$ שאינם יכולים לגרום לקונפליקט:

      • קונפליקט R/R לא יתווסף כי הפריטים החדשים לא מובילים ל Reduce.

      • הפריט S’→●S,$ לא גרם להוספת קשת, וכל הפריטים שנמצאים ב closure שלו כבר היו לפני כן במצב התחילי של האוטומט.

      • הפריט S’→●t,$ גרם להוספת קשת המסומנת ב t, אך במצב התחילי של האוטומט אין אף פריט מהצורה A→α●,t מאחר ועבור כל פריט B→β●Aγ,r מתקיים t∉ first(γr) .


4185160

שאלה 1

  • אינו בהכרח ב LR(1).

    • הכלל החדש יכול להפוך את הדקדוק לדו משמעי. לדוגמא:

    • ההבדל העיקרי מהסעיף הקודם הוא שכעת המשתנה X יכול להשתתף בכללי דקדוק אחרים, ולכן ייתכן מצב בו יתווסף קונפליקט S/R במצב התחילי של האוטומט.


4185160

שאלה 2

  • קבעו האם ייתכן דקדוק LR(1) אשר באוטומט שלו קיים המצב המצויין בסעיף (המצב בדיוק- ללא פריטים נוספים):


4185160

שאלה 2

  • מצב כזה לא ייתכן:

    • אם נניח בשלילה שישנו מצב כזה, נקבל קונפליקט R/R במצב המתקבל ע"י מעבר על הקשת a.

    • התקבלה סתירה לכך שהדקדוק הוא LR(1).


4185160

שאלה 2

  • מצב כזה לא ייתכן:

    • נסתכל על המצב המוביל אליו על גבי קשת a:

a

A →a•aa, d

A →•aa, e

….

A→aa•a, d

A →a•a, e

  • הפריט A → •aa,eאינו נמצא בגרעין המצב, ולכן יש במצב איזשהו פריט נוסף: B →α•Aβ,t . ולכן יש בו גם את הפריט A → •aaa,first(βt), ונקבל סתירה לכך שבמצב 2 יש רק את שני הפריטים המצויינים בסעיף.


4185160

שאלה 2

  • מצב כזה ייתכן:

    • לדוגמא הדקדוק:

      S→Ad|aAe

      A→aaa


  • Login