340 likes | 664 Views
דקדוקים. תורת הקומפילציה עומר ביהם מבוסס על שקפי הרצאה מהקורס אוטומטים ושפות פורמאליות בטכניון פרופ' שמואל זקס. מבוא. הזכרנו שלוש דרכים להגדרת שפה: הדרך הישירה, ע"י שימוש בכלים מתמטיים לסימון קבוצות הגדרת מכונה ש מזהה את השפה: עד כה היו אלה אוטומטים סופיים
E N D
דקדוקים תורת הקומפילציה עומר ביהם מבוסס על שקפי הרצאה מהקורס אוטומטים ושפות פורמאליות בטכניון פרופ' שמואל זקס אוניברסיטת חיפה - חורף 2007
מבוא • הזכרנו שלוש דרכים להגדרת שפה: • הדרך הישירה, ע"י שימוש בכלים מתמטיים לסימון קבוצות • הגדרת מכונה ש מזהה את השפה: עד כה היו אלה אוטומטים סופיים • סימון המגדיר נוהל פורמלי לייצור המילים בשפה "מחולל שפות". • עד כה הודגמו בשתי הדרכים הראשונות. • לביטויים רגולריים יש דמיון לסוג השלישי. אוניברסיטת חיפה - חורף 2007
מבוא • אוטומט – מודל אנליטי • דקדוק – מודל סינטטי אוניברסיטת חיפה - חורף 2007
דקדוק שכתוב • כל צעד בנוהל ליצירת מילים הינו שכתוב חלק מהמילה, עפ"י קבוצת כל לי שכתוב מוגדרים היטב. • התהליך מפסיק כאשר מגיעים למילה טרמינלית,כלומר מילה שלא ניתן לשכתב אותה עוד. אוניברסיטת חיפה - חורף 2007
דקדוק שכתוב - דוגמא • נהוג לציין מספרים עשרוניים עם פסיקים המפרידים בין כל שלוש ספרות עוקבות (מימין), כגון: • 1,984 • 345 • 314,159,265 • מהו הדקדוק היוצר שפה זו מעל הא"ב ? Σ* = {0,1, …9}∪{,} אוניברסיטת חיפה - חורף 2007
דקדוק שכתוב - דוגמא • N →N1-3| N1-3,L • L →N3 | L,N3 • N1-3→N1| N2| N3 • N3→N1N1N1 • N2→N1N1 • N1 → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 אוניברסיטת חיפה - חורף 2007
דקדוק שכתוב - עץ גזירה • N ⇒* 1,000,000 < N > < N1-3 > < , > < L > < N3 > < , > < L > < N1> < N3 > < 1 > < N1> < N1> < N1> < 0 > < 0 > < 0 > < N1> < N1> < N1> < 0 > < 0 > < 0 > אוניברסיטת חיפה - חורף 2007
דקדוק שכתוב -ביטויים אריתמטיים • נציג דקדוק היוצר ביטויים אריתמטיים בסגנון המקובל בשפות תכנות רבות, כגון: • a/z - c ,(a+b)*c • הא"ב אשר מעליו תוגדר השפה הוא Σ = {a,b, … ,z}∪ {+,-,*,/,(,)} אוניברסיטת חיפה - חורף 2007
דקדוק שכתוב- ביטויים אריתמטיים (1) <Expression> → <Variable> (2) | <Expression> + <Expression> (3) | <Expression> - <Expression> (4) | <Expression> * <Expression> (5) | <Expression> / <Expression> (6) | (<Expression>) (7) <Variable> → a | b | … | z אוניברסיטת חיפה - חורף 2007
דקדוק שכתוב - דו-משמעות לעיתים קיימים עצי גזירה שונים עבור אותה מילה < Expression.> גזירה א' < Expression.> < Expression.> * <Variable> <Variable> <Variable> + a c b גזירה ב' < Expression.> < Expression.> < Expression.> + <Variable> <Variable> <Variable> * b c a אוניברסיטת חיפה - חורף 2007
דקדוק שכתוב- הגדרה • דקדוק G מוגדר ע"י הרביעייהG = (V,T,P,S) • V - קבוצה סופית לא ריקה של משתנים • T - קבוצה סופית לא ריקה של טרמינלים • S - משתנה תחילי S ∈V • P - קבוצה סופית של כללי שכתוב מהצורה α → β כאשר α ∈ (V ∪ T)+ וגם β ∈ (V ∪ T)* אוניברסיטת חיפה - חורף 2007
דקדוק שכתוב- סימונים • אותיות לטיניות גדולות מתחילת הא"ב כגון C,B,A לציון סימנים קבועים מתוך קבוצת המשתנים הדקדוקיים V. • אותיות לטיניות קטנות מתחילת הא"ב כגון c,b,a לציון סימנים קבועים מתוך קבוצת הטרמינלים T. • אותיות יווניות קטנות כגון α,β,γ,ϕ,ξ לציון מילים מ (V ∪ T)* כלומר סדרות של טרמינלים ומשתנים דקדוקיים • אותיות לטיניות גדולות מסוף הא"ב כגון Z,Y,X לציון משתנים מתוך (V ∪ T) • אותיות לטיניות קטנות מסוף הא"ב כגון z,y,x לציון איברים מתוך T*, כלומר מילים טרמינליות אוניברסיטת חיפה - חורף 2007
דקדוק שכתוב- גזירה • יהי G = (V,T,P,S) דקדוק, ויהיו ϕ1,ϕ2∈(V ∪T)*, נאמר כי ϕ1 נגזר ישירות מ ϕ2 ונסמן אמ"מ קיימים ψ,χ,α,β ∈(V ∪T)* וגם α→β ∈P כך ש: ϕ2 = ψβχ וגם ϕ1 = ψαχ • במילים אחרות . ניתן לעבור מ ϕ1 ל ϕ2 ע"י הפעלת כלל אחד מ -P. • נסמן אמ"מ ניתן לעבור מ ϕ1 ל ϕ2 ע"י הפעלת מספר סופי של כללים מ -P • הסימון יציין גזירה ב- i שלבים. אוניברסיטת חיפה - חורף 2007
דקדוק שכתוב– גזירה הפוכה • בהינתן מילה, ניתן לבדוק האם היא שייכת לשפה שהדקדוק מגדיר, ע"י ביצוע גזירה הפוכה, כלומר להתחיל מהמילה ולהפעיל חוקי גזירה רק בכיוון ההפוך, מימין לשמאל. • מילה כלשהי שייכת לשפה אם ע"י גזירה הפוכה נגיע ל-S, המשתנה ההתחלתי אוניברסיטת חיפה - חורף 2007
גזירה הפוכה - דוגמא • עבור הדקדוק הבא:S → (S )| (SS )| ( ) • נבדוק האם המילה (()()) שייכת לשפה שהדקדוק מגדיר: • ואכן המילה (()()) שייכת לשפה שהדקדוק מגדיר: • S ⇒(SS) ⇒(()()) ( ) ) ( ) ( הפעלת S → () < S > < S > הפעלת S → (SS) < S > אוניברסיטת חיפה - חורף 2007
שפה של דקדוק - הגדרה • יהי G = (V,T,P,S) דקדוק. השפה הנוצרת ע"י הדקדוק L(G), מוגדרת ע"י L(G) = {x ∈T* | S ⇒* x} • מילה α ∈ (T∪V)* נקראת תבנית פסוקית אמ"מ .S ⇒*α • α אינה חייבת להיות מילה טרמינלית! • שני דקדוקים יקראו שקולים אמ"מ L(G1) = L(G2) אוניברסיטת חיפה - חורף 2007
שפה של דקדוק - דוגמא • השפה L = {a^nb^n | n ≥ 1}, אינה רגולרית. • נראה כי ניתן ליצור אותה בעזרת דקדוק • G = ({S}, {a,b}, P, S), כללי P הם • (1) S →aSb • (2) S →ab • S ⇒* aaabbb < S > < a> < S > < b > < a> < S > < b > < a> < b > אוניברסיטת חיפה - חורף 2007
ההיררכיה של חומסקי אוניברסיטת חיפה - חורף 2007
דקדוקים רגולריים - הערות • שקולים לשפות רגולריות • אפשר להוכיח כי לכל אס"ד M קיים דקדוק היוצר את L(M) • לכל שפה רגולרית L קיים דקדוק ליניארי (ימיני וגם שמאלי) כך ש: L(G) = L • קיימת שקילות בין דקדוק ליניארי ימני לדקדוק ליניארי שמאלי אוניברסיטת חיפה - חורף 2007
דקדוקים חסרי הקשר • דקדוק חסר-הקשר (דח"ה) הוא דקדוק בעל כללים מהצורה A →α, כאשר α ∈ (V∪T)*, A ∈V. אוניברסיטת חיפה - חורף 2007
עצי גזירה - מוטיבציה • המוטיבציה העיקרית לדיון בעצי גזירה היא הרצון לתפוס גזירות בסדר משתנים שונה כשקולות • לדוגמא, בדקדוק שכלליו A →BC, B→b, C→c, ניתן לגזור את bc בשתי בדרכים הבאות: • A ⇒BC ⇒bC ⇒bc • A ⇒BC ⇒Bc ⇒bc • נרצה לראות את שתי הגזירות שקולות. • נוכל לעשות זאת ע"י הצגת עץ הגזירה המתאים: < S > < A> < B > < a> < b > אוניברסיטת חיפה - חורף 2007
גזירות קנוניות • ע"י הצגת עץ גזירה אנו מתמצתים את כל הסדריםהאפשריים בגזירה מסוימת. אך עם זאת, מבנהו המסתעףלא תמיד נוח, לדוגמא בהוכחות באינדוקציה. • לכל סדרת גזירה מתאים עץ גזירה יחיד. עם זאת, לאותו עץגזירה עשויות להתאים מספר סדרות גזירה שונות. • נרצה להתאים גזירה סטנדרטית (קנונית) יחידה לכל עץגזירה של דקדוק חסר הקשר, הקובעת חד-משמעית אתסדר גזירות המשתנים. אוניברסיטת חיפה - חורף 2007
גזירות קנוניות - הגדרה • תהי α⇒β גזירה בדח"ה ,כלומר , α = δ1Αδ2 , β = δ1γδ2 עבור משתנה A ותבניות פסוקיות δ1,δ2 כלשהן • הגזירה α⇒β תקרא שמאלית ביותר אם δ1∈T* • הגזירה α⇒β תקרא ימנית ביותר אם δ2∈T* • סדרת הגזירהα⇒*β נקראת שמאלית ביותר אםכל גזירה בה היא שמאלית ביותר. • סדרת הגזירהα⇒*β נקראת ימנית ביותר אםכל גזירה בה היא ימנית ביותר. • לכל עץ גזירה בדח"ה G, מתאימה לכל היותר גזירה שמאלית ביותר אחת! אוניברסיטת חיפה - חורף 2007
< S > < a> < A > < S > < S > < b > < A > < a> < a> < b > גזירה קנונית - דוגמא • נתבונן בדקדוק L בעל הכללים הבאים: (1) S →aAS (2) S → a (3) A → SbA (4) A → b S ⇒ aAS ⇒ aSbAS ⇒ aabAS ⇒ aabbS ⇒ aabba S ⇒ aAS ⇒ aAa ⇒ aSbAa⇒aSbbS ⇒ aabba ע ץ גזירה עבור המילה:aabbba גזירה שמאלית ביותר (1) (3) (2) (2) (4) גזירה ימנית ביותר (3) (4) (2) (1) (2) אוניברסיטת חיפה - חורף 2007
חד-משמעיות ורב-משמעיות • נתון הדקדוק עבור ביטויים אריתמטיים : G = ({E}, {a, + , *, (, )}, P, E) כאשר כללי הגזירה הם: E →E + E | E * E | (E) | a • לדקדוק זה תכונה לא רצויה והיא שלאותה מילה יכולים להיות מספר עצי גזירה שונים (פתרונות מימושיים יוסברו בתרגול על yacc/bison) אוניברסיטת חיפה - חורף 2007
רב משמעיות - דוגמא • להלן דוגמא של שני עצי גזירה שונים עבור המילה a + a * aיחד עם הגזירות השמאליות ביותר המתאימות. < E > < E > < E > < * > < E > < + > < E > < E > < E > < E > < a > < * > < E > < E > < + > < a > < a > < a > < a > < a > E ⇒ E*E ⇒ E+E*E⇒ a+E*E⇒ a+a*E ⇒a+a*a E ⇒ E+E ⇒ a+E⇒ a+E*E ⇒ a+a*E⇒a+a*a אוניברסיטת חיפה - חורף 2007
רב משמעיות - הגדרה • דקדוק G יקרא רב משמעי אמ"מ קיימת מילה w ∈L(G) שיש לה שני עצי גזירה שונים. • אחרת הדקדוק יקרא חד משמעי • נשים לב כי תכונת הרב משמעיות מתייחסת לדקדוק, ולא לשפה. • עם זאת, קיימות שפות אשר כל דקדוק היוצר אותן הוא רב משמעי. שפות אלו נקראות שפות רב משמעיות, אוניברסיטת חיפה - חורף 2007
דקדוקים רגולריים ושקילות לאס"ד • דקדוק G יקרא רגולרי אם כל החוקים בו הם ליניארים ימניים S → ε, A → Bα , A → α ליניאריים שמאליים S → ε, A → αB , A → α אוניברסיטת חיפה - חורף 2007
דקדוקים רגולריים דוגמא • חוקי דקדוק G • S → aB | a • A → aB | a • B → bA • L(G) = (ab)*a לדוגמא w=ababa נגזרת • S ⇒ aB ⇒ abA ⇒ abaB ⇒ ababA ⇒ ababa (1) (4) (3) (4) (5) אוניברסיטת חיפה - חורף 2007
מעבר מאס"ד לדקדוק רגולריים (ימני) • נתון M המקבל את ab* • נדגים בניית דקדוק GM עבור M • לכל מצב qi נבנה כלל גזירה ליניארי ימני מתאים • המשתנה התחילי יהיה כמובן זה שהוגדר עבור מצב q0 התחילי b a q2 q0 b a q1 a,b אוניברסיטת חיפה - חורף 2007
b a q2 q0 b a q1 a,b מעבר מאס"ד לדקדוק רגולריים (ימני) • עבור המעבר δ(q0,b)=q1נבנה כלל גזירה מהצורה • V0→ bv1 • באופן דומה עבור המעבר δ(q0,a)=q2נבנה כלל גזירה מהצורה • V0→ aV2 • מכיוון ש q2מצב מקבל נוסיף כלל מהצורה • V0→ a אוניברסיטת חיפה - חורף 2007
b a q2 q0 b a q1 a,b מעבר מאס"ד לדקדוק רגולריים (ימני) • באופן דומהנקבל כללי גזירה מהצורה • V1→ aV1 | bV1 • V2→ bV2 | b | aV1 • המשתנה התחילי יהיה V0 אוניברסיטת חיפה - חורף 2007
b a q2 q0 b a q1 a,b מעבר מאס"ד לדקדוק רגולריים (ימני) • דוגמא למעבר מ M ל GM עבור והמילה w=‘abb’ ∈ L(G) • q0⇒q2⇒q2⇒q2 • הגזירה המתאימה תהיה (a) (b) (b) < V0 > < V2 > < a> < V2 > < b > < b > אוניברסיטת חיפה - חורף 2007
b a q2 q0 b a q1 a,b מעבר מאס"ד לדקדוק רגולריים (ימני) • והמילה w=‘ba’ • q0⇒q1⇒q1 • הגזירה המתאימה תהיה • עץ הגזירה אינו של מילה טרמינלית! (b) (a) < V0 > < V1 > < b > < V1 > < a > אוניברסיטת חיפה - חורף 2007