טבלאות סמלים נכתב ע"י אלכס קוגן סמסטר חורף, תשס"ח.

Slides:



Advertisements
Similar presentations
תרגול 8 Skip Lists Hash Tables. Skip Lists Definition: – A skip list is a probabilistic data structure where elements are kept sorted by key. – It allows.
Advertisements

ממיבחניםC שאלות ++.
מבוא למדעי המחשב לתעשייה וניהול
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
1 Trees CLRS: chapter A hierarchical combinatorial structure הגדרה רקורסיבית: 1. צומת בודד. זהו גם שורש העץ. 2. אם n הוא צומת ו T 1 ….T K הינם עצים,
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
פעולות מילון Insert, Delete, Search Binary Search Tree, AVL, 2-3 Tree, Skip List O(log n) האם יש מבנה עם סבוכיות (1)O? לא למפתח כלשהו.
מנתח LL(1) נכתב ע"י אלכס קוגן סמסטר חורף, תשס"ח.
מסדי נתונים תשס " ג 1 תכנון סכמות (Design Theory) מסדי נתונים.
תרגול 8 עצי B+ אינדקס משני.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
רקורסיות נושאי השיעור מהן רקורסיות פתרון רקורסיות : שיטת ההצבה שיטת איטרציות שיטת המסטר 14 יוני יוני יוני 1514 יוני יוני יוני 1514.
עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס.
אוטומט מחסנית הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 11.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
A. Frank File Organization Indexed-Sequential File Introduction Thanks to Tamar Barnes.
1 Data Structures, CS, TAU, Splay Tree Splay Tree  מימוש של עץ חיפוש בינארי  מטרה לדאוג ל- Amortized Time  פעולה בודדת יכולה לקחת O(N)  אבל כל רצף.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
מבוא למדעי המחשב תרגול 4 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תרגול חזרה. מבנה האובייקט תאר את מבנה האובייקט כולל מבנה טבלאות הפונקציות הוירטואליות עבור התכנית הבאה struct A { int x; virtual void a() {}; }; struct.
מסדי נתונים תשס " ג 1 תכנון סכמות – אלגוריתם פירוק לתבניות בצורת BCNF מסדי נתונים.
Data Structures, CS, TAU, Splay Tree 1 Splay Tree - עץ חיפוש בינארי - מטרה לדאוג ל - Amortized Time - פעולה בודדת יכולה לקחת O(N) - אבל כל רצף M פעולות.
1 סביבת זמן הריצה. 2 כשאת אומרת x, למה את מתכוונת? מה תדפיס התוכנית הבאה? var x: int; function foo(): int isreturn x; function bar(): int isvar x:int;
ניתוח תחבירי (Parsing) - המשך. תזכורת : סוגי הניתוח התחבירי top-down – מהשורש לעלים ( נקרא גם – " ניתוח תחזית " – predictive) bottom-up – מהעלים לשורש.
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
1 מבוא למדעי המחשב מבנה של תכנית. 2 מבנה של תכנית – חלוקה לקבצים  תכנית בשפת C הינה אוסף של הגדרות של:  משתנים (חיצוניים)  פונקציות  ניתן לפרוש תכנית.
צורות נורמליות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 10.
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
ערמות ; מבני נתונים 09 מבוסס על מצגות של ליאור שפירא, חיים קפלן, דני פלדמן וחברים.
1 סביבת זמן הריצה Aho, Sethi, and Ullman – Chapter 7 Cooper and Torczon – Chapter 6.
Backpatching 1. תזכורת מתרגול קודם קוד ביניים - שפת הרביעיות שיטות לייצור קוד ביניים –שימוש בתכונת code –כתיבה ישירה ל-buffer של פקודות שיטות לתרגום מבני.
נוצר ע " י ד " ר ארקדי שטיינבוק Visual Basic for Application VBA כדוגמה VBA ב - WORD.
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
יחס סדר חלקי.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
Data Structures, CS, TAU, RB-Tree 1 עץ אדום-שחור - עץ חיפוש בינארי - בכל צומת ביט אינפורמציה נוסף - צבע « עץ “ כמעט מאוזן ” « (O(log n במקרה גרוע ביותר.
עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים
(C) סיון טל גילוי מידע וזיהוי תבניות תרגול מס. 9 גילוי מידע וזיהוי תבניות תרגול מס. 9 דחיסת נתונים מהו קידוד תכונות של קידודים אי - שוויון קרפט.
1 Formal Specifications for Complex Systems (236368) Tutorial #3 Z introduction and notation (contd.); Birthday book example (Chapter 1 in the book)
מנתח LL(1) נכתב ע"י אלכס קוגן סמסטר חורף, תשס"ח 1.
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
1 Programming for Engineers in Python Autumn Lecture 2: More Basics.
Practice session 3 תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי ) שיטות חישוב : Applicative & Normal Evaluation Partial Evaluation.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
Data Structures Hanoch Levi and Uri Zwick March 2011 Lecture 3 Dynamic Sets / Dictionaries Binary Search Trees.
תכנות מכוון עצמים ושפת ++C וויסאם חלילי. TODAY TOPICS: 1. Function Overloading & Default Parameters 2. Arguments By Reference 3. Multiple #include’s 4.
עקרונות תכנות מונחה עצמים תרגול 11: OOP in C++. Outline  Where do the objects live ?  Inheritance  Slicing  Overriding vs Shadowing.
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
מבני נתונים רשימה מקושרת, מחסנית ותור
Object Oriented Programming
קלט/פלט, משתנים.
SQL בסיסי – הגדרה אינדוקטיבית
תירגול 14: מבני נתונים דינאמיים
Data Structures, CS, TAU, Splay Tree
בניית מחסנית סטטית Static Stack Implementation מורים מובילים תשע"ה
תזכורת מתרגולים אחרונים
סוגי משתנים קרן כליף.
מבוא לתכנות מונחה עצמים Object Oriented Programming
תוכנה 1 תרגול 13 – סיכום.
שיעור עשירי: מיונים, חיפושים, וקצת סיבוכיות חישוב
טבלאות מדומות (Views).
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

טבלאות סמלים נכתב ע"י אלכס קוגן סמסטר חורף, תשס"ח

Static Scoping המופע של המשתנה אליו יש לגשת הוא המופע הקרוב ביותר בשרשרת הקינון הסטטי –ניתן לשייך כל גישה למופע מסוים בזמן קומפילציה דוגמה: { int x,y; { int x; { y = x; } { … } }

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

מימוש טבלאות הסמלים רעיון: לכל scope ניצור טבלה נפרדת –המבנה המתקבל הוא עץ של טבלאות דוגמה: { int x,y; { int x; { y = x; } { … } } x: int y : int x: int

מימוש טבלאות הסמלים - המשך כדי למצוא משתנה x: –חפש בטבלת הסמלים של ה-scope הנוכחי. אם מצאת, עצור. אחרת, –חפש בטבלת הסמלים של האבא של ה-scope הנוכחי. אם מצאת, עצור. אחרת, –המשך את החיפוש עד לשורש מה מכילה טבלת הסמלים בשורש העץ?

בניית עץ טבלאות הסמלים הבנייה מתבצעת בזמן קומפילציה נשתמש במחסנית שמחזיקה את שרשרת הטבלאות מה-scope הנוכחי עד לשורש –על מנת למצוא משתנה, מספיק לבדוק רק טבלאות במחסנית מדוע? –בכניסה ל-scope ניצור טבלה חדשה ונדחוף למחסנית –ביציאה מ-scope נוציא טבלה מראש המחסנית

סכימת תרגום נניח שמבנה הרשומה בטבלת הסמלים הוא name type offset –offset – המיקום היחסי ברשומת ההפעלה נשתמש בשתי מחסניות: –tables: מחסנית טבלאות הסמלים –offsets: מחסנית של ה-offset-ים הנוכחיים בכל scope במסלול לשורש

סכימת תרגום - המשך נניח שקיימות פונקציות הבאות: –maketable(parent): יוצרת טבלה חדשה ריקה שהיא בת של parent בעץ –insert(table, name, type, offset): מכניסה משתנה לטבלת הסמלים –push, pop, top: פעולות סטנדרטיות למחסנית

סכימת תרגום - המשך Prog: גוזר תכנית שלמה St: גוזר פקודה או רצף פקודות –הדקדוק הינו חלקי ביותר Prog  int main ( ) { St } St  vartype id ; St  { St } St  print id ;

סכימת תרגום - המשך Prog  int main ( ) { M St } {pop(tables); pop(offsets);} M  ε {t = maketable(null); push(t, tables); push(0, offsets);} Prog  int main ( ) { St }

סכימת תרגום - המשך St  { N St } {pop(tables); pop(offsets);} N  ε {t = maketable(top(tables)); push(t, tables); push(top(offsets), offsets);} St  vartype id ; { insert(top(tables), id.name, vartype.type, top(offsets)); top(offsets) += vartype.size;} St  { St }

סכימת תרגום - המשך נניח כי היינו רוצים לבדוק האם משתנה הוגדר לפני הדפסה... St  print id ; {found = false; for (int i = 0; i < tables.size(); i++) { t = tables.get(i); // get i’th table from top if (t.contains(id.name)) { found = true;break; } } if (found == false) error(“use of undef variable”, id.name); }