גירסה תורת הקומפילציה

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "גירסה תורת הקומפילציה"

Transcript

1 גירסה תורת הקומפילציה -1-

2 1. תוכן עניינים.1.2 תוכןעניינים... 2 פתיחה אוטומטיםושפותפורמליות חזרה... 6 שפותפורמליות מושגיםבסיסיים... 6 ביטוייםרגולריים, שפותרגולריות... 7 אוטומטסופי... 8 תיאורלאפורמלי והגדרה... 8 אופןתיאוראוטומטסופי (דטרמיניסטי)... 9 אוטומטסופילא דטרמיניסטי זיהוי שפות רגולריות עלידיאוטומט סופי משפטים חשובים דקדוקיםחסריהקשר דקדוקחסרהקשר הגדרה פורמלית Parse Tree (עץ גזירה) שפהחסרתהקשר...12 תבניותBNF...13 מבואלקומפילציה התמונההגדולה שלבהאנליזה ניתוחלקסיקלי analysis) 16...(lexical ניתוחסינטקטי analysis) (syntax ניתוחסמנטי שלב 1 - ניתוחלקסיקלי ANALYSIS) (LEXICAL מושגיםבסיסיים ו SCREENER SCANNER המנתח הלקסיקלי ותכונותסמנטיות כלי LEX רקעכללי...21 פונקציתהמנתחהלקסיקלי 21...yylex() קבציקלטופלטלמנתח הלקסיקלי משתניםגלובלים נוספים מבנהקובץהקלט ל lex פתרון קונפליקטים LOOKAHEAD שלב 2 ניתוח תחבירי ANALYSIS) 26...(SYNTAX רקעומוטיבציה...26 סוגיניתוח תחבירי

3 ניתוח Top-Down שיטת RECURSIVE DESCENT (פועלת בשיטת (TOP-DOWN קבלתעץגזירהבאמצעות RD בעיות בשיטת 31...RD שיפורבפונקצייתהבחירה follow select, first, אלגוריתם LL(K) רקע...36 אלגוריתם LL(1) סיכום שיטות...38 TOP-DOWN אלגוריתמים LR(K) אלגוריתם 40...LR(0) 54...SLR Canonical LR 58...LALR היררכיית הדקדוקים וסיכום...59 שלב 3 - ניתוחסמנטי פתיחה דקדוקי שדות ערך / הגדרותמונחותתחביר הגדרות בסיסיות דוגמאלהגדרה מונחית תחביר...62 סיווג תכונות סמנטיותלפיאופן חישובן...63 אלגוריתמים לחישוב הגדרות מונחות תחביר...64 סוגי הגדרות מונחות תחביר...64 סכימתתרגום אלגוריתםכללי לחישובהגדרותמונחותתחביר YACC.8 מבנהקובץהקלטל YACC חלק החוקים...68 קישורביןהמנתחהלקסיקלילמנתחהתחבירי תכונותסמנטיותב YACC קדימויות אופרטורים...72 דוגמא לבעיה הגדרתהקדימויות...73 איךמערכתהקדימויות עובדת? הפעלת YACC בנייתטבלאותהסמלים SCOPING ארגון הזכרון על ידיהמהדר טבלתהסמלים סכימתתרגום מבוא...78 דוגמא תרגוםלשפתביניים

4 מבוא...81 שפתהרביעיות יצירת קוד הביניים תרגום לשפת הרביעיות...83 תרגום פשוט תרגוםלשפתהביניים- שיטתתוויות נורשות Backpatch מקורות מקורותבאנגלית מקורות בעברית

5 2. פתיחה מסמך זה מסתמך על מקורות רבים, ובא להציג לקורא את עולם הקומפיילרים. המבנה הכללי של המסמך מנסה לשמור על הסדר המוצג בספר Tools Compilers Principles, Techniques and מאת.Aho, Sethi and Ullman בנוסף המסמך בנוי במידה רבה מאוד גם מסביב לסדר ההוראה בקורס "תורת הקומפילציה" בטכניון. חשוב לציין כי מדובר בסיכום אישי של המחבר, ולא בחומר רשמי של הקורס שאושר על ידי צוות הקורס. סטודנטים בקורס צריכים לשים לב כי המסמך עלול להכיל טעויות ואי דיוקים. כמו כן המסמך אינו מכיל את כל הנושאים הנסקרים בקורס. מקור עיקרי נוסף של מסמך זה הוא ויקיפדיה האנגלית. להעמקה אני ממליץ בחום על קריאת הערכים הרלוונטים בויקיפדיה האנגלית הכותבים של הערכים הרלוונטים עשו עבודה נפלאה וההסברים ברורים ביותר. רוב הדוגמאות במסמך זה נלקחו מויקיפדיה. רשימת המקורות המלאה מצורפת בסוף מסמך זה לעיונכם. ברצוני להודות לצוות הקורס 2009 של תורת הקומפילציה: מרגלעדקוטיאל, מר דניאלגנקין ומרגדיאלכסנדרוביץ' על התשובות הרבות שענו לי לשאלות במהלך למידת החומר. תובנות רבות שסופקו לי במייל ובשיחות הוכנסו למסמך זה. ולקוראים אאחל: בהצלחה בהכרת עולם הקומפיילרים! אשמח לשמוע אם דפים אלה עזרו לכם, וכן לקבל עדכונים על טעויות והצעות לשיפור. מרץ

6 3. אוטומטיםושפותפורמליות חזרה 3.1. שפותפורמליות מושגיםבסיסיים. Σ אלףבית הינה קבוצה סופית Σ (של "אותיות"). מילההינה סדרה סופית של אותיות מעל א"ב נתון המילההריקה (מסומנת ב- ε) איננה מכילה אותיות..n הינו, w אורך, w אזי, n 0, w= σ... 1 σ n אורכהשל מילה יוגדר בצורה הבאה: תהי אורךהמילההריקה ייקבע להיות: = 0 ε.. Σ. Σ. Σ - אוסף כל המילים באורך 0 מעל ה-א"ב - אוסף כל המילים באורך n מעל ה-א"ב - אוסף כל המילים מעל ה-א"ב. Σ - אוסף כל המילים באורך 1 או יותר מעל ה-א"ב 0 Σ n Σ * Σ + Σ Σ o o o o דגש: אם איננה ריקה, מתקיים כי * * ב-, Σ אולם אין מילים באורך אינסופי ב- Σ. * Σ אינסופית (בת מניה). אין חסם סופי על אורך המילים * תהי Σ קבוצה סופית. נגדיר שפהפורמלית L להיות תת קבוצה כלשהי של, Σ כלומר w1, w2 *. L Σ שפה יכולה להיות סופית או איןסופית. שרשור: שרשור מיליםהינה המילה הנוצרת מהדבקת שתי מילים השרשור מסומנת על ידי (בסדר זה). פעולת, אם כי נהוג לוותר לרוב על סימון הפעולה. יהיו המילים w = σ... σ, w = σ... σ אזי השרשור שלהם, המילה, w תוגדר להיות: ' 1 1 n 2 1 ' n o w= w w = σ... σ σ... σ ' n 1 ' n תהי Σ קבוצה סופית. יהיו שפות. השרשור בין L1, L2 יוגדר כך: L L Σ 1, 2 * o * { } L L = w Σ x L y L w= xy : -6-

7 3.2. ביטויים רגולריים, שפות רגולריות נגדיר ביטויים רגולריים על ידי הקבוצה האינדוקטיבית הבאה: הוא ביטוי רגולרי מעל Σ המתאר את השפה הריקה. בסיס: o אם o ε הוא ביטוי רגולרי מעל Σ המתאר את השפה.{ ε} o לכל a Σ a מתקיים כי הוא ביטוי רגולרי המתאר את השפה.{ a} p, q o P,, אזי: הם ביטויים רגולריים המתארים את השפות הרגולריות Q p q הוא ביטוי רגולרי המתאר את השפה הרגולרית. P Q ( pq) o הוא ביטוי רגולרי המתאר את השפה. PQ ( p) * o הוא ביטוי רגולרי המתאר את * P הערה: על מנת לפשט את הסימונים, מגדירים כי * הוא בעל הקדימות הגבוהה ביותר, אח"כ שרשור, ואח"כ סימן האלטרנטיבה. -7-

8 3.3. אוטומט סופי תיאור לא פורמלי והגדרה אוטומטסופיהינו מודל מופשט למערכת המגיבה על קלטים (מתוך קבוצה סופית). תגובת האוטומט: קבלה / דחייה. ניתן לזהות את אוסף סדרות-הקלט המתקבלות עם שפה פורמלית. אוטומט סופי הינו בעל מספר סופי של מצבים שאינו תלוי באורך הקלט. אורך הקלט איננו בהכרח חסום. אופן הפעולה של האוטומט: בכל שלב, נמצאת המערכת במצב q (מתוך קבוצת מצבים סופית. q 0 בכל צעד, קורא הראש את אות הקלט הנוכחית, האוטומט עובר למצב המצב התחילי מסומן =q ), והראש עובר לאות הקלט הבאה. (כאשר יתכן כי q.(q q המצב אליו מגיעה המערכת לאחר קריאת האות האחרונה בקלט קובע את התגובה למילת הקלט: מצב מקבל / דוחה., A= Σ, Q, q, F, δ כאשר: A A 0 A A A אוטומטסופי (דטרמיניסטי) A נתון ע"י: הינה קבוצה סופית, א"ב הקלט. הינה קבוצה סופית לא ריקה של מצבים. הינו המצב ההתחלתי. Σ A Q A q 0 A F A Q A F A היא קבוצת המצבים המקבלים,.δ : Q Σ Q A A A A δ A היא פונקצית המעברים,.ε אין מעברי- δ A o ב- לכל מצב ואות a Σ A יש לכל היותר מעבר למצב יחיד. q Q A o אם זהות A ברורה מן ההקשר נשמיט אותה כאינדקס. q 0 A יכולה להיות קבוצה ריקה. איננה ריקה לפחות שייך אליה. Q A F A -8-

9 אופןתיאוראוטומטסופי (דטרמיניסטי) σ q q נתאר אוטומט סופי על ידי גרף סופי מכוון, שצמתיו מצבים וקשתותיו מסומנות ע"י אותיות. Σ אם האוטומט נמצא במצב נוכחי, q ואם אות הקלט הנוכחית היא σ, אזי האוטומט עובר למצב q (ומקדם את הקלט). σ1, σ 2,..., σ k q q נניח כי ממצב, q מעבירים אותנו אל מצב σ,..., 1 σ k q הקלטים נוכל נשרטט זאת בקיצור בצורה הבאה:. q וזאת במקום לצייר קשתות מקבילות מ- q אל k הערהחשובה: מכל מצב יש בדיוק קשת אחת מסומנת σ, לכל.σ Σ המצב ההתחלתימסומן על ידי : start q 0 ועל ידי q 0 q 0 מצב מקבלמסומן על ידי מעגל כפול. מצב מקבל אינו חייב להיות המצב האחרון. מעבר במצב מקבל תוך כדי תהליך החישוב לא אומר כלום על תוצאת החישוב. -9-

10 אוטומטסופילאדטרמיניסטי אוטומט סופי לא דטרמיניסטי הוא הכללה של אוטומט סופי דטרמיניסטי המאפשרת לאוטומט לבחור במספר דרכי פעולה אפשריות עבור קלט נתון בניגוד לדרך הפעולה היחידה אליה מחויב אוטומט דטרמיניסטי. ההכללה של האוטומט הסופי הדטרמיניסטי מתבטאת בשלוש הרחבות עיקריות: עבור כל מצב של האוטומט ואות קלט נתונה, האוטומט הלא דטרמיניסטי יכול לעבור למספר מצבים, ולא למצב יחיד כאוטומט הדטרמיניסטי. לאוטומט מוספת האפשרות של "מסע ε" - מעבר ממצב אחד למשנהו מבלי שתיקלט אות קלט כלשהי. לאוטומט מוספת האפשרות לבחור בין מספר מצבים התחלתיים זיהוי שפות רגולריות עלידי אוטומט סופי הצב וקבל סדרת ביטויים רגולריים טהורים. בנה אוטומט לא דטרמיניסטי Mi לכל Ai המזהה את הביטוי הרגולרי שיטתי המבצע זאת. בנה אוטומט משולב M אוטומט זה מזהה את כל הביטויים הרגולריים..Ri קיים אלגוריתם משפטים חשובים לכל אוטומט סופי לא דטרמיניסטי קיים אוטומט דטרמיניסטי שקול. לכל אוטומט סופי דטרמיניסטי קיים אוטומט סופי דטרמיניסטי שקול יחיד בעל מספר מצבים מינימאלי

11 3.4. דקדוקים חסרי הקשר במודל זה כל צעד בנוהל ליצירת מילים הינו שכתוב חלק מהמילה על פי קבוצת כללי שכתוב מוגדרים היטב. התהליך מפסיק כאשר מגיעים למילהטרמינלית, כלומר מילה שלא ניתן לשכתב אותה עוד. נשתמש בסימן לציון כללי שכתוב, ובסימן לציון הפעלת כללי שכתוב על מילים. ניתן לציין את יצירת המילה בדרך גרפית על ידי עץגזירה דקדוקחסרהקשר הגדרהפורמלית G= ( V, T, P, דקדוק חסר הקשרG מוגדר ע"י רביעיה (S כאשר: כאשר V T)* ) α ו- V קבוצה סופית לא ריקה של משתנים דקדוקיים. V. קבוצה סופית לא ריקה של סימנים טרמינליים הזרה ל- T. S V משתנה התחלתי, S A α קבוצה סופית של כללי שכתוב (או כללי גזירה) מהצורה P. A V מוסכמות סימון: נשתמש באותיות לטיניות גדולות מתחילת הא"ב כגון קבוצת המשתנים הדקדוקיים V. נשתמש באותיות לטיניות קטנות מתחילת הא"ב כגון A, B, C a, b, c הטרמינלים T..( V T)* לציון מילים מ-,α,β נשתמש באותיות יווניות קטנות כגון γ לציון סימנים קבועיםמתוך לציון סימנים קבועיםמתוך קבוצת -11-

12 Parse Tree (עץגזירה) Parse Tree (עץגזירה) מראה בצורה ציורית איך הסימן הפותח של דקדוק חסר הקשור גוזר מחרוזת A אז העץ יכול להראות כשורש בעל בשפה. אם למשתנה לא טרמנלי A קיים כלל הגזירה XYZ Y, X, משמאל לימין. תווית A עם 3 בנים המסומנים ב- Z בצורה פורמלית, בהנתן דקדוק חסר הקשר, עץ הביטוי הוא עץ בעל התכונות הבאות: שורש העץ מסומן על ידי המשתנה ההתחלתי. כל עלה מסומן על ידי טרמינל או על ידי ε. כל צומת פנימי מסומן על ידי משתנה.,X1 X הם התוויות של הבנים של 2,..., X n אם A הוא משתנה שהינו תווית של צומת פנימי ו- X1, X 2,..., X n A הוא כלל גזירה כאשר X... 1X 2 X n אותו צומת משמאל לימין, אז משתנים או טרמינלים. בנוסף, אם A ε אז צומת המסומן A שיסומן ב- ε. יכול להיות בעל בן יחיד הם כלל- ε הוא כלל מהצורה. A ε שפה חסרת הקשר גזירה סדרה של החלפות של אותיות לא טרמינליות תוך שימוש בחוקי הגזירה שפה אוסף ביטויים הנגזרים מהמצב התחילי והמכילים טרמינלים בלבד תבנית פסוקית form) (sentential תוצאת סדרת גזירות בה נותרו (אולי) לא-טרמינלים גזירה שמאלית גזירה בה מוחלף בכל שלב הסימן השמאלי ביותר (באופן דומה אפשר להגדיר גם גזירהימנית) -12-

13 תבניות BNF תבניות BNF הן תבניות פורמליות המתארות דקדוקים חסרי הקשר. BNF נמצא בשימוש רחב לתיאור דקדוקים של שפות תכנות, פרוטוקולי תקשורת וחלקים של שפות טבעיות. דוגמא BNF המתאיםלמספרשלם :(integer) <digit> ::= "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" <sign> ::= "+" "-" <unsigned_integer> ::= <digit> <digit><unsigned_integer> <integer> ::= <unsigned_integer> <sign><unsigned_integer> סימונים: הסימון=:: מציין "מוגדר כ". סוגרייםמשולשות (<>) o אם ביטוי מוקף בסוגריים משולשות באגף שמאל, זהו השם המוגדר כעת. o אם ביטוי מוקף בסוגריים משולשות באגף ימין, זה שימוש בשם שכבר הוגדר. סימניםקבועיםמופיעות בין מרכאות. קיצורי כתיבה: הסימן פירושו "או". שרשורפריטים: כתיבת פריטים אחד ליד השני התחביר של BNF עצמה יכול להיות מיוצג גם הוא ע"י :BNF <syntax> ::= <rule> <rule> <syntax> <rule> ::= <opt-whitespace> "<" <rule-name> ">" <opt-whitespace> "::=" <opt-whitespace> <expression> <line-end> <opt-whitespace> ::="" <opt-whitespace> "" <!-- "" is empty string, i.e. no whitespace --> <expression> ::= <list> <list> " " <expression> <line-end> ::= <opt-whitespace> <EOL> <line-end> <line-end> <list> ::= <term> <term> <opt-whitespace> <list> <term> ::= <literal> "<" <rule-name> ">" <literal> ::='"' <text> '"' "'" <text> "'" <!-- actually, the original BNF did not use quotes --> -13-

14 הרחבות ל- BNF : ל- BNF הרחבות וואריאנטים רבים. הרחבה מאוד נפוצה היא.EBNF ניתן לקבל מידע על הרחבה זו בקישור הבא: הרחבות בהן נשתמש במסמך זה: איבריםאופציונליים יסומנו ע"י סוגריים מרובעים. לדוגמא: [<item>] במקרה זה <item> יופיע 0 או 1 פעמים. הופעה 0 אויותרפעמים תסומן על ידי סוגריים מסולסלות, לדוגמא: {<letter>} הופעהפעםאחתאויותר תסומן על ידי האיבר ולאחריו '+'. -14-

15 4. מבואלקומפילציה 4.1. התמונה הגדולה קומפיילר (מהדר) הוא תוכנית הקוראת תוכנית הכתובה בשפה אחת, שפתהמקור, ומתרגם אותו לתוכנית זהה בשפה אחרת שפתהיעד. במידה ויש שגיאות בתוכנית בשפת המקור הקומפיילר מודיע על כך למשתמש. ההידור מורכב משני חלקים: אנליזה וסינטזה. בשלבהאנליזההקוד מחולק לחלקים המרכיבים אותו, ונוצר ייצוג ביניים של הקוד. בשלבהסינטזהניצור את התרגום בשפת היעד מתוך תרגום הביניים. חלוקה ל- frontend ו- backend : נחלק את שלבי ההידור ל- 2 חלקים. ה- frontend כולל שלבים (או חלקי שלבים) התלויים בשפת המקור ובגדול לא תלויים בשפת היעד. שלב ה- front-end מביא את התוכנית לייצוג ביניים שנוח לעבוד איתו. ה- backend מסתמכים על ייצוג הביניים שנוצר על ידי ה- frontend (ולא על שפת המקור), ושם נמצאת רוב אופטימיזצית הקוד. שלב ה- back-end מבצע אופטימיזציות ומייצר קוד של שפת המטרה. -15-

16 4.2. שלב האנליזה ניתוח תוכנית המקור יוצג ביתר פירוט בהמשך המאמר. תהליך האנליזה מורכב מ- 3 שלבים: א. ב. ג. ניתוחליניארי: בניתוח זה רצף התווים המרכיבים את התוכנית נקרא משמאל לימין ומורכב לאסימונים (tokens) שהם רצפי תווים בעלי משמעות משותפת. שלב זה יכונה בהמשך גם.scanning או lexical analysis דוגמא: קריאת רצף אותיות וקיבוצן למזהה.(identifier) ניתוחהיררכי: ה- tokens או התווים מקובצים לאוספים מקוננים בעלי משמעות. שלב זה יקרא בהמשך parsing או.syntax analysis דוגמא: זיהוי קוד C בדיקה שכל statement מסתיימת בנקודה-פסיק, בדיקה שהגדרת משתנים היא מהצורה var_name; type וכדו'. ניתוחסמנטי: בדיקות שרכיבי התוכנית מרכיבים יחד ביטויים בעלי משמעות. דוגמא: בדיקה שלא מבוצעת חלוקה בקבוע אפס, בדיקה שאיננו מציבים ערך בוליאני למשתנה מסוג int וכדו' ניתוחלקסיקלי analysis) (lexical תפקידי המנתח הלקסיקלי: מחלק את קוד המקור לאסימונים ("מילים") מסנן חלקים שאינם דרושים להמשך הניתוח: למשל, רווחים, ירידות שורה. מזהה שגיאות לקסיקליות - מחרוזות שאינן להיות אף אסימון, למשל, "@" בשפת C מושגהאסימון (token) ה: token- הוא סוג של מעטפת (struct) שבו אנו עוטפים את מילת הקלט ומתייחסים אליה בשלב הראשון על פי הקבוצה אליה משתייכת המחרוזת ולא על פי ערכה. דוגמאות: 34 זהו var,number זהו id (משתנה), 23.4 זהו number וכו'. number, id הם.tokens נקודות: הניתוח הלקסיקלי מתבצע בעזרת קבוצת חוקים של ביטויים רגולריים שעל פי הם המנתח הלקסיקלי יזהה את המחרוזות שיש בקלט וידע לשים אותן ל- token מתאים. מחרוזת ספציפית יכולה באופן עקרוני להשתייך למספר קבוצות ולכן למנתח הלקסיקלי ינתנו חוקי עדיפות לגבי השיוך של המחרוזת וכל מחרוזת תשתייך לקבוצה על פי העדיפות הגבוהה ביותר אליה היא מתאימה. לאחר שמסתיים שלב הניתוח הלקסיקלי יגיע שלב הניתוח הסינטקטי. -16-

17 ניתוחסינטקטי analysis) (syntax בשלב הניתוח הסינטקטי הופכים את ה- tokens שהוצאו מקוד המקור לייצוג ביניים ממנו נגזור את הפלט. לעתים ה- tokens מיוצגים על ידי עץ גזירה. סוג נפוץ יותר של עץ בו נשתמש הינו העץהסינטקטי tree),(syntax בו כל צומת מייצגת פעולה והבנים של הצומת הינם הארגומנטים עליה פועלת אותה הפעולה. דוגמא: העץ הסינטקטי עבור *10 z x := y + העץ הסינטקטי הוא יצוג דחוס של ה- parsetree בו האופרטורים מופיעים כצמתים הפנימיים, והבנים של כל צומת אופרטור הם אלו עליהם מבוצעת הפעולה ניתוח סמנטי בשלב הניתוח הסמנטי אנו בודקים את תוכנית המקור בחיפוש אחר שגיאות סמנטיות, וכן אוספים מידע לגבי הטיפוסים עבור שלב ייצור הקוד. בשלב זה אנו משתמשים במבנה ההיררכי שנבנה בשלב הניתוח הסינטקטי כדי לזהות את האופרטורים והאופרנדים המרכיבים את הביטויים וההצהרות. חלק חשוב בשלב זה הינו type checking המהדר בודק שלכל אופרטורים מוצמדים אופרנדים המתאימים לו, לפי הגדרות השפה. -17-

18 .5 שלב 1 - ניתוחלקסיקלי analysis) (lexical 5.1. מושגים בסיסיים פרק זה מציג שיטות להגדרת ומימוש מנתחים לקסיקלים. מנתחלקסיקליהוא השלב הראשון שמבצע הקומפיילר. המטרה העיקרית שלו היא לקרוא את תווי הקלט ולייצר כפלט רצף של tokens שבהם ה- parser ישתמש לניתוח סינטקטי. קשר זה, המודגם בשרטוט הבא, גורם לכך שהמנתח הלקסיקלי לרוב ממומש כפונקציה של ה- parser. מדוע אנו צריכים שלב נפרד למנתח הלקסיקי ולא מממשים אותו כחלק מה- parser? א. ב. ג. ד. חלוקת המשימה לתתי משימות מאפשרת פישוט של משימת הקומפילציה. חלוקה כזו מקלה על מימוש שינויים בשפה (למשל הוספת אפשרות להגדרת משתנים בעברית). אפשרות לשימוש חוזר בגרסאות הבאות של הקומפיילר. יעילות: שימוש בטכניקות נפרדות כאשר המשימה של חלוקת האסימונים מבוצעת במרוכז. מושגים בסיסיים: אסימון :(token) יחידה בסיסית המשמשת כטרמינל בדקדוק שגוזר את שפת התכנות לקסמה :(lexeme) מחרוזת בקלט שהמנתח הלקסיקלי התאים לאסימון כלשהו תבנית regexp) :(pattern, ביטוי רגולרי שמגדיר את ההתאמה בין אוסף הלקסמות לאסימון מסוים. { " "} counter id name= counter Lexeme token properties דוגמא: -18-

19 תפקידי המנתח הלקסיקלי א. ב. ג. ד. זיהוי מחרוזות בקלט והפיכתן לאסימונים (מילים שמורות, קבועים, אופרטורים, מזהים...). סינון תבניות מסוימות (למשל הערות, או.(white-spaces זיהוי שגיאות לקסיקליות (למשל הופעה של "$" או בתוך תוכנית, לא במחרוזת או הערה). ביצוע פעולות סמנטיות (שיוך תכונות לאסימונים). עבודה עם המנתח הלקסיקלי הקלט של המנתח הלקסיקלי הוא תוכנית שרוצים לנתח, והפלט שלו הוא אסימונים עם תכונות. Scannerו- Screener 5.2. המנתח הלקסיקלי עצמו נחלק ל- 2 חלקים, ה- scanner וה- screener. בגדול:.(tokens) סורק את הקלט ומחלק אותו לאסימונים - Scanner - Screener מיסוך, חלק מהאסימונים לא חשובים, למשל הערות, ולכן אין צורך להעביר אותם הלאה. פעולת ה- screening היא סינון חלק מהאסימונים. -19-

20 תפקידי ה- :scanner קריאת הקלט הפרדת הקלט ליחידות לקסיקליות (= (symbols העברת ה- symbols ל- screener טיפול ב- include files ו- macros ספירת מספר שורות דיווח על symbols לא חוקיים ה- screener : לעיתים משולב כתוכנה "פתוחה" בתוך ה- scanner (לדוגמא -.(LEX תפקידו העיקרי של ה- screener זיהוי ה- tokens ואיסוף אינפורמציה על ה- lexemes עצמן המנתחהלקסיקליותכונותסמנטיות הלקסמות אינן עוברות הלאה לשלבים הבאים בניתוח - המנתח התחבירי אינו הסמנטי כן צריך מידע עליהן, לדוגמא: צריך אותן, אך המנתח האם קיים משתנה ששמו x? איזו פעולה בדיוק הופעלה? המנתח הלקסיקלי מחשב לכל אסימון תכונות סמנטיות: id {name = x } op {type = + } -20-

21 .5.4 כלי Lex רקע כללי כלי לייצור מנתחים לקסיקליים. Lex מקבל הגדרת מנתח לקסיקלי מהמשתמש, ומייצר קובץ C שהוא הקוד של המנתח המבוקש. נשים לב: Lex הוא לא מנתח לקסיקלי. תכונות המנתח הלקסיקלי ש- Lex בונה: המנתח קורא קלט מ- stdin וכותב ל- stdout. ה-"לב" של המנתח הוא הפונקציה yylex אשר מבצעת את הניתוח הלקסיקלי. אין צורך לכתוב פונקצית :main אם לא נכתוב,main אז lex יספק פונקציה כזו בעצמו. הפונקציה המסופקת תקרא ל- yylex עד שהקלט נגמר. הקובץ הנוצר הינו lexyy.c פונקציתהמנתחהלקסיקלי yylex() פונים אל המנתח הלקסיקלי על ידי הפונקציה.yylex() זו פונקציה ללא פרמטרים המחזירה ערך.int תכונות הפונקציה: ערך ההחזרה של yylex הוא.int הפונקציה קוראת את הקלט מהנקודה בה הפסיקה קודם (או תחילת הקלט אם זו הקריאה הראשונה ל- yylex ), מזהה אסימונים בזה אחר זה ומבצעת את הפעולה שהמשתמש רשם עבור כל אסימון שמזוהה. הפונקציה חוזרת (return) רק כאשר הפעולה שכתב המשתמש מכילה פקודת,return או כאשר היא מגיעה לסוף הקלט. מקובל: ערך 0 מייצג את סוף הקלט. אם yylex לא מצליחה לזהות אף אסימן בנדוקה הנוכחית בקלט, היא מוציאה את התו הראשון שנקלט מהקלט, מדפיסה אותו לפלט, ומנסה שוב (מהמקום החדש בקלט)

22 קבצי קלט ופלט למנתח הלקסיקלי המשתמש יכול להגדיר את קבצי הקלט והפלט שדרכן ניגשת yylex() אל הקלט והפלט. yyin הוא משתנה גלובלי המצביע אל קובץ הקלט (משתנה מסוג.(pointer to FILE כברירת מחדל הוא מקבל את הערך.stdin דוגמא לקבלת קלט מקובץ: yyin = fopen( file.txt, r ); yylex(); yyout הוא משתנה גלובלי המצביע אל קובץ הפלט (משתנה מסוג.(pointer to FILE כברירת מחדל הוא מקבל את הערך.stdout משתנים גלובלים נוספים int yyleng; char *yytext; אורך המילה שנמצאה מתאימה לתבנית האסימון: תוכן המילה שנמצאה מתאימה לתבנית האסימון: תזכורת C: כדי להשתמש בכל אחד מהמשתנים בקבצים אחרים עלינו להשתמש במילת המפתח.extern מבנה קובץ הקלט ל- lex מבנה קובץ הקלט ל- lex : definitions %% rules %% user code -22-

23 לדוגמא: %{ #include <stdio.h> %} id [a-z][a-z0-9]* %% {id} { printf("\nthe id found is: %s\n ",yytext); } %% void main(int argc,char *argv[]) { if (argc>1) yyin = fopen(argv[1],"r ); else { printf("error: you should type input file name as a parameter... ); exit(0); } yylex(); } החלק הראשון הגדרות של שמות המפשטים את כתיבת הכללים (בחלק השני). הגדרות אלה מכילות הצהרות של שמות כדי לפשט את אפיוני המנתח. הגדרת שם היא מהצורה: name definition ה- name הוא מילה המתחילה באות או קו תחתון ולאחריה אפס או יותר אותיות, ספרות, קווים תחתונים (_) או קווי הפרדה (-). ה- definition מתחיל מהתו הראשון שאינו white space אחרי ה- ל- ( definition ). יורחב וממשיך עד לסוף השורה. בהמשך הקובץ שימוש ב- { name } name דוגמא: DIGIT [0-9] ID [a-z][a-z0-9]* DIGIT מוגדר להיות ביטוי רגולרי המתאים לסיפרה אחת, "ID" מוגדר להיות ביטוי רגולרי המתאים לאות ולאחריה אפס או יותר ספריות ואותיות. -23-

24 לאחר ההגדרה נוכל למשל לכתוב: {DIGIT}+ כדי להתייחס לביטוי בו ספרה אחת או יותר מופיעות ברצף. קוד בשפת C שנכתב ע"י המשתמש ומועתק כמו שהוא לקובץ המיוצר על ידי.flex קוד זה יופיע לפני הפונקציה.yylex() כדי להוסיף קוד כזה יש להקיף את הקוד ב- }% בתחילתו וב- {% בסיומו: %{ %} user code בדרך כלל שמים בחלק הזה פקודות,define פקודות,include הצהרות על משתנים גלובליים והכרזות שלנו. החלק השני חלק זה מכיל סדרה של כללים מהצורה: pattern action התבנית (pattern) היא ביטוי רגולרי. התבנית חייבת להופיע בתחילת השורה (ללא whitespace לשים (ניתן whitespace לפניה). היא מסתיימת בתו הראשון שהוא whitespace כחלק מהתבנית על ידי הקפתו בגרשיים). יתרת השורה מהווה את ה- action. action הינו קוד בשפת C אותו מספק המשתמש. קוד זה מבוצע כאשר מתגלה התאמה לתבנית. החלק השלישי חלק זה מכיל קוד בשפת C שנכתב על ידי המשתמש. הוא מועתק כמו שהוא לסוף הקובץ ש- flex מייצר. -24-

25 5.5. פתרוןקונפליקטים קונפליקטנוצר כאשר אותו קלט יכול להתאים למספר אסימונים. הכללים של lex לפתרון הקונפליקט: המנתחחמדן: המנתח תמיד מעדיף את הלקסמה הארוכה ביותר שניתן לבחור סדרהתבניות: אם כלל (1) לא פתר את הקונפליקט, בוחרים באסימון בעל עדיפות גבוהה יותר - האסימון שמופיע ראשון בהגדרות האסימונים..1.2 Lookahead.5.6 הבעיה: לעיתים צריך לסרוק מספר אותיות קדימה על מנת להחליט מהו ה- symbol עליו אנחנו מתכוננים הפתרון: אות מיוחדת שאינה חלק מהשפה (למשל - /) המציינת את מקום תחילת ה- lookahead, המוחלפת ב- ε בייצוג האוטומט. -25-

26 .6 שלב 2 ניתוחתחבירי analysis) (syntax 6.1. רקע ומוטיבציה לכל שפת תכנות יש חוקים המתארים את המבנה הסינטקטי של השפה. בשפת C למשל תוכניות מורכבות מבלוקים המורכבים מהצהרות, וכל הצהרה מורכבת מביטויים. תחבירשלשפהיכול להיות מוגדר על ידי דקדוקחסרהקשר, אוע"יBNF. כאשר אנחנו משתמשים בדקדוק ח"ה, כל מילה בשפה היא תוכנית שלמה בקוד המקור. שימוש בדקדוק חסר הקשר: נותן לנו דרך קלה להבנה, אך בנוסף מדוייקת, להגדיר את תחביר השפה. בחלק מהמקרים, עבור חלק מהדקדוקים, ניתן לייצר באופן אוטומטי מנתח מתאים לשפה. שימוש בדקדוק חסר הקשר מאפשר הרחבות עתידיות קלות לשפה שלנו. תפקידהמנתחהתחבירי: המנתח התחבירי מקבל רצף של tokens מהמנתח הלקסיקלי. תפקידו הוא לוודא שרצף ה- tokens יכול להיווצר על ידי הדקדוק של שפת המקור. דרישת מהמנתח התחבירי: שלמות: המנתח מזהה כל מילה בשפה. אם התכנית היא חוקית, המנתח יצליח לזהות אותה ויבנה עץ גזירה. נאותות: המנתח אינו מקבל מילים שאינן בשפה. אם התכנית לא חוקית, המנתח לא יצליח לזהותה ויודיע על שגיאה. כל דקדוק חסר-הקשר שקול לאוטומט מחסנית. למה לא בונים אוטומט מחסנית ומשתמשים בו בתור מנתח תחבירי? האלגוריתם הקיים הינו בסיבוכיות 3 O( n ) - סיבוכיות לא מעשית. המטרה שלנו: פענוח ובנית עץהגזירהתוך מעבר בודד על הקלט, משמאל לימין. הקלט של המנתח הוא רצף אסימונים (מילה / תוכנית מחשב) והפלט הוא עץ גזירה למילה / תוכנית. -26-

27 חשוב לשים לב: כאשר אנחנו מדברים על "מעבר על הקלט" אנחנו מדברים בשלב זה על מעבר על האסימונים. כל אסימון נחשב כיחידה בסיסית. בכל שלב במהלך הניתוח התחבירי, הקלט w מתחלק ל- x y כאשר x הוא החלק שכבר קראנו, ו- y החלק שטרם נקרא סוגי ניתוח תחבירי ישנם 2 סוגים של ניתוח תחבירי: (predictive מהשורש לעלים (נקרא גם "ניתוח תחזית" top-down bottom-up מהעלים לשורש מעבירים למחסנית, או מחליפים צד ימין בסימן מהצד השמאלי של חוק הדקדוק reduce) (shift נציג את ההבדל בין הסוגים על ידי דוגמא: נביט בדקדוק הפשוט הבא: S Ax A a A b נניח שמילת הקלט היא, ax אזי הגזירה המתאימה השמאלית ביותר של הדקדוק הינה: S Ax ax במקרה זה, מכיוון שיש לנו רק משתנה אחד, זוהי גם הגזירה הימנית ביותר. עץ הגזירה המתאים הינו: מנתח bottom-up מתחיל מהטרמינל ומטפס למעלה: ax Ax S באופן אינטואיטיבי, מנתח top-down מנסה להרחיב כל nonterminal (כל פעם את הימני ביותר), ואילו מנתח bottom-up מנסה כל פעם להחליף (reduce) את הצד הימני ביותר של הביטוי ב- nonterminals. -27-

28 ניתוח Top-Down אופן הפעולה: הניתוח מתחיל מהמשתנה התחילי. מפעילים רצף כללי גזירה. עוצרים כאשר: a. מגיעים למילת הקלט המילה בשפה. b. נתקעים (אין או לא יודעים איזה כלל גזירה להפעיל) המילה אינה בשפה הבעיה העיקרית: איזה כלל להפעיל בכל צעד? A α,. אנו יודעים איזה משתנה רוצים הסיטואציה: הגענו למשתנה A, שלו קיימים הכללים A β לגזור (A), השאלה באיזה כלל של A להשתמש. -28-

29 .6.3 שיטתDescent Recursive (פועלתבשיטת (Top-Down שיטת Recursive Descent היא מקרה פרטי של שיטת Recursive Descent.Top-Down זהו הרעיון הכללי מאחורי משפחה של אלגוריתמים, המאופיינת על ידי: האלגוריתם הוא רקורסיבי. לכל דקדוק מיוצרת תוכנית מיוחדת ע"מ לנתח אותו. כל משתנה (non-terminal) מטופל ע"י פונקציה נפרדת. המנתח מתחיל לפעול מהפונקציה המתאימה ל- nonterminal הראשון. כל פונקציה מחקה את החוק שעבורו הוגדרה, באופן הבא: match מתורגם לקריאת האסימון המתאים מהקלט. (משתמשים בפונקציה terminal o שתוצג בהמשך כדי "לאכול" אסימונים) nonterminal o מתורגם להפעלת הפונקציה המתאימה לו. האלגוריתמים שונים ביניהם בהחלטה מה לעשות כאלשר יש מספר חוקי גזירה עבור אותו.nonterminal דגש: השאלה איך גוף הפונקציה ייראה פתוחה לגמרי ותלויה במתכנת/במה שמייצר את המנתח. מכיוון שכך, RD היא משפחה של אלגוריתמים. הרעיון המרכזי: נכתוב לכל משתנה פונקציה ש"תגזור" את כל המילים הנגזרות ממנו. דוגמא לבחירת התנהגות לאלגוריתם ההתנהגותהבסיסיתשל :RD נבחר את כלל הגזירה לפי הסדר הבא: מבין כל הכללים של משתנה A וטרמינל הבא בקלט t: 1. אם ל- A יש כלל שמתחיל ב- t, בחר בו a. אחרת, אם ל- A יש כלל יחיד שמתחיל במשתנה, בחר בו b. אחרת, תודיע על שגיאה c. אפשרות אחרת, במקום c שימושב- lookahead : אם ישנם כמה חוקי גזירה עבור אותו,nonterminal בוחרים ביניהם בעזרת.lookahead -29-

30 פונקצית עזר של האלגוריתם: void match(token t) { if (lookahead == t) lookahead = next_token(); else error; } פונקצייה זו משמשת כדי לקרוא טרמינלים. ה- lookahead במקרה של RD שנציג הוא של אסימון אחד בלבד. קיימים אלגוריתמים RD שלא נציג להם lookahead גדול יותר. דוגמא לשימוש. נביט בדקדוק: OP and or xor פונקציה מתאימה תהיה: void OP() { if (lookahead = AND) else if (lookahead = OR) else if (lookahead = XOR) else } match(and); match(or); match(xor); error; שיטת :lookahead RD איך מחליטים באיזה כלל להשתמש? אם יש כמה כללים שונים לאותו,nonterminal יש לבחור ביניהם. עבור כלל,A α נגדיר: רשימת האסימונים שהם ראשונים באחת או יותר גזירות first( α) אפשריות הנובעות מכלל זה. אם אין חיתוך בין כל ה- FIRSTs עבור הכללים השונים ל- nonterminal נתון, אין כל בעיה ואנו יודעים באיזה כלל לבחור. אם יש חיתוך צריך לתקן את הדקדוק או להשתמש ב- lookahead עמוק יותר. -30-

31 קבלת עץ גזירה באמצעותRD ציינו כבר כי לצורך השלבים הבאים של הקומפילציה נצטרך יותר מאשר זיהוי וקבלת הקלט נצטרך עץ גזירה. נרצה להרחיב את הפונקציות שאנחנו כותבים ב- RD על מנת שיצרו לנו עץ: בכל פעם שנקראת אחת הפונקציות פירוש הדבר ש"איתרנו" צעד בגזירה. בכל צעד כזה ניתן לבצע פעולות שונות - בפרט, ניתן לבנות עץ בעזרת הפעולות הללו. דרך אחת לקבל עץ מהפונקציות הקיימות: כל פונקציה מחזירה רשומה מסוג Node (צומת בעץ). כל רשומה כזו מכילה רשימה של בנים. בכל קריאה לפונקציה אחרת (או ל- match ), מוסיפים את תוצאת הקריאה ל- Node שנבנה כעת. בפועל בד"כ לא באמת בונים עץ גזירה. יצוג של התוכנית כולה בזכרון יכול להיות מסובך ו"כבד". עם זאת, באופן שקול, ניתן לבצע כל פעולה שהיא בפונקציות השונות המתקבלות באלגוריתם RD (Recursive.IR הביניים יצוג פעולות אלה תייצרנה, בסופו של דבר, את הפלט של ה- parser :.(Descent בעיותבשיטת RD לא ניתן לטפל בכל הדקדוקים: אם יש שני כללים שמתחילים במשתנה או אותו טרמינל לא נדע במי מהם לבחור. המנתח לא שלם: אינו מזהה את כל המילים בשפה. ab עבור מילת קלט B, ו- a S a Bb דוגמא: עבור דקדוק עם שני כללי גזירה o המנתח יבחר בכלל S a וייתקע. רקורסיה שמאלית תגרום לריצה אינסופית: דוגמה: S Sa a -31-

32 פתרונות לבעיות: A α B1 αb2... αbn A α A A = β1 β2... βn שינוי הדקדוק לדקדוק שקול:.a ביטולרישותמשותפות factoring).(left לדוגמא: יהפוך להיות:.1 b. ביטולרקורסיהשמאלית. מיד יוצג אלגוריתם שמבצע זאת. 2. בחירת שיטה אחרת. בעייתיות בפתרון 1: לא מובטח שהבעיות ייפתרו. הפתרון לא נותן מענה לשני כללים שמתחילים ממשתנה שונה. קיבלנו דקדוק "מכוער" ולא אינטואיטיבי..1.2 אלגוריתםלהעלמת רקורסיותשמאליותמדקדוק: Input: Grammar G possibly left-recursive Output: An equivalent grammar with no left-recursion Method: Arrange the nonterminals in some order A1, A2,..., A n for i:=1 to n do begin for s:=1 to i-1 do begin replace each production of the form Ai ASχ by the productions Ai δ1χ δ2χ... δkχ where AS δ1 δ 2... δ k are all the current A -productions; end S end eliminate immediate left recursion among the Ai -productions -32-

33 ביטולרקורסיהשמאליתישירה (דוגמא): A Aα β יהפוך ל: A β A A α A ε אלגוריתםFactoring :Left (מספרכללים המתחיליםעםהתחלהזההובהמשךישהתפצלות) Input: Grammar G Output: An equivalent left-factored grammar Method: For each nonterminal A find the longest prefix a common to two or more of its alternatives. If a not equal e, i.e., there is a nontrivial common prefix, replace all the A productions A αβ1 αβ2... αβn χ where χ represents all alternatives that do not begin with α by A A α χ A β1 β2... βn Here A is a new nonterminal. Repeatedly apply this transformation until no two alternatives for a nonterminal have a common prefix. -33-

34 שיפורבפונקצייתהבחירה follow select, first, נגדיר פונקציה: select : P 2 T שמגדירה לכל כלל איזה טרמינלים בקלט יגרמו לבחירת כלל זה. לצורך ההגדרה נגדיר 2 פונקציות עזר, fisrt ו- follow, ובאמצעותן נגדיר את.select הפונקציות מודגמות עכשיו בהקשר של שיפור ל- RD, אבל גם אלגוריתמים בהמשך ישתמשו בהן, ולכן חשוב להכירן היטב. ( α) = { α * β} first t T t הפונקציהfirst first X ( V T) אלגוריתםלחישוב :first שלב 1 : חישוב first עבור כל סימן לכל טרמינל בדקדוק. first( A) = first( A) { ε} ( Y Y Y ( V T) 1, 2,..., k. first( t) = {} t first( A ) =, t T הגדר, A V הגדר, A ε אם קיים כלל, A V A YY Yk לכל משתנה לכל משתנה אתחול: צעד: כל עוד יש שינויים, לכל כלל (כאשר בצע: ( α) first( α) = x1 x2... x j 1 first( x 3 ) first ( A ) = first ( A ) first ( Y ) i first( A) = first( A) first( Y 1 ) לכל i>1 עבורו YY... Y * ε בצע α = x... 1 xk x 1 במקרה ש- 1 2 i 1 שלב 2 : חישוב first עבור רצף סימנים first( x 2 ) כלומר: ) 1 first( x ש- מאוחד עם אפיסים, וכך הלאה. אפיס. כל זה מאוחד עם במקרה x1, x2-34-

35 הפונקציה follow ( ) = { { $ } $ * α β} follow A t T S At. follow( A ) =. follow( S ) = { $ } A, נגדיר S אלגוריתם לחישוב :follow לכל משתנה עבור המשתנה התחילי S, נגדיר אתחול: צעד: כל עוד יש שינויים, לכל משתנה A V בצע: לכל כלל Y α Aβ (שבו A מופיע באגף מצד ימין): follow( A) = follow( A) follow( Y) follow( A) = follow( A) first( β) אם β * ε בצע גם הערות: $ - סימן סוף קלט (לא חלק מאוסף הטרמינלים). אנחנו מציינים בעצם באתחול כי אחרי המשתנה ההתחלתי מגיע סוף הקלט. βזה כל הביטוי בהמשך, לא רק המשתנה הצמוד. חשוב לשים לב כי נופלים בזה בתרגילים. הפונקציהselect הפונקציה select תוגדר באופן הבא: first select( A α) = first ( α) follow( α) ( α) α * ε otherwise נסכם את המשמעויות: : select A טרמינלים שיגרמו לבחור בכלל זה כאשר רוצים להפעיל כלל של A. לצורך ( α) חישוב של,select מגדירים פונקציות עזר first ו- follow. טרמינלים שיכולים להופיע בתחילת מילה שנגזרת מ- A. :first(a) :first(α) ההרחבה של first לתבניות פסוקיות. כל הטרמינלים שיכולים להופיע בתור האות הראשונה של התבניתפסוקית. :follow(a) טרמינלים שיכולים להופיע אחרי A בגזירה כלשהי -35-

36 .6.4 אלגוריתם LL(k) רקע אלגוריתם LL(k) הוא אלגוריתם בעל התכונות הבאות:: top-down מבוסס טבלה סורק את הקלט משמאל (L) לימין מניב את הגזירה השמאלית (L) ביותר זקוק ל- lookahead בגודל k איטרטיבי, בניגוד ל- descent recursive שהוא רקורסיבי המקרה הפשוט ביותר הוא אלגוריתם.LL(1) שפהנקראת LL(k) אם אפשר לגזור אותה בעזרת.LL(k) parser אלגוריתם RD גוזר שפות LL(k) עבור k בלתי-חסום. בדרך-כלל מנתחים שפות LL(k) בעזרת אלגוריתמים מבוססי-טבלה. אלגוריתמים אלו ידועים בשם.LL(k) parsers דוגמאות: 1. דקדוק/שפה שאינם :LL(k) S A B A abb c B abbb d לכל k, קיימת מילה ארוכה מספיק שלא יהיה ניתן לגזור אותה ב-( LL(k. 2. דקדוק ב-( LL(k+1 שאינו ב-( LL(k : k k S a b a c ניתן לקבל דקדוק שקול ב-( LL(1 באמצעות.left-factoring -36-

37 אלגוריתם LL(1) אלגוריתם LL(1) מקבל: קלט, מחסנית וטבלת מעברים, ומוציא עץ גזירה כפלט. לדקדוק G קיים מנתח LL(1) אם ורק אם לא קיים קונפליקט בדקדוק, כלומר לכל שני כללים A α ו- A β בדקדוק ( α) select( A β) כך ש-, α β מתקיים = A. select הרעיון של האלגוריתם הוא לחקות בעזרת מחסנית את התנהגות.Recursive Descent מבני הנתונים של האלגוריתם: מחסניתQ : מחסנית הניתוח המחזיקה את מה שרוצים עדיין לראות. בראש המחסנית מופיע מה שאנחנו רוצים לראות מיד. המחסנית מאותחלת ב- S, ותומכת בפעולות הרגילות push, pop,.top טבלתהמעברים M: ב-( LL(1 משתמשים בטבלה המכתיבה, עבור כל מצב נתון, באיזה כלל גזירה להשתמש. שורות הטבלה: משתנים. עמודות הטבלה: אסימונים אפשריים בקלט. תוכן הטבלה: חוקי גזירה. כאשר אין קונפליקטים, כל תא של M מכיל איבר אחד בלבד. בניית הטבלהמבוצעת לפי הכלל הבא: M ( X, t) X V, t T ( α) X α t select X = error otherwise האלגוריתם: אתחולהמחסנית: המשתנה (nonterminal) הראשון בדקדוק, ו-$ (סימן לסוף הקלט). המחסנית יכולה להכיל אסימונים (terminals) או משתנים. "$" הוא אסימון מיוחד, לצורך זה. אם בראש המחסנית יש אסימון: אם האסימון הבא בקלט אינו זהה: שגיאה. אם הוא תואם את הקלט: צרוך את תו הקלט; הסר את האסימון מהמחסנית. (אם האסימון הוא $, סיימנו). פעולתSHIFT אם בראש המחסנית יש משתנה: מצא את התא בטבלה M המתאים למשתנה זה ולתו שבראש הקלט. אם התא ריק: שגיאה. אחרת: הסר את המשתנה מראש המחסנית; הוסף למחסנית את צד ימין של כלל הגזירה שנמצא בטבלה, לפי סדר החל באסימון/משתנה הימני ביותר וכלה באסימון/משתנה השמאלי ביותר (הוא ישאר בראש המחסנית). פעולתREPLACE -37-

38 דוגמא לבניית הטבלה. נבצע חישוב select על הדקדוק הנתון. נניח כי מקבלים: ( ) = { } ( ) = { } ( ) = { } ( ) = { } select S Ab a select S bc c select A a a select C ca c הטבלה M המתאימה הינה: a b c $ S S Ab S bc A A a C C ca המקומות הריקים מכילים.error 6.5. סיכום שיטות Top-Down השיטות שראינו, היתרונות והחסרונות של כל אחת מהשיטות: שיטה RD Improved-RD LL(1) תיאור המנתח הנוצר אינו בהכרח נכון ואינו בהכרח יעיל דורשת select -ים זרים, ויצירת תוכנית מיוחדת לכל דקדוק שכוחה בכוחה ל- ImprovedRD, אבל אוטומטית -38-

39 .6.6 אלגוריתמים LR(K) אלגוריתם LR(k) הוא אלגוריתם בעל התכונות הבאות: bottom-up מבוסס טבלאות סורק את הקלט משמאל (L) לימין מניב את הגזירה הימנית (R) ביותר זקוק ל- lookahead בגודל k המקרה הפשוט ביותר הוא אלגוריתם.LR(0) אלגוריתם זה פשוט, אך קיימים דקדוקים רבים שהוא לא יצליח לנתח. האלגוריתם LR(1) שיוצג בהמשך מסוגל להתמודד עם רוב שפות התכנות הקיימות. מכיווןש- LR קוראאתהקלטמשמאללימין, אךצריך לייצראתהגזירההימניתביותר, הואמשתמש ברדוקציהכדילנתחאתהקלט. עלידייצירת הרדוקציה השמאליתביותרנקבלאתהגזירההימנית ביותר. (נשיםלב בכלפעםאנחנובוחריםאת המשתנההמתאיםלחלקהשמאליביותר. בסופושל דבר המשתנהעבורהחלקהימנייבחראחרון וכאשרנסתכל top-down נשיםלבשזוגזירהימנית) שפהנקראת LR(k) אם אפשר לגזור אותה בעזרת.LR(k) parser תכונה: כל שפה LL(n) היא גם LR(n) אבל לא להיפך. כלומר, LR מכיל ממש את.LL הארכיטקטורה של מנתחי LR (השרטוט לקוח מויקיפדיה) -39-

40 אלגוריתם LR(0) הצגת האלגוריתם אלגוריתם LR(0) מקבל: קלט, מחסנית, טבלת פעולות וטבלת,goto ומוציא עץ גזירה כפלט. ה- parser הוא אוטומט המגיב בהתאם לרכיבים השונים. המחסנית: המחסנית ב- LR מכילה מצבים (מזוהים על-ידי מספר). לצורך קריאות, נכלול במחסנית גם משתנים ואסימונים. אין בהם צורך באלגוריתם. לצורך האלגוריתם מספיק לשמור מצבים, אך על מנת להבין יותר את מצב התוכנית מתוך שרטוט המחסנית נגדיר שגם משתנים ואסימונים ימוקמו במחסנית. למעט מצב "0" שנמצא בתחתית המחסנית, כל שאר המחסנית תהיה מורכבת מזוגות של מצב+משתנה או מצב+אסימון. המחסנית ההתחלתית מכילה רק את מצב "0". טבלת הפעולות: טבלה זו מכתיבה את הפעולה לביצוע בכל שלב. שורות הטבלה: מצבים (על-פי מספרים). עמודות הטבלה: אסימונים אפשריים בקלט. תוכן הטבלה: הוראות ביצוע. הוראותביצוע: הוראות הביצוע בטבלת הפעולות יכולות להיות: shift n o o מסומנת sn (למשל,s1 s2 וכו'). פירושה: מעבר למצב n (דחיפה של n למחסנית), העברת תו הקלט הבא למחסנית והסרתו מה- inputstream. rm (למשל r1, r2 וכו') זיהינו כלל גזירה מס' m reduce m מסומנת o פירושה: o accept acc מסומנת o o פירושה: הקלט נגזר בהצלחה. תאיםריקים שגיאה בקלט. -40-

41 טבלת :Goto טבלת העזר השנייה משמשת במקרים בהם זיהינו גזירה של כלל. שורות הטבלה: מצבים עמודות הטבלה: משתנים תוכן הטבלה: מצבים. היות שלשתי הטבלאות action) (goto, אותן שורות, מקובל להציג אותן זו-לצד-זו. האלגוריתם עצמו: אתחול המחסנית: "0" מצא את [i (i action[t, ראש המחסנית, t אסימון הקלט הבא): :shift n אם מצאת o הסר את האסימון t מהקלט, הוסף את t ואח"כ את n למחסנית. :reduce m אם מצאת o יהי w מספר התווים בצד ימין של כלל הגזירה מספר m. הסר 2w ערכים מהמחסנית. יהי M המשתנה שגוזר כלל m. הוסף את M למחסנית. מצא את [M (s goto[s, ראש המחסנית החדש) והוסף אותו למחסנית. כתוב m לפלט אם מצאת :acc סיום בהצלחה. o אחרת: סיום בשגיאה. o המשך עד לעצירה. הערה: קיימת גרסה של האלגוריתם ללא פלט, בה התשובה של האלגוריתם היא דחיה או קבלה בלבד דוגמאלשימושבמנתח נגדיר את כללי הגזירה הבאים: ( ) ( 2) ( 3) ( ) ( ) 1 E E * B E E+ B E B 4 B 0 5 B 1-41-

42 טבלה אפשרית עבור כללים אלה: (בהמשך נראה כיצד בונים טבלה כזו) טבלתהפעולות (action) טבלת goto מצבים * r4 r5 s5 r3 r1 r2 + r4 r5 s6 r3 r1 r2 0 s1 r4 r5 r3 s1 s1 r1 r2 1 s2 r4 r5 r3 s2 s2 r1 r2 $ r4 r5 acc r3 r1 r2 E 3 B הרצה של האלגוריתם עבור הקלט 1+1. (במחסנית מוצגים המצבים בלבד) State Input Stream Output Stream Stack Next Action 0 1+1$ [0] Shift $ [0,2] Reduce $ 5 [0,4] Reduce $ 5,3 [0,3] Shift 6 6 1$ 5,3 [0,3,6] Shift 2 2 $ 5,3 [0,3,6,2] Reduce 5 8 $ 5,3,5 [0,3,6,8] Reduce 2 3 $ 5,3,5,2 [0,3] Accept הסבר חלקי: המנתח בהתחלה שם במחסנית את המצב ההתחלתי [0]. התו הראשון בקלט שהמנתח רואה הוא 1. כדי למצוא מה השלב הבא הולכם לטבל ה- action לשורת המצב הנוכחי (המצב הנוכחי, כאמור, הוא זה שבראש המחסנית במקרה שלנו 0). הפעולה היא,shift 2 ולכן המצב [2] נדחף למחסנית (וגם האסימון 1 לא מוצג בטבלה לעיל). במצב 2 הטבלה אומרת שלא משנה איזה טרמינל אנחנו רואים, צריך לעשות.reduce 5 אנחנו רושמים 5 לפלט, מוצאים את מצב 2 מהמחסנית, ודוחפים למחסנית את הערך המתאים שבטבלת goto עבור מצב 0 ומשתנה B. כך ממשיכים עד שמגיעים ל- Accept. המספרים שנכתבו כפלט [5,3,5,2] הם אכן הגזירה הימנית ביותר שלו. -42-

43 בנייתטבלאות LR(0) הגדרות לקראת בניית הטבלאות: פריט LR(0) הגדרה: פריט LR(0) (או בקיצור פריט, ובעברית (item הוא כלל גזירה עם "נקודה" מיוחדת בתוכו. מכלל גזירה עם n רכיבים מצד ימין ניתן לקבל 1+n פריטים. למשל, עבור הכלל (3 E E + B רכיבים מימין) נקבל את 4 הפריטים הבאים: כלל ε נחשב לכלל באורך 0, לכן מהכלל A ε ניתן לקבל רק את הפריט: E E + B E E + B E E + B E E + B A פריט אינו באמת כלל גזירה (בכללים האמיתיים אין את הנקודה). פריט מסמל את מצבו של ה- parser. משמעותו: זיהינו את מה שנמצא לפני (משמאל) הנקודה; אנו מצפים כעת למצוא את מה שנמצא אחריה (מימינה). למשל, הפריט: E E + B מסמן כי ה- parser זיהה מחרוזת המתאימה ל- E בקלט, והוא כעת מצפה למצוא "+" ואחר-כך מחרוזת המתאימה ל- B. קבוצותשלפריטים בדרך-כלל לא ניתן לתאר את מצב ה- parser בעזרת פריט יחיד. יתכנו מספר אפשרויות להמשך הגזירה. לכן מציינים את מצבו של ה- parser בעזרת קבוצה של פריטים. -43-

44 סגור של קבוצת פריטים אם קבוצת הפריטים הנוכחית כוללת מצב שבו הנקודה נמצאת לפני משתנה, קשה לדעת מה צריך להיות הפריט הבא בקלט. לשם כך בונים את קבוצת הסגור של קבוצת הפריטים. הגדרה: קבוצת הסגור של קבוצת פריטים: קבוצת פריטים שבה, עבור כל פריט בקבוצה מהצורה A α B β ועבור כל כלל מהצורה B δ בדקדוק, גם הפריט B δ נמצא בקבוצה. בניית קבוצת הסגור היא איטרטיבית, משום שגם δ עשוי להתחיל במשתנה. (ההגדרה של הסגור אומרת בעצם כל עוד האיבר אחרי הנקודה הוא משתנה, המשך להרחיב). דקדוק מורחב הגדרה: דקדוקמורחבהוא דקדוק שהוסיפו לו כלל יחיד, המבטיח שהגזירה האחרונה היא חד-משמעית בהיותה אחרונה. נרחיב את הדקדוק על-ידי הוספת כלל גזירה S, E כאשר: S משתנה שלא היה קיים בדקדוק לפני-כן, והוא כעת המשתנה הראשון, E המשתנה הראשון המקורי של הדקדוק. נהוג למספר את הכלל החדש "0". הדקדוק אחרי ההוספה של הכלל: ( 0) ( ) ( 2) ( 3) ( ) ( ) S E 1 E E * B E E+ B E B 4 B 0 5 B 1 הערה: הצורך במשתנה הזה הוא לדאוג שכאשר נגיע אליו בסופו של דבר, נדע כי סיימנו את התהליך. -44-

45 מכונת המצבים והמצב ההתחלתי בבניית הטבלאות, אנו בונים למעשה מכונת מצבים דטרמיניסטית שכל מצב שלה מסומן על-ידי קבוצת סגור כלשהי של פריטים. המצב ההתחלתי הוא הסגור של הפריט הראשון מהכלל שהוספנו בבניית הדקדוק המורחב:.S E זוהי "קבוצת פריטים."0 המצבים הבאים: o מצא את כל הפריטים במצב הנוכחי, שבהם הנקודה נמצאת לפני סימן נתון כלשהו הסימן x יכול להיות אסימון או משתנה. נסמן קבוצת פריטים זו S (תת-קבוצה של המצב הנוכחי). הזז את הנקודה צעד אחד ימינה עבור כל הפריטים ב- S. o o מצא את הסגור של הקבוצה שהתקבלה. o כל clos(s) שנמצא בעזרת הכללים הללו הוא מצב חדש שניתן להגיע אליו מהמצב הנוכחי, כאשר בקלט מופיע x..x דוגמא: עבור הדקדוק שהוצג, קבוצת המצבים 0 הינה: Item set 0 S E E E * B E E+ B E B B 0 B 1 כעת, עבור הטרמינל '0' נקבל את קבוצה 1: Item set 1 B 0 עבור הטרמינל '1' נקבל את קבוצה 2: Item set 2 B 1-45-

46 עבור המשתנה E נקבל את קבוצה 3: Item set 3 S E E E * B E E + B עבור המשתנה B נקבל את קבוצה 4: Item set 4 E B נשים לב שהסגור לא מוסיף פריטים חדשים בכל המקרים. אנחנו ממשיכים בתהליך עד שלא ניתן למצוא קבוצות נוספות. Item set 5 E E * B B 0 B 1 Item set 6 E E+ B B 0 B 1 עבור קבוצות 4 1,2, אין המשך מכיוון שהנקודה אינה בקדמת אף סימן. עבור קבוצה 3 אנו רואים שקיימת נקודה לפני הטרמינל * וגם לפני +. עבור * נקבל את קבוצה 5: עבור + נקבל את קבוצה 6: מכאן: חשוב לשים לב שאם נמשיך עם 0 או אם 1 נגיע לקבוצות 1 ו- 2 בהתאמה. אין להגדיר קבוצות כפולות. עבור המשתנה B נגיע לקבוצה 7: Item set 7 E E * B -46-

47 מקבוצה 6, עבור הטרמינלים 0 ו- 1 נגיע גם לקבוצות 1,2. עבור B נקבל את קבוצה 8: Item set 8 E E+ B בכל הקבוצות הסופיות שקיבלנו אין נקודת לפני סימן, ולכן סיימנו. טבלת המעברים של אוטומט המצבים המתאים נראה כך: Item Set * E B בנייתטבלאות action ו- goto בהנתן טבלת המעברים והקבוצות שבנינו נבנה את goto ו- action באופן הבא: העמודות של המשתנים מועתקות לטבלת ה- GOTO העמודות של הטרמינלים מועתקות לטבלת ה- action כפעולות.shift אנו מוסיפים עמודה נוספת לטבלת ה- action עבור $ (סוף הקלט) שמכילה acc עבור קבוצה שמכילה S Ei A הוא חוק m (כאשר 0<m ( אז אם קבוצה i מכילה פריט מהצורה A wi וגם w נמלא את כל השורה עבור i בפעולה. rm ניתן לראות שמתקבלת הטבלה שהצגנו בהתחלה. -47-

48 דוגמא נציג כעת דוגמא מלאה נוספת לבניית אוטומט וטבלאות LR(0) מתוך דקדוק נתון. הקורא מוזמן לפתור דוגמא זו כתרגיל. 1. S' -> S 2. S -> aab 3. A-> Ab 4. A-> ε 5. B-> c 6. B-> cad הדקדוק הנתון: נבחין כי אין צורך להוסיף כלל וליצור דקדוק מורחב מכיוון שהכלל 1 הוא כבר כלל המקיים שהגזירה האחרונה היא חד משמעית. ({ i }) { i i } Item set 0 = CLOS S S = S S, S aab נמצא את קבוצות הפריטים השונות: מקבוצה 0, עבור טרמינל a נקבל: { S aiab A iab A i } Item set 1 =,, מקבוצה 0, עבור משתנה S נקבל: { } Item set 2= S Si מקבוצה 1, עבור משתנה A נקבל: { S aaib A Aib B ic B i cad} Item set 3 =,,, מקבוצה 3, עבור משתנה B נקבל: Item set 4= { S aabi} -48-

49 מקבוצה 3, עבור טרמינל b נקבל: Item set 5= { A Abi } מקבוצה 3, עבור טרמינל c נקבל: { B ci B ciad A iab A i } Item set 6 =,,, מקבוצה 6, עבור משתנה A נקבל: { B caid A Ai b} Item set 7 =, מקבוצה 7, עבור טרמינל, d נקבל: Item set 8= { B cadi } מקבוצה 7, עבור טרמינל, b נקבל שוב את קבוצה 5. טבלת המעברים של האוטומט: a b c d S A B

50 האוטומט עצמו: S is S iaab S Si a S aiab A iab A i S aaib, A Aib, B ic, B icad b S aabi A Abi c B ci, B ciad, A iab, A i B caid A Aib b d B cadi -50-

51 טבלאות goto ו- action עבור מנתח :LR(0) actions goto a b c d $ S A B 0 s1 2 1 r4 r4 r4 r4 r4 3 2 acc 3 s5 s6 4 4 r2 r2 r2 r2 r2 5 r3 r3 r3 r3 r3 6 r5/r4 r5/r4 r5/r4 r5/r4 r5/r4 7 7 s5 s8 8 r6 r6 r6 r6 r6 נשים לב שקיימת התנגשות בטבלה! בנושא זה נעסוק מיד. -51-

52 קונפליקטיםבטבלאות כשמוסיפים הוראות reduce לשורה בטבלת הפעולות, לא מוחקים מה שכבר קיים בשורה זו, ולכן ייתכן שבתאים מסוימים בטבלה יש שני ערכים (או יותר). מקרים כאלה נקראים קונפליקטים. סוגי קונפליקטים: קונפליקטreduce/reduce נוצר כשבתא אחד יש כמה אפשרויות שונות ל- reduce. כשבתא אחד יש גם הוראת reduce וגם הוראת,shift מקבלים קונפליקטshift/reduce. איך הקונפליקטים נוצרים? נביט בבניה שלנו: האוטומט נבנה בדרך שמובטחת להיות דטרמיניסטית. לעומתו פעולות reduce מוספות ללא התחשבות בתוכן הנוכחי של התאים באותה שורה, ולכן יכולים להיווצר מצבים שתא יכיל כמה פעולות reduce או שילוב של shift ושל.reduce טענה: ניתן להוכיח כי דקדוק שבו יש קונפליקט הוא לא דקדוק.LR(0) דוגמא לדקדוק בעייתי מסוג shift-reduce (הדוגמא לקוחה מויקיפדיה האנגלית): ( ) ( ) 1 E 1E 2 E 1 אחת מהקבוצות שניתן למצוא היא: E 1i E E 1i E i1e E i1 יש התנגשות shift-reduce בגלל שבאותו תא יש גם reduce של כלל 2 וגם shift של הטרמינל 1. אבחנות: הקונפליקט קיים כשהמכונה במצב 1 וקיים האסימון 1 בקלט. בלי שום קשר לקלט, כשאנחנו במצב 1, מבצעים reduce לכלל הגזירה 1 E בגלל הפריט. E 1i -52-

53 דוגמא לדקדוק בעייתי מסוג :reduce-reduce ( ) ( ) ( ) ( ) 1 E A1 2 E B1 3 A 1 4 B 1 אנחנו מקבלים את הקבוצה הבאה: A 1i B 1i בשורה זו יהיה קונפליקט מסוג.reduce-reduce -53-

54 SLR כדי לפתור את הבעיה שהוצגה נציג שיפור למנתח, שיכונה.SLR בהמשך לדוגמא הראשונה, LR(0) לא יכול להכריע בין שני המצבים, אך עם זאת אפשר להגיע להחלטה בקלות: קל לראות שאחרי E לא יכול לבוא האסימון 1. כלומר: (E follow( 1. לכן, אם יש 1 בהמשך הקלט לא צריך לגזור E, ומבצעים shift ולא.reduce נתקן את LR(0) כך: צעד ה- reduce המקורי בבניית הטבלה: לכל מצב עם פריט α, A מוסיפים reduce מתאים לכל השורה. הופך להיות: לכל מצב עם פריט α, A מוסיפים reduce מתאים בשורה זו, לכל עמודה שהאסימון שבראשה שייך ל-( follow(a. האלגוריתם החדש יכונה אלגוריתםSLR. הוא מסוגל לזהות יותר שפות מ-( LR(0 ללא קונפליקטים. נאמר על דקדוק שהוא דקדוקSLR אם ניתן לבנות עבורו מנתח SLR נאות ושלם. האם SLR פותר את הדקדוק שהוצג קודם? הדקדוק: נפתח באופן מלא ונבדוק. הקבוצות השונות: ( ) ( ) 1 E 1E 2 E 1 Item set 0 S ie E i1e E i1 Item set 1 E 1i E E 1i E i1e E i1 Item set 2 S Ei Item set 3 E 1Ei -54-

55 action goto state 1 $ E 0 s1 2 1 s1/r2 r2 3 2 acc 3 r1 r1 מנתח LR(0) המתאים כולל ההתנגשות: מנתח SLR המתאים: ה- follow של E הוא } $ { ולכן r1 ו- r2 קיימים רק בעמודת ה-#. התוצאה היא טבלה ללא קונפליקטים: action goto state 1 $ E 0 s1 2 1 s1 r2 3 2 acc 3 r1 דוגמא נוספת: נמשיך את דוגמא נבנה את הטבלה המתאימה ל- SLR. ראשיית נחשב first ו- follow לכל המשתנים: First # S S A B 1,b c 2 { a } { ε } { } 3 { a } { a } { ε,b} { c } -55-

56 Follow # S S A B 1 { $ } 2 { $ } { b, c, d } 3 { $ } { $ } { b, c, d } 4 { $ } { $ } { b, c, d } { $ } בניית טבלאות goto ו- action עבור מנתח :SLR actions goto a b c d $ S A B 0 s1 2 1 r4 r4 r4 3 2 acc 3 s5 s6 4 4 r2 5 r3 r3 r3 6 r4 r4 r4 r5 7 7 s5 s8 8 r6 נשים לב שבעמודה המתאימה לטרמינל a אף משתנה. אין אף פעולת reduce הטרמינל אינו מופיע ב- follow של -56-

57 Canonical LR אלגוריתם Canonical LR מבוסס על מנתח LR בדומה לאלגוריתמים הקודמים. הרעיון של האלגוריתם הוא "לפרק" את המצבים של LR(0) למצבים עדינים יותר, כאלה המכילים גם מידע.lookahead לשם כך נגדיר מהו פריט,LR(1) ונגדיר את פונקצית הסגור עבור פריטי.LR(1) מעבר לכך, שאר האלגוריתם נותר ללא שינוי. הגדרה: פריט LR(1) מורכב מזוג סדור: פריט LR(0) ואסימון (או סימן סוף הקלט, $). מכלל גזירה עם n רכיבים מצד ימין, בדקדוק בו קיימים t אסימונים, ניתן לקבל (n+1) (t+1) פריטי.LR(1) משמעותו של פריט :LR(1) פריט מסמל את מצבו של ה- parser. משמעותו: זיהינו את מה שנמצא משמאל לנקודה; אנו מצפים כעת למצוא את מה שנמצא מימין לה, ולאחר מכאן את האסימון המצורף לפריט סגור של פריטי LR(1) הגדרה: קבוצת הסגור של קבוצת פריטי :LR(1) קבוצת פריטי LR(1) שבה: עבור כל פריט LR(1) מהצורה עבור כל כלל מהצורה הפריט [ A α Bβ, a] δ, הפריט נמצא בקבוצת הסגור b, גם first( βa) בדקדוק (כולל $), כך ש- b וכל אסימון B [ B δ,b] נמצא בקבוצת הסגור. המצב הראשון מתקבל מסגור של הפריט.[ S S,$ ] -57-

58 בניית הטבלאות בדומה לאלגוריתמים הקודמים, מתחילים מטבלת המעברים של האוטומט. reduce הופכים כל מעבר בעמודה של אסימון לפעולת.shift עמודות המשתנים הן טבלת ה- goto. ה- acc מושם בעמודת $, בשורה של כללים המכילים את הפריט.[ S S,$ ] עבור כל מצב המכיל פריט מהצורה α,a] A], וכלל A α שמספרו,m(m>0) שמים a. בשורה של מצב זה, בעמודה של אסימון m LALR האלגוריתם האחרון שנציג הוא אלגוריתם.LALR זהו אחד האלגוריתמים הפופולריים ביותר הוא נותן איזון טוב בין כמות הדקדוקים שהוא מסוגל לנתח ובין גודל טבלאות הניתוח שהוא דורש. כלים רבים כגון.LALR מנתחי מייצרים ו- BISON YACC בדומה ל- SLR, מנתח LALR זהו שינוי של השיטה ליצירת טבלאות.LR(0) בשונה מ- SLR בעוד ש- SLR משתמש בקבוצת follow כדי ליצר את פעולות ה- reduce, LALR משתמש בקבוצות.lookahead שיטה זו עדיפה מכיוון שהיא לוקחת יותר מההקשר בו נמצא המנתח לצורך החלטה על הפעולה הרצויה. עבור כל פריט,LR(1) נקרא לפריט ללא אסימון ה- lookahead בשם.core דרך הפעולה: בונים אוטומט.LR(1) אם בתוך שני מצבים באוטומט LR(1) הכללים זהים בהיטלם על LR(0) (כלומר אותם פריטים את מתעלמים מה- lookahead שבא אחרי הפסיק = ה- core שלהם זהה), מאחדים את המצבים למצב אחד. אם מקבלים קונפליקט אומרים שהאוטומט לא LALR אלא רק.LR(1) אחרת יש לנו אוטומט LALR המשמש כמנתח

59 6.7. היררכייתהדקדוקים וסיכום להלן היררכיית הדקדוקים השונים אותם הצגנו. בנייתהטבלה - מתישמיםפעולהX במצבכלשהוI וטרמינל t LR(1) t I מכיל פריט: A αi, t SLR מ- I יוצאת קשת המסומנת A αi מכיל פריט I t ) ( וגם follow A LR(0) ב- I יש A αi I מכיל פריט של t= $ וכן S Si I מכיל פריט של t= $ וכן S Si I מכיל פריט של t= $ וכן S Si,$ shift reduce accept השוואהביןפריט LR(0) לפריט LR(1) פריט LR(0) A αiβ ראינו α רוצים לראות β יתכון ואנחנו באמצע גזירה לפי A αβ פריט LR(1) A αiβ, t ראינו α רוצים לראות β יתכון ואנחנו באמצע גזירה לפי, A αβ אבל בסוף הגזירה אנחנו מצפים לראות. t -59-

60 7. שלב 3 - ניתוחסמנטי 7.1. פתיחה תזכורת שלבי הניתוח: ניתוח לקסיקלי רצף אסימונים + תכונות ניתוח תחבירי עץ גזירה ניתוח סמנטי עץ מעוטר שלב הניתוח התחבירי והניתוח הסמנטי לרוב מבוצעים ביחד. המנתח הסמנטי הוא השלב ש-"מבין" את התוכנית. הוא מנצל את הערכים הסמנטיים של הטרמינלים (שחושבו על ידי ה- screener ) ואת המבנה ההיררכי של התוכנית (העץ שחושב על ידי הניתוח התחבירי) לשם הסקת מסקנות לגבי קטעים בתוכנית (תת-עצים) כולל התוכנית כולה. בנוסף משמש המנתח הסמנטי להרחבת יכולת הזיהוי של המנתח התחבירי (המוגבל לדח"ה). קלט: עץ הגזירה של התוכנית (מהמנתח התחבירי), והערכים הסמנטיים של האסימונים (מהמנתח הלקסיקלי). פלט: אם התוכנית חוקית: עץגזירה מעוטר עץ המכיל ערכי סמנטיים גם עבור החלקים התחביריים של התוכנית (כלומר מופעים של משתנים בעץ הגזירה). אם התוכנית אינה חוקית: הודעת שגיאה מתאימה. דוגמאות לפעולות סמנטיות: וידוא שכל משתנה שיש בו שימוש אכן הוגדר. התאמת טיפוסים. אי חלוקה באפס. דוגמאות רבות נוספות. -60-

61 הצורך בבדיקות סמנטיות: חלק מההגבלות בשפות תכנות אינן ניתנות לביטוי בעזרת דקדוקים חסרי הקשר: התאמת טיפוסים, יחידות, התאמת שמות. צריך לטפל גם בתרגום לשפת המטרה, לא רק בזיהוי שפת המקור דקדוקישדותערך / הגדרותמונחותתחביר דקדוקישדותערך grammers) (attribute או הגדרותמונחותתחביר translation) (syntax directed אלה 2 שמות שונים לפורמלים המשלב ניתוח תחבירי וניתוח סמנטי. שילוב זה מאפשר לבצע בדיקת שגיאות סמנטיות, וחישוב ערכים סמנטיים, בזמן הניתוח התחבירי. מבנה הגדרה מונחית תחביר: "מבנה הצהרתי": הצמדת שדות ערך/תכונות לטרמינלים ולמשתני הדקדוק לכל כלל גזירה מצמידים כללים סמנטים, המגדירים ערכי תוכנות של המשתנים על ידי שימוש בערכי תכונות אחרות הגדרותבסיסיות תכונה: טיפוס כלשהו מוגדר מראש, בעל שם מזהה, המוצמד למשתנה או טרמינל בדקדוק מסויים. התכונה מכילה את המידע הסמנטי. התכונה היא טיפוס (ולא ערך). לדוגמא: למשתנה ID נצמיד תכונה מטיפוס string בשם,name ולמשתנה E נצמיד תכונה בשם value מסוג.int מופעשלתכונה: "instance" ערך התכונה במופע מסויים של משתנה או טרמינל בעץ גזירה נתון. לדוגמא נביט בעץ הגזירה הבא: -61-

62 הכלל המתאים לעץ זה הוא: E E+ E כדי להבדיל בין המופעים השונים של העץ נסמפר את המופעים: E E1+ E2 סימון: מופע של תכונה value של המשתנה E יסומן על ידי.E.value מופע התכונה name של המשתנה.ID.name יסומן ID כללסמנטי: פקודה המוצמד למקום כלשהו בכלל גזירה (יכול להיות גם באמצע הכלל), המגדירה ערך מופע תכונה על ידי מופעים אחרים של התכונה או של תכונות אחרות. לדוגמא נסתכל על הכלל: A BC כללים סמנטיים עבור כלל זה יכולים להיות: בכלים שנציג בהמשך מסמך זה הכללים הסמנטיים נכתבים בשפת C. { 2} { 3} A B B.q = A.p + ; C A.p = ; דוגמא להגדרה מונחית תחביר המטרה: חישוב והדפסת ערך ביטוי אריתמטי. תכונות: נצמיד תוכנית מטיפוס int בשם value למשתנה E ולטרמינל.num המנתח הלקסיקלי יספק עבורנו את הערך של התכונה עבור כל מופע של הטרמינל.num הגדרה מונחית תחביר: כלל גזירה כלל סמנטי (1) S E print(e.value); (2) E E1 + E2 E. value= E1. value+ E2. value (3) E num E. value= num. value -62-

תורת הקומפילציה הרצאה 4 ניתוח תחבירי )Parsing( של דקדוקי LR(0) ו-( LR(1 )חזרה + המשך(

תורת הקומפילציה הרצאה 4 ניתוח תחבירי )Parsing( של דקדוקי LR(0) ו-( LR(1 )חזרה + המשך( תורת הקומפילציה 236360 הרצאה 4 ניתוח תחבירי )Parsing( של דקדוקי LR(0) ו-( LR(1 )חזרה + המשך( 1 תזכורת: סוגי הניתוח התחבירי )predictive מהשורש לעלים )נקרא גם s "ניתוח תחזית" top-down x y bottom-up מהעלים

Διαβάστε περισσότερα

חורף תש''ע פתרון בחינה סופית מועד א'

חורף תש''ע פתרון בחינה סופית מועד א' מד''ח 4 - חורף תש''ע פתרון בחינה סופית מועד א' ( u) u u u < < שאלה : נתונה המד''ח הבאה: א) ב) ג) לכל אחד מן התנאים המצורפים בדקו האם קיים פתרון יחיד אינסוף פתרונות או אף פתרון אם קיים פתרון אחד או יותר

Διαβάστε περισσότερα

אוטומט סופי דטרמיניסטי מוגדר ע"י החמישייה:

אוטומט סופי דטרמיניסטי מוגדר עי החמישייה: 2 תרגול אוטומט סופי דטרמיניסטי אוטומטים ושפות פורמליות בר אילן תשעז 2017 עקיבא קליינרמן הגדרה אוטומט סופי דטרמיניסטי מוגדר ע"י החמישייה: (,, 0,, ) כאשר: א= "ב שפת הקלט = קבוצה סופית לא ריקה של מצבים מצב

Διαβάστε περισσότερα

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור הרצאה מס' 1. תורת הקבוצות. מושגי יסוד בתורת הקבוצות.. 1.1 הקבוצה ואיברי הקבוצות. המושג קבוצה הוא מושג בסיסי במתמטיקה. אין מושגים בסיסים יותר, אשר באמצעותם הגדרתו מתאפשרת. הניסיון והאינטואיציה עוזרים להבין

Διαβάστε περισσότερα

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur פתרון תרגיל --- 5 מרחבים וקטורים דוגמאות למרחבים וקטורים שונים מושגים בסיסיים: תת מרחב צירוף לינארי x+ y+ z = : R ) בכל סעיף בדקו האם הוא תת מרחב של א } = z = {( x y z) R x+ y+ הוא אוסף הפתרונות של המערכת

Διαβάστε περισσότερα

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשעד פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד 1. לכל אחת מן הפונקציות הבאות, קבעו אם היא חח"ע ואם היא על (הקבוצה המתאימה) (א) 3} {1, 2, 3} {1, 2, : f כאשר 1 } 1, 3, 3, 3, { 2, = f לא חח"ע: לדוגמה

Διαβάστε περισσότερα

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( ) פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד a d U c M ( יהי b (R) a b e ל (R M ( (אין צורך להוכיח). מצאו קבוצה פורשת ל. U בדקו ש - U מהווה תת מרחב ש a d U M (R) Sp,,, c a e

Διαβάστε περισσότερα

שפות פורמאליות אוטומטים

שפות פורמאליות אוטומטים הנושאים שנעבור שפות פורמאליות אוטומטים שפות פורמאליות מכונות/אוטומטים דקדוקים תורת הקומפילציה אהרון נץ מבוסס על השקפים של עומר ביהם שמבוססים על שקפי הרצאה מהקורס אוטומטים ושפות פורמאליות בטכניון, פרופ'

Διαβάστε περισσότερα

שפות פורמאליות אוטומטים

שפות פורמאליות אוטומטים שפות פורמאליות אוטומטים תורת הקומפילציה אהרון נץ מבוסס על השקפים של עומר ביהם שמבוססים על שקפי הרצאה מהקורס אוטומטים ושפות פורמאליות בטכניון, פרופ' שמואל זקס 1 הנושאים שנעבור שפות פורמאליות מכונות/אוטומטים

Διαβάστε περισσότερα

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם תזכורת: פולינום ממעלה או מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה p f ( m i ) = p m1 m5 תרגיל: נתון עבור x] f ( x) Z[ ראשוני שקיימים 5 מספרים שלמים שונים שעבורם p x f ( x ) f ( ) = נניח בשלילה ש הוא

Διαβάστε περισσότερα

ל הזכויות שמורות לדפנה וסטרייך

ל הזכויות שמורות לדפנה וסטרייך מרובע שכל זוג צלעות נגדיות בו שוות זו לזו נקרא h באיור שלעיל, הצלעות ו- הן צלעות נגדיות ומתקיים, וכן הצלעות ו- הן צלעות נגדיות ומתקיים. תכונות ה כל שתי זוויות נגדיות שוות זו לזו. 1. כל שתי צלעות נגדיות

Διαβάστε περισσότερα

{ : Halts on every input}

{ : Halts on every input} אוטומטים - תרגול 13: רדוקציות, משפט רייס וחזרה למבחן E תכונה תכונה הינה אוסף השפות מעל.(property המקיימות תנאים מסוימים (תכונה במובן של Σ תכונה לא טריביאלית: תכונה היא תכונה לא טריוויאלית אם היא מקיימת:.

Διαβάστε περισσότερα

Logic and Set Theory for Comp. Sci.

Logic and Set Theory for Comp. Sci. 234293 - Logic and Set Theory for Comp. Sci. Spring 2008 Moed A Final [partial] solution Slava Koyfman, 2009. 1 שאלה 1 לא נכון. דוגמא נגדית מפורשת: יהיו } 2,(p 1 p 2 ) (p 2 p 1 ).Σ 2 = {p 2 p 1 },Σ 1 =

Διαβάστε περισσότερα

חלק 1 כלומר, פונקציה. האוטומט. ) אותיות, אלפבית, א"ב (.

חלק 1 כלומר, פונקציה. האוטומט. ) אותיות, אלפבית, אב (. תוכן עניינים תקציר מודלים חישוביים ערך יגאל הינדי 2 2 2 3 4 6 6 6 7 7 8 8 9 11 13 14 14 15 16 17 17 18 19 20 20 20 20 - האוטומט הסופי - אוטומט סופי דטרמניסטי 2 פרק - מושגים ומילות מפתח 2.1 - הגדרת אוטומט

Διαβάστε περισσότερα

תרגיל 13 משפטי רול ולגראנז הערות

תרגיל 13 משפטי רול ולגראנז הערות Mthemtics, Summer 20 / Exercise 3 Notes תרגיל 3 משפטי רול ולגראנז הערות. האם קיים פתרון למשוואה + x e x = בקרן )?(0, (רמז: ביחרו x,f (x) = e x הניחו שיש פתרון בקרן, השתמשו במשפט רול והגיעו לסתירה!) פתרון

Διαβάστε περισσότερα

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012) יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012) דף פתרונות 6 נושא: תחשיב הפסוקים: הפונקציה,val גרירה לוגית, שקילות לוגית 1. כיתבו טבלאות אמת לפסוקים הבאים: (ג) r)).((p q) r) ((p r) (q p q r (p

Διαβάστε περισσότερα

מודלים חישוביים תרגולמס 5

מודלים חישוביים תרגולמס 5 מודלים חישוביים תרגולמס 5 30 במרץ 2016 נושאי התרגול: דקדוקים חסרי הקשר. למת הניפוח לשפות חסרות הקשר. פעולות סגור לשפות חסרות הקשר. 1 דקדוקים חסרי הקשר נזכיר כי דקדוק חסר הקשר הוא רביעיה =(V,Σ,R,S) G, כך

Διαβάστε περισσότερα

Regular Expressions (RE)

Regular Expressions (RE) Regular Expressions (RE) ביטויים רגולריים עד כה דנו במספר מודלים חישוביים להצגת (או ליצור) שפות רגולריות וראינו שכל המודלים האלה הם שקולים מבחינת כוח החישובי שלהם. בסעיף זה נראה עוד דרך להצגת (או ליצור)

Διαβάστε περισσότερα

גבול ורציפות של פונקציה סקלרית שאלות נוספות

גבול ורציפות של פונקציה סקלרית שאלות נוספות 08 005 שאלה גבול ורציפות של פונקציה סקלרית שאלות נוספות f ( ) f ( ) g( ) f ( ) ו- lim f ( ) ו- ( ) (00) lim ( ) (00) f ( בסביבת הנקודה (00) ) נתון: מצאו ) lim g( ( ) (00) ננסה להיעזר בכלל הסנדביץ לשם כך

Διαβάστε περισσότερα

אוטומטים- תרגול 8 שפות חסרות הקשר

אוטומטים- תרגול 8 שפות חסרות הקשר אוטומטים- תרגול 8 שפות חסרות הקשר דקדוק חסר הקשר דקדוק חסר הקשר הנו רביעיה > S

Διαβάστε περισσότερα

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק יום א 14 : 00 15 : 00 בניין 605 חדר 103 http://u.cs.biu.ac.il/ brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק 29/11/2017 1 הגדרת קבוצת הנוסחאות הבנויות היטב באינדוקציה הגדרה : קבוצת הנוסחאות הבנויות

Διαβάστε περισσότερα

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשעב זהויות טריגונומטריות תרגול חזרה זהויות טריגונומטריות si π α) si α π α) α si π π ), Z si α π α) t α cot π α) t α si α cot α α α si α si α + α siα ± β) si α β ± α si β α ± β) α β si α si β si α si α α α α si α si α α α + α si

Διαβάστε περισσότερα

תרגול מס' 6 פתרון מערכת משוואות ליניארית

תרגול מס' 6 פתרון מערכת משוואות ליניארית אנליזה נומרית 0211 סתיו - תרגול מס' 6 פתרון מערכת משוואות ליניארית נרצה לפתור את מערכת המשוואות יהי פתרון מקורב של נגדיר את השארית: ואת השגיאה: שאלה 1: נתונה מערכת המשוואות הבאה: הערך את השגיאה היחסית

Διαβάστε περισσότερα

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m Observabiliy, Conrollabiliy תרגול 6 אובזרווביליות אם בכל רגע ניתן לשחזר את ( (ומכאן גם את המצב לאורך זמן, מתוך ידיעת הכניסה והיציאה עד לרגע, וזה עבור כל צמד כניסה יציאה, אז המערכת אובזרוובילית. קונטרולביליות

Διαβάστε περισσότερα

משוואות רקורסיביות רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים. למשל: יונתן יניב, דוד וייץ

משוואות רקורסיביות רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים. למשל: יונתן יניב, דוד וייץ משוואות רקורסיביות הגדרה: רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים למשל: T = Θ 1 if = 1 T + Θ if > 1 יונתן יניב, דוד וייץ 1 דוגמא נסתכל על האלגוריתם הבא למציאת

Διαβάστε περισσότερα

ביטויים רגולריים הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353) הרצאה 5

ביטויים רגולריים הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353) הרצאה 5 הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353) ביטויים רגולריים הרצאה 5 המצגת מבוססת על ספרם של פרופ' נסים פרנסיז ופרופ' שמואל זקס, "אוטומטים ושפות פורמליות", האוניברסיטה הפתוחה, 1987. גרסה ראשונה

Διαβάστε περισσότερα

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

( )( ) ( ) f : B C היא פונקציה חחע ועל מכיוון שהיא מוגדרת עי. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חחע אז ועל פי הגדרת הרצאה 7 יהיו :, : C פונקציות, אז : C חח"ע ו חח"ע,אז א אם על ו על,אז ב אם ( על פי הגדרת ההרכבה )( x ) = ( )( x x, כךש ) x א יהיו = ( x ) x חח"ע נקבל ש מכיוון ש חח"ע נקבל ש מכיוון ש ( b) = c כך ש b ( ) (

Διαβάστε περισσότερα

תרגול פעולות מומצאות 3

תרגול פעולות מומצאות 3 תרגול פעולות מומצאות. ^ = ^ הפעולה החשבונית סמן את הביטוי הגדול ביותר:. ^ ^ ^ π ^ הפעולה החשבונית c) #(,, מחשבת את ממוצע המספרים בסוגריים.. מהי תוצאת הפעולה (.7,.0,.)#....0 הפעולה החשבונית משמשת חנות גדולה

Διαβάστε περισσότερα

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin( א. s in(0 c os(0 s in(60 c os(0 s in(0 c os(0 s in(0 c os(0 s in(0 0 s in(70 מתאים לזהות של cos(θsin(φ : s in(θ φ s in(θcos(φ sin ( π cot ( π cos ( 4πtan ( 4π sin ( π cos ( π sin ( π cos ( 4π sin ( 4π

Διαβάστε περισσότερα

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים מבוא: קבוצות מיוחדות של מספרים ממשיים קבוצות של מספרים ממשיים צעד ראשון להצטיינות קבוצה היא אוסף של עצמים הנקראים האיברים של הקבוצה אנו נתמקד בקבוצות של מספרים ממשיים בדרך כלל מסמנים את הקבוצה באות גדולה

Διαβάστε περισσότερα

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים:

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשעו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים: לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( 2016 2015 )............................................................................................................. חלק ראשון: שאלות שאינן להגשה.1

Διαβάστε περισσότερα

ניתן לקבל אוטומט עבור השפה המבוקשת ע "י שימוששאלה 6 בטכניקתשפה המכפלה שנייה כדי לבנות אוטומט לשפת החיתוך של שתי השפות:

ניתן לקבל אוטומט עבור השפה המבוקשת ע י שימוששאלה 6 בטכניקתשפה המכפלה שנייה כדי לבנות אוטומט לשפת החיתוך של שתי השפות: שאלה 1 בנה אוטומט המקבל את שפת כל המילים מעל הא"ב {,,} המכילות לפחות פעם אחת את הרצף ומיד אחרי כל אות מופיע הרצף. ניתן לפרק את השפה לשתי שפות בסיס מעל הא"ב :{,,} שפת כל המילים המכילות לפחות פעם אחת את

Διαβάστε περισσότερα

סיכום- בעיות מינימוםמקסימום - שאלון 806

סיכום- בעיות מינימוםמקסימום - שאלון 806 סיכום- בעיות מינימוםמקסימום - שאלון 806 בבעיותמינימום מקסימוםישלחפשאתנקודותהמינימוםהמוחלטוהמקסימוםהמוחלט. בשאלות מינימוםמקסימוםחובהלהראותבעזרתטבלה אובעזרתנגזרתשנייהשאכן מדובר עלמינימוםאומקסימום. לצורךקיצורהתהליך,

Διαβάστε περισσότερα

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשעו (2016) לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)............................................................................................................. חלק ראשון: שאלות שאינן להגשה 1. עבור

Διαβάστε περισσότερα

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012) דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות 1. מצאו צורה דיסיונקטיבית נורמלית קנונית לפסוקים הבאים: (ג)

Διαβάστε περισσότερα

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות 25 בדצמבר 2016 תזכורת: תהי ) n f ( 1, 2,..., פונקציה המוגדרת בסביבה של f. 0 גזירה חלקית לפי משתנה ) ( = 0, אם קיים הגבול : 1 0, 2 0,..., בנקודה n 0 i f(,..,n,).lim

Διαβάστε περισσότερα

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד.

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד. חידה לחימום ( M ש- N > (כך מספרים טבעיים Mו- N שappleי appleתוappleים בעלי אותה הזוגיות (שappleיהם זוגיים או שappleיהם אי - זוגיים). המספרים הטבעיים מ- Mעד Nמסודרים בשורה, ושappleי שחקappleים משחקים במשחק.

Διαβάστε περισσότερα

ניהול תמיכה מערכות שלבים: DFfactor=a-1 DFt=an-1 DFeror=a(n-1) (סכום _ הנתונים ( (מספר _ חזרות ( (מספר _ רמות ( (סכום _ ריבועי _ כל _ הנתונים (

ניהול תמיכה מערכות שלבים: DFfactor=a-1 DFt=an-1 DFeror=a(n-1) (סכום _ הנתונים ( (מספר _ חזרות ( (מספר _ רמות ( (סכום _ ריבועי _ כל _ הנתונים ( תכנון ניסויים כאשר קיימת אישביעות רצון מהמצב הקיים (למשל כשלים חוזרים בבקרת תהליכים סטטיסטית) נחפש דרכים לשיפור/ייעול המערכת. ניתן לבצע ניסויים על גורם בודד, שני גורמים או יותר. ניסויים עם גורם בודד: נבצע

Διαβάστε περισσότερα

gcd 24,15 = 3 3 =

gcd 24,15 = 3 3 = מחלק משותף מקסימאלי משפט אם gcd a, b = g Z אז קיימים x, y שלמים כך ש.g = xa + yb במלים אחרות, אם ה כך ש.gcd a, b = xa + yb gcd,a b של שני משתנים הוא מספר שלם, אז קיימים שני מקדמים שלמים כאלה gcd 4,15 =

Διαβάστε περισσότερα

מבני נתונים ואלגוריתמים תרגול #11

מבני נתונים ואלגוריתמים תרגול #11 מבני נתונים ואלגוריתמים תרגול # התאמת מחרוזות סימונים והגדרות: P[,,m] כך Σ * טקסט T )מערך של תווים( באורך T[,,n] n ותבנית P באורך m ש.m n התווים של P ו T נלקחים מאלפבית סופי Σ. לדוגמא: {a,b,,z},{,}=σ.

Διαβάστε περισσότερα

חישוביות הרצאה 4 לא! זיהוי שפות ע''י מכונות טיורינג הוכחה: הגדרת! : f r

חישוביות הרצאה 4 לא! זיהוי שפות ע''י מכונות טיורינג הוכחה: הגדרת! : f r ל' ' פונקציות פרימיטיביות רקורסיביות חישוביות הרצאה 4 האם כל פונקציה מלאה היא פרימיטיבית רקורסיבית? לא נראה שתי הוכחות: פונקציות רקורסיביות (המשך) זיהוי שפות ע''י מכונות טיורינג הוכחה קיומית: קיימות פונקציות

Διαβάστε περισσότερα

אוטומטים ושפות פורמליות תרגולים

אוטומטים ושפות פורמליות תרגולים אוטומטים ושפות פורמליות תרגולים מבוסס על תרגולים של מר גולדגביכט עומר, אוניברסיטת בר אילן 2012. שיעור 1 הגדרות: א"ב: אוסף סופי ולא ריק של סימנים/אותיות/תווים. נסמן אותו באות. דוגמאות: 9},... 1,,{0, {א,..,.

Διαβάστε περισσότερα

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx דפי נוסחאות I גבולות נאמר כי כך שלכל δ קיים > ε לכל > lim ( ) L המקיים ( ) מתקיים L < ε הגדרת הגבול : < < δ lim ( ) lim ורק ( ) משפט הכריך (סנדוויץ') : תהיינה ( ( ( )g ( )h פונקציות המוגדרות בסביבה נקובה

Διαβάστε περισσότερα

מודלים חישוביים תרגולמס 7

מודלים חישוביים תרגולמס 7 מודלים חישוביים תרגולמס 7 13 באפריל 2016 נושאי התרגול: מכונת טיורינג. 1 מכונת טיורינג נעבור לדבר על מודל חישוב חזק יותר (ובמובן מסוים, הוא מודל החישוב הסטנדרטי) מכונות טיורינג. בניגוד למודלים שראינו עד

Διαβάστε περισσότερα

מודלים חישוביים כריעות R זוהי מחלקת השפות הכריעות. מחלקה זו סגורה תחת פעולת המשלים. רדוקציה בעיית ההכרעה רדוקציית מיפוי.

מודלים חישוביים כריעות R זוהי מחלקת השפות הכריעות. מחלקה זו סגורה תחת פעולת המשלים. רדוקציה בעיית ההכרעה רדוקציית מיפוי. מודלים חישוביים סיכום כריעות טענה: לא כל הפונקציות חשיבות. מספר התוכניות הוא בן מניה. כל תוכנית מגדירה פונקציה מספרית אחת לכל היותר. לכן מספר האלגוריתמים הוא בן מניה בעוד שמספר הפונקציות המספריות אינו

Διαβάστε περισσότερα

x a x n D f (iii) x n a ,Cauchy

x a x n D f (iii) x n a ,Cauchy גבולות ורציפות גבול של פונקציה בנקודה הגדרה: קבוצה אשר מכילה קטע פתוח שמכיל את a תקרא סביבה של a. קבוצה אשר מכילה קטע פתוח שמכיל את a אך לא מכילה את a עצמו תקרא סביבה מנוקבת של a. יהו a R ו f פונקציה מוגדרת

Διαβάστε περισσότερα

שאלה 1 V AB פתרון AB 30 R3 20 R

שאלה 1 V AB פתרון AB 30 R3 20 R תרגילים בתורת החשמל כתה יג שאלה א. חשב את המתח AB לפי משפט מילמן. חשב את הזרם בכל נגד לפי המתח שקיבלת בסעיף א. A 60 0 8 0 0.A B 8 60 0 0. AB 5. v 60 AB 0 0 ( 5.) 0.55A 60 א. פתרון 0 AB 0 ( 5.) 0 0.776A

Διαβάστε περισσότερα

תורת הגרפים - סימונים

תורת הגרפים - סימונים תורת הגרפים - סימונים.n = V,m = E בהינתן גרף,G = V,E נסמן: בתוך סימוני ה O,o,Ω,ω,Θ נרשה לעצמנו אף להיפטר מהערך המוחלט.. E V,O V + E כלומר, O V + E נכתוב במקום אם כי בכל מקרה אחר נכתוב או קשת של גרף לא

Διαβάστε περισσότερα

מינימיזציה של DFA מינימיזציה של הקנוני שאותה ראינו בסעיף הקודם. בנוסף, נוכיח את יחידות האוטומט המינימלי בכך שנראה שכל אוטומט על ידי שינוי שמות

מינימיזציה של DFA מינימיזציה של הקנוני שאותה ראינו בסעיף הקודם. בנוסף, נוכיח את יחידות האוטומט המינימלי בכך שנראה שכל אוטומט על ידי שינוי שמות מינימיזציה של DFA L. הוא אוטמומט מינימלי עבור L של שפה רגולרית A ראינו בסוף הסעיף הקודם שהאוטומט הקנוני קיים A DFA בכך הוכחנו שלכל שפה רגולרית קיים אוטומט מינמלי המזהה אותה. זה אומר שלכל נקרא A A לאוטומט

Διαβάστε περισσότερα

אוטומטים, שפות פורמליות ו ח ישוּב יוּת

אוטומטים, שפות פורמליות ו ח ישוּב יוּת אוטומטים, שפות פורמליות וחישוביות (202-1-2011) סיכום מאת תומר גודינגר אוטומטים, שפות פורמליות ו ח ישוּב יוּת פרטים אדמיניסטרטיביים המרצים בקורס: ברנד, ברפמן, קנטורוביץ' ואבו-עפאש אתר הקורס: http://csbguacil/~auto141/ain

Διαβάστε περισσότερα

מתמטיקה בדידה תרגול מס' 5

מתמטיקה בדידה תרגול מס' 5 מתמטיקה בדידה תרגול מס' 5 נושאי התרגול: פונקציות 1 פונקציות הגדרה 1.1 פונקציה f מ A (התחום) ל B (הטווח) היא קבוצה חלקית של A B המקיימת שלכל a A קיים b B יחיד כך ש. a, b f a A.f (a) = ιb B. a, b f או, בסימון

Διαβάστε περισσότερα

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשעד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, 635865 מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן שאלה מספר 1 נתון: 1. סדרה חשבונית שיש בה n איברים...2 3. האיבר

Διαβάστε περισσότερα

מכונת טיורינג אוטומט מחסנית לא דטרמיניסטי שפות חופשיות הקשר (שפת ראי לא מסומנת)

מכונת טיורינג אוטומט מחסנית לא דטרמיניסטי שפות חופשיות הקשר (שפת ראי לא מסומנת) מכונת טיורינג לא דטרמיניסטי שפות חופשיות הקשר (שפת ראי לא מסומנת) דטרמיניסטי שפות חופשיות הקשר (שפת ראי מסומנת) סגירות:איחוד,שרשור,היפוך, חיתוך עם שפה רגולרית אוטומט סופי דטרמיניסטי שפות רגולריות סגירות:חיתוך,איחוד,שרשור,משלים,היפוך

Διαβάστε περισσότερα

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים.

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים. א{ www.sikumuna.co.il מהי קבוצה? קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים. קבוצה היא מושג יסודי במתמטיקה.התיאור האינטואיטיבי של קבוצה הוא אוסף של עצמים כלשהם. העצמים הנמצאים בקבוצה הם איברי הקבוצה.

Διαβάστε περισσότερα

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות אלגוריתמים חמדניים אלגוריתם חמדן, הוא כזה שבכל צעד עושה את הבחירה הטובה ביותר האפשרית, ולא מתחרט בהמשך גישה זו נראית פשטנית מדי, וכמובן שלא תמיד היא נכונה, אך במקרים רבים היא מוצאת פתרון אופטימאלי בתרגול

Διαβάστε περισσότερα

1 תוחלת מותנה. c ארזים 3 במאי G מדיד לפי Y.1 E (X1 A ) = E (Y 1 A )

1 תוחלת מותנה. c ארזים 3 במאי G מדיד לפי Y.1 E (X1 A ) = E (Y 1 A ) הסתברות למתמטיקאים c ארזים 3 במאי 2017 1 תוחלת מותנה הגדרה 1.1 לכל משתנה מקרי X אינטגרבילית ותת סיגמא אלגברה G F קיים משתנה מקרי G) Y := E (X המקיים: E (X1 A ) = E (Y 1 A ).G מדיד לפי Y.1.E Y

Διαβάστε περισσότερα

הגדרה: מצבים k -בני-הפרדה

הגדרה: מצבים k -בני-הפרדה פרק 12: שקילות מצבים וצמצום מכונות לעי תים קרובות, תכנון המכונה מתוך סיפור המעשה מביא להגדרת מצבים יתי רים states) :(redundant הפונקציה שהם ממלאים ניתנת להשגה באמצעו ת מצבים א חרים. כיוון שמספר רכיבי הזיכרון

Διαβάστε περισσότερα

מודלים חישוביים פתרון תרגיל 5

מודלים חישוביים פתרון תרגיל 5 מודלים חישוביים פתרון תרגיל 5 כתוב אוטומט דטרמיניסטי לשפות הבאות מעל הא"ב.Σ={,} א. *Σ. q, ב. q, ג. {ε}, q, q ד. } = 3 {w w mod, q, q,, ה. ''} {w w does not contin the sustring q 4 q 3 q q כתוב אוטומט דטרמיניסטי

Διαβάστε περισσότερα

סיכום חקירת משוואות מהמעלה הראשונה ומהמעלה השנייה פרק זה הינו חלק מסיכום כולל לשאלון 005 שנכתב על-ידי מאיר בכור

סיכום חקירת משוואות מהמעלה הראשונה ומהמעלה השנייה פרק זה הינו חלק מסיכום כולל לשאלון 005 שנכתב על-ידי מאיר בכור סיכום חקירת משוואות מהמעלה הראשונה ומהמעלה השנייה פרק זה הינו חלק מסיכום כולל לשאלון 5 שנכתב על-ידי מאיר בכור. חקירת משוואה מהמעלה הראשונה עם נעלם אחד = הצורה הנורמלית של המשוואה, אליה יש להגיע, היא: b

Διαβάστε περισσότερα

קובץ שאלות ופתרונות של שאלות ממבחנים מנושאים שונים

קובץ שאלות ופתרונות של שאלות ממבחנים מנושאים שונים אוטומטים ושפות פורמליות 236353 סמסטר אביב 2016 קובץ שאלות ופתרונות של שאלות ממבחנים מנושאים שונים קובץ ונערך ע"י אורן אשכנזי ומיכל הורוביץ תכונות סגור ודקדוקים רגולריים. עבור שפות L 1, L 2 מעל א"ב Σ נגדיר

Διαβάστε περισσότερα

אלגברה ליניארית (1) - תרגיל 6

אלגברה ליניארית (1) - תרגיל 6 אלגברה ליניארית (1) - תרגיל 6 התרגיל להגשה עד יום חמישי (12.12.14) בשעה 16:00 בתא המתאים בבניין מתמטיקה. נא לא לשכוח פתקית סימון. 1. עבור כל אחד מתת המרחבים הבאים, מצאו בסיס ואת המימד: (א) 3)} (0, 6, 3,,

Διαβάστε περισσότερα

מתמטיקה בדידה תרגול מס' 12

מתמטיקה בדידה תרגול מס' 12 מתמטיקה בדידה תרגול מס' 2 נושאי התרגול: נוסחאות נסיגה נוסחאות נסיגה באמצעות פונקציות יוצרות נוסחאות נסיגה באמצעות פולינום אופייני נוסחאות נסיגה לעתים מפורש לבעיה קומבינטורית אינו ידוע, אך יחסית קל להגיע

Διαβάστε περισσότερα

אלגברה ליניארית 1 א' פתרון 2

אלגברה ליניארית 1 א' פתרון 2 אלגברה ליניארית א' פתרון 3 4 3 3 7 9 3. נשתמש בכתיבה בעזרת מטריצה בכל הסעיפים. א. פתרון: 3 3 3 3 3 3 9 אז ישנו פתרון יחיד והוא = 3.x =, x =, x 3 3 הערה: אפשר גם לפתור בדרך קצת יותר ארוכה, אבל מבלי להתעסק

Διαβάστε περισσότερα

3-9 - a < x < a, a < x < a

3-9 - a < x < a, a < x < a 1 עמוד 59, שאלהמס', 4 סעיףג' תיקוני הקלדה שאלון 806 צריך להיות : ג. מצאאתמקומושלאיברבסדרהזו, שקטןב- 5 מסכוםכלהאיבריםשלפניו. עמוד 147, שאלהמס' 45 ישלמחוקאתהשאלה (מופיעהפעמיים) עמוד 184, שאלהמס', 9 סעיףב',תשובה.

Διαβάστε περισσότερα

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ב (2012) דפי עזר

לוגיקה ותורת הקבוצות מבחן סופי אביב תשעב (2012) דפי עזר לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ב (2012) דפי עזר תורת הקבוצות: סימונים.N + = N \ {0} קבוצת המספרים הטבעיים; N Z קבוצת המספרים השלמים. Q קבוצת המספרים הרציונליים. R קבוצת המספרים הממשיים. הרכבת

Διαβάστε περισσότερα

אינפי - 1 תרגול בינואר 2012

אינפי - 1 תרגול בינואר 2012 אינפי - תרגול 4 3 בינואר 0 רציפות במידה שווה הגדרה. נאמר שפונקציה f : D R היא רציפה במידה שווה אם לכל > 0 ε קיים. f(x) f(y) < ε אז x y < δ אם,x, y D כך שלכל δ > 0 נביט במקרה בו D הוא קטע (חסום או לא חסום,

Διαβάστε περισσότερα

השאלות..h(k) = k mod m

השאלות..h(k) = k mod m מבני נתונים פתרונות לסט שאלות דומה לשאלות מתרגיל 5 השאלות 2. נתונה טבלת ערבול שבה התנגשויות נפתרות בשיטת.Open Addressing הכניסו לטבלה את המפתחות הבאים: 59 88, 17, 28, 15, 4, 31, 22, 10, (מימין לשמאל),

Διαβάστε περισσότερα

"קשר-חם" : לקידום שיפור וריענון החינוך המתמטי

קשר-חם : לקידום שיפור וריענון החינוך המתמטי הטכניון - מכון טכנולוגי לישראל המחלקה להוראת הטכנולוגיה והמדעים "קשר-חם" : לקידום שיפור וריענון החינוך המתמטי נושא: חקירת משוואות פרמטריות בעזרת גרפים הוכן ע"י: אביבה ברש. תקציר: בחומר מוצגת דרך לחקירת

Διαβάστε περισσότερα

רשימת משפטים והגדרות

רשימת משפטים והגדרות רשימת משפטים והגדרות חשבון אינפיניטיסימאלי ב' מרצה : למברג דן 1 פונקציה קדומה ואינטגרל לא מסויים הגדרה 1.1. (פונקציה קדומה) יהי f :,] [b R פונקציה. פונקציה F נקראת פונקציה קדומה של f אם.[, b] גזירה ב F

Διαβάστε περισσότερα

אלגברה מודרנית פתרון שיעורי בית 6

אלגברה מודרנית פתרון שיעורי בית 6 אלגברה מודרנית פתרון שיעורי בית 6 15 בינואר 016 1. יהי F שדה ויהיו q(x) p(x), שני פולינומים מעל F. מצאו פולינומים R(x) S(x), כך שמתקיים R(x),p(x) = S(x)q(x) + כאשר deg(q),deg(r) < עבור המקרים הבאים: (תזכורת:

Διαβάστε περισσότερα

Domain Relational Calculus דוגמאות. {<bn> dn(<dn, bn> likes dn = Yossi )}

Domain Relational Calculus דוגמאות. {<bn> dn(<dn, bn> likes dn = Yossi )} כללים ליצירת נוסחאות DRC תחשיב רלציוני על תחומים Domain Relational Calculus DRC הואהצהרתי, כמוSQL : מבטאיםבורקמהרוציםשתהיההתוצאה, ולא איךלחשבאותה. כלשאילתהב- DRC היאמהצורה )} i,{ F(x 1,x

Διαβάστε περισσότερα

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS כלליים שיטות חיפוש בבגרפים שיטה 1: חיפוש לרוחב S (readth irst Search) זמן: ) Θ( V + הרעיון: שימוש בתור.O שיטה 2: חיפוש לעומק S (epth irst Search) Θ( V + ) יהי =(V,) גרף כלשהו, V הוא צומת התחלת החיפוש.

Διαβάστε περισσότερα

קיום ויחידות פתרונות למשוואות דיפרנציאליות

קיום ויחידות פתרונות למשוואות דיפרנציאליות קיום ויחידות פתרונות למשוואות דיפרנציאליות 1 מוטיבציה למשפט הקיום והיחידות אנו יודעים לפתור משוואות דיפרנציאליות ממחלקות מסוימות, כמו משוואות פרידות או משוואות לינאריות. עם זאת, קל לכתוב משוואה דיפרנציאלית

Διαβάστε περισσότερα

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ד (2014) דפי עזר

לוגיקה ותורת הקבוצות מבחן סופי אביב תשעד (2014) דפי עזר לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ד (2014) דפי עזר תורת הקבוצות: סימונים.N + = N \ {0} קבוצת המספרים הטבעיים; N Z קבוצת המספרים השלמים. Q קבוצת המספרים הרציונליים. R קבוצת המספרים הממשיים. הרכבת

Διαβάστε περισσότερα

מודלים חישוביים, חישוביות וסיבוכיות (חישוביות) 67521

מודלים חישוביים, חישוביות וסיבוכיות (חישוביות) 67521 מודלים חישוביים, חישוביות וסיבוכיות (חישוביות) 67521 22 ביוני 2012 מרצה: גיא קינדלר מתרגל: שאול אלמגור "...one TM to rule them all..." באדיבות בן מאירי איני לוקחת אחריות על מה שכתוב כאן, so tread lightly

Διαβάστε περισσότερα

בעיות חשיבות: :(State transition system) STS מושגים: רדוקציה: f אינה חשיבה g אינה חשיבה; בבעיות הכרעה: f לא כריעה g לא כריעה.

בעיות חשיבות: :(State transition system) STS מושגים: רדוקציה: f אינה חשיבה g אינה חשיבה; בבעיות הכרעה: f לא כריעה g לא כריעה. 1 סיכומים למבחן בקורס מודלים חישוביים סמסטר א' 2008-9 (פרופ' נחום דרשוביץ) חלק ראשון: חישוביות בעיות חשיבות: דוגמאות לפוקנציות לא חשיבות: פונקציה תיאור הערות, הבונה החרוץ בהינתן מספר n, מה הוא הפלט הגדול

Διαβάστε περισσότερα

הרצאה נושאי הקורס 0.2 א"ב ומילים 0.3 שפות 1. מהו חישוב? 2. מהו מחשב? 3. מהו אלגוריתם? 4. מה ניתן לחשב? מה לא ניתן?

הרצאה נושאי הקורס 0.2 אב ומילים 0.3 שפות 1. מהו חישוב? 2. מהו מחשב? 3. מהו אלגוריתם? 4. מה ניתן לחשב? מה לא ניתן? הרצאה 1 0.1 נושאי הקורס 1. מהו חישוב? 2. מהו מחשב? 3. מהו אלגוריתם? 4. מה ניתן לחשב? מה לא ניתן? בקורס זה נעסוק בבעיות חישוב הנקראות בעיות הכרעה. בהינתן קלט, אנו נבצע "חישוב" ובסופו נחזיר תשובה האם הקלט

Διαβάστε περισσότερα

תאריך עדכון אחרון: 27 בפברואר ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת

תאריך עדכון אחרון: 27 בפברואר ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת תרגול 3 ניתוח לשיעורין תאריך עדכון אחרון: 27 בפברואר 2011. ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת חסמי זמן ריצה נמוכים יותר מאשר חסמים המתקבלים כאשר

Διαβάστε περισσότερα

2 יח"ל ) השלמה ל - 5 יח"ל) (50 נקודות) מעבר חוקי, ו-'שקר' אחרת.

2 יחל ) השלמה ל - 5 יחל) (50 נקודות) מעבר חוקי, ו-'שקר' אחרת. 1 6 מאי, 2004 מועד הבחינה: 2 יח"ל ) השלמה ל - 5 יח"ל) פרק ראשון (50 נקודות) :1 Ï (מקור: שירלי רוזנברג כהן) נגדיר טיפוס נתונים חדש בשם תלת-מחסנית, כמבנה המכיל 3 מחסניות S3. S2, S1, נגדיר את הפעולות הבאות

Διαβάστε περισσότερα

Charles Augustin COULOMB ( ) קולון חוק = K F E המרחק סטט-קולון.

Charles Augustin COULOMB ( ) קולון חוק = K F E המרחק סטט-קולון. Charles Augustin COULOMB (1736-1806) קולון חוק חוקקולון, אשרנקראעלשםהפיזיקאיהצרפתישארל-אוגוסטיןדהקולוןשהיהאחדהראשוניםשחקרבאופןכמותיאתהכוחותהפועלים ביןשניגופיםטעונים. מדידותיוהתבססועלמיתקןהנקראמאזניפיתול.

Διαβάστε περισσότερα

אלגברה לינארית (1) - פתרון תרגיל 11

אלגברה לינארית (1) - פתרון תרגיל 11 אלגברה לינארית ( - פתרון תרגיל דרגו את המטריצות הבאות לפי אלגוריתם הדירוג של גאוס (א R R4 R R4 R=R+R R 3=R 3+R R=R+R R 3=R 3+R 9 4 3 7 (ב 9 4 3 7 7 4 3 9 4 3 4 R 3 R R3=R3 R R 4=R 4 R 7 4 3 9 7 4 3 8 6

Διαβάστε περισσότερα

אוסף שאלות מס. 3 פתרונות

אוסף שאלות מס. 3 פתרונות אוסף שאלות מס. 3 פתרונות שאלה מצאו את תחום ההגדרה D R של כל אחת מהפונקציות הבאות, ושרטטו אותו במישור. f (x, y) = x + y x y, f 3 (x, y) = f (x, y) = xy x x + y, f 4(x, y) = xy x y f 5 (x, y) = 4x + 9y 36,

Διαβάστε περισσότερα

מבחן סוף סמסטר מועד ב'

מבחן סוף סמסטר מועד ב' 13.03.2012 מבחן סוף סמסטר מועד ב' מרצה אחראי: פרופ"ח ארז פטרנק מתרגלים: עדי סוסנוביץ מיה ארבל הוראות: א. ב. ג. ד. ה. ו. ז. ח. ט. י. המבחן אנונימי! נא לרשום רק מספר זהות ולא את השם. בטופס המבחן 11 עמודים

Διαβάστε περισσότερα

מתמטיקה בדידה תרגול מס' 13

מתמטיקה בדידה תרגול מס' 13 מתמטיקה בדידה תרגול מס' 13 נושאי התרגול: תורת הגרפים. 1 מושגים בסיסיים נדון בגרפים מכוונים. הגדרה 1.1 גרף מכוון הוא זוג סדור E G =,V כך ש V ו E. V הגרף נקרא פשוט אם E יחס אי רפלקסיבי. כלומר, גם ללא לולאות.

Διαβάστε περισσότερα

' 2 סמ ליגרת ןורתפ םיפרגה תרותב םימתירוגלא דדצ 1 : הלאש ןורתפ רבסה תורעה

' 2 סמ ליגרת ןורתפ םיפרגה תרותב םימתירוגלא דדצ 1 : הלאש ןורתפ רבסה תורעה אלגוריתמים בתורת הגרפים פתרון תרגיל מס' 2 לשאלות והערות נא לפנות לאילן גרונאו (shrilan@cs.technion.ac.il) א) ב) ג) גרף דו-צדדי (bipartite) הינו גרף (E )G V, אשר קיימת חלוקה של צמתיו לשתי קבוצות U,W e =

Διαβάστε περισσότερα

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט.

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט. פרק סיבוכיות פרק סיבוכיות המושג יעילות מהו? במדעי המחשב היעילות נמדדת בעזרת מדדי סיבוכיות, החשובים שבהם: של אלגוריתמים יעילותם תוכן הפרק: יעילות מהי (זיכרון וזמן, זמן ריצה T( של אלגוריתם מהו, מהם case,

Διαβάστε περισσότερα

אלגוריתמים בתורת הגרפים חלק ראשון

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

Διαβάστε περισσότερα

תרגיל 7 פונקציות טריגונומטריות הערות

תרגיל 7 פונקציות טריגונומטריות הערות תרגיל 7 פונקציות טריגונומטריות הערות. פתרו את המשוואות הבאות. לא מספיק למצוא פתרון אחד יש למצוא את כולם! sin ( π (א) = x sin (ב) = x cos (ג) = x tan (ד) = x) (ה) = tan x (ו) = 0 x sin (x) + sin (ז) 3 =

Διαβάστε περισσότερα

אוטומטים ושפות פורמליות מבוא לתורת החישוביות

אוטומטים ושפות פורמליות מבוא לתורת החישוביות אוטומטים ושפות פורמליות מבוא לתורת החישוביות ד ר סמי זעפרני מוקדש לזכרו של משה בנסל חבר, עמית, ומורה דרך מהדורה June 27,2.3 הקדשה הספר מוקדש לזכרו היקר של משה בנסל (955-2), אשר במהלך שלושים שנות עבודתו

Διαβάστε περισσότερα

מתכנס בהחלט אם n n=1 a. k=m. k=m a k n n שקטן מאפסילון. אם קח, ניקח את ה- N שאנחנו. sin 2n מתכנס משום ש- n=1 n. ( 1) n 1

מתכנס בהחלט אם n n=1 a. k=m. k=m a k n n שקטן מאפסילון. אם קח, ניקח את ה- N שאנחנו. sin 2n מתכנס משום ש- n=1 n. ( 1) n 1 1 טורים כלליים 1. 1 התכנסות בהחלט מתכנס. מתכנס בהחלט אם n a הגדרה.1 אומרים שהטור a n משפט 1. טור מתכנס בהחלט הוא מתכנס. הוכחה. נוכיח עם קריטריון קושי. יהי אפסילון גדול מ- 0, אז אנחנו יודעים ש- n N n>m>n

Διαβάστε περισσότερα

c ארזים 26 בינואר משפט ברנסייד פתירה. Cl (z) = G / Cent (z) = q b r 2 הצגות ממשיות V = V 0 R C אזי מקבלים הצגה מרוכבת G GL R (V 0 ) GL C (V )

c ארזים 26 בינואר משפט ברנסייד פתירה. Cl (z) = G / Cent (z) = q b r 2 הצגות ממשיות V = V 0 R C אזי מקבלים הצגה מרוכבת G GL R (V 0 ) GL C (V ) הצגות של חבורות סופיות c ארזים 6 בינואר 017 1 משפט ברנסייד משפט 1.1 ברנסייד) יהיו p, q ראשוניים. תהי G חבורה מסדר.a, b 0,p a q b אזי G פתירה. הוכחה: באינדוקציה על G. אפשר להניח כי > 1 G. נבחר תת חבורה

Διαβάστε περισσότερα

2 שאלות )בחירה מ - 4( סה"כ 25 נקודות לכל שאלה 22 נקודות

2 שאלות )בחירה מ - 4( סהכ 25 נקודות לכל שאלה 22 נקודות מבחן 0225 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדיקות אחרונות לפני מסירה )עמודים 7-9( מבנה השאלון פרק

Διαβάστε περισσότερα

מודלים חישוביים, חישוביות וסיבוכיות

מודלים חישוביים, חישוביות וסיבוכיות מודלים חישוביים, חישוביות וסיבוכיות סשה גולדשטיין, sashag@cs 20 ביוני 2011 תקציר הסיכום להלן מהווה תקציר של חומר הקורס ואיני נוטל עליו כל אחריות. אתם יכולים להיעזר גם בהקלטות השיעורים וכמובן בספר הלימוד.

Διαβάστε περισσότερα

אוטומטים- תרגול 10: מכונות טיורינג.

אוטומטים- תרגול 10: מכונות טיורינג. אוטומטים- תרגול 10: מכונות טיורינג. מודל מכונת טיורינג מכונת טיורינג מורכבת מהרכיבים הבאים: 1. מספר סופי של מצבים.. סרט עבודה אינסופי בעל קצה שמאלי. הסרט המחולק לתאים ובכל תא כתוב תו מ- Γ. 3. ראש קורא/כותב

Διαβάστε περισσότερα

סדרות - תרגילים הכנה לבגרות 5 יח"ל

סדרות - תרגילים הכנה לבגרות 5 יחל סדרות - הכנה לבגרות 5 יח"ל 5 יח"ל סדרות - הכנה לבגרות איברים ראשונים בסדרה) ) S מסמן סכום תרגיל S0 S 5, S6 בסדרה הנדסית נתון: 89 מצא את האיבר הראשון של הסדרה תרגיל גוף ראשון, בשנייה הראשונה לתנועתו עבר

Διαβάστε περισσότερα

logn) = nlog. log(2n

logn) = nlog. log(2n תכנוןוניתוחאלגוריתמים סיכוםהתרגולים n log O( g( n)) = Ω( g( n)) = θ ( g( n)) = תרגול.3.04 סיבוכיות { f ( n) c> 0, n0 > 0 n> n0 0 f ( n) c g( n) } { f ( n) c> 0, n0 > 0 n> n0 0 c g( n) f ( n) } { f ( n)

Διαβάστε περισσότερα

תרגול משפט הדיברגנץ. D תחום חסום וסגור בעל שפה חלקה למדי D, ותהי F פו' וקטורית :F, R n R n אזי: נוסחת גרין I: הוכחה: F = u v כאשר u פו' סקלרית:

תרגול משפט הדיברגנץ. D תחום חסום וסגור בעל שפה חלקה למדי D, ותהי F פו' וקטורית :F, R n R n אזי: נוסחת גרין I: הוכחה: F = u v כאשר u פו' סקלרית: משפט הדיברגנץ תחום חסום וסגור בעל שפה חלקה למדי, ותהי F פו' וקטורית :F, R n R n אזי: div(f ) dxdy = F, n dr נוסחת גרין I: uδv dxdy = u v n dr u, v dxdy הוכחה: F = (u v v, u x y ) F = u v כאשר u פו' סקלרית:

Διαβάστε περισσότερα

r. כלומר התחיל במצב ההתחלתי, סיים במצב מקבל, ובדרך עבר בצורה חוקית. ניתן להגדיר

r. כלומר התחיל במצב ההתחלתי, סיים במצב מקבל, ובדרך עבר בצורה חוקית. ניתן להגדיר מודלים חישוביים סיכום למבחן אוטומטים: שפות / מחרוזות / הגדרות בסיסיות: א"ב: Σ הוא אוסף סופי של תווים, סימנים. מחרוזת / מילה: רצף סופי של אותיות מא"ב מסוים, כאשר מספר האותיות הוא אורכה המחרוזת הריקה: ε

Διαβάστε περισσότερα

תכנות בשפת C פרק שלישי: בקרת זרימה שייקה בילו יועץ ומרצה בכיר למדעי המחשב וטכנולוגית מידע מומחה למערכות מידע חינוכיות, אקדמיות ומנהליות

תכנות בשפת C פרק שלישי: בקרת זרימה שייקה בילו יועץ ומרצה בכיר למדעי המחשב וטכנולוגית מידע מומחה למערכות מידע חינוכיות, אקדמיות ומנהליות תכנות בשפת C פרק שלישי: בקרת זרימה שייקה בילו יועץ ומרצה בכיר למדעי המחשב וטכנולוגית מידע מומחה למערכות מידע חינוכיות, אקדמיות ומנהליות תזכורת: שימוש במשתנים מהו משתנה הגדרת משתנים ;int i ; char c= a קלט/פלט

Διαβάστε περισσότερα

משפטי בקרה ולולאות שעור מס. 3 כל הזכויות שמורות דר' דרור טובי המרכז האוניברסיטאי אריאל

משפטי בקרה ולולאות שעור מס. 3 כל הזכויות שמורות דר' דרור טובי המרכז האוניברסיטאי אריאל משפטי בקרה ולולאות שעור מס. 3 דרור טובי דר' 1 כל הזכויות שמורות דר' דרור טובי המרכז האוניברסיטאי אריאל - הקדמה משפט התנאי if המשימה: ברצוננו לכתוב תוכנית המקבלת שני מספרים בסדר כל שהוא ולהדפיס אותם בסדר

Διαβάστε περισσότερα