1 ניתוח לקסיקלי Wilhelm, and Maurer – Chapter 7 Aho, Sethi, and Ullman – Chapter 3 Cooper and Torczon – Chapter 2.

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

מבוא למדעי המחשב לתעשייה וניהול
מבוסס על הרצאות של יורם זינגר, האוניברסיטה העברית י"ם
צורה נורמלית של גרייבך הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 11.
ניתוח לקסיקלי וכלי Lex.
ניתוח תחבירי (Parsing)
מכונת מצבים תרגול מס' 4 Moshe Malka.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
מתמטיקה בדידה תרגול 3.
ניתוח תחבירי Top-Down.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
רקורסיות נושאי השיעור מהן רקורסיות פתרון רקורסיות : שיטת ההצבה שיטת איטרציות שיטת המסטר 14 יוני יוני יוני 1514 יוני יוני יוני 1514.
ניתוח תחבירי (Parsing) Wilhelm, and Maurer – Chapter 8 Aho, Sethi, and Ullman – Chapter 4 Cooper and Torczon – Chapter 3.
אוטומט מחסנית הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 11.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
הכלה ושקילות בין ביטויי XPath. הביטויים מכילים את האופרטורים הבאים [ ] פיצול // צאצא – קו כפול * - ג'וקר תווית דוגמה a[a][*//b] עבור כל ביטוי P ישנו עץ.
בהסתברות לפחות למצא בעיה במודל PAC עבור בהסתברות ε הפונקציה f טועה מודל ONLINE 1. אחרי כל טעות הפונקציה משתפרת 2. מספר הטעיות קטן.
סמינר במדעי המחשב 3 עודד פרץ משפט הנורמליזציה החזקה.
מרצה: פרופסור דורון פלד
עיבוד תמונות ואותות במחשב אלכסנדר ברנגולץ דואר אלקטרוני : שיטות קידוד שיטות קידוד אורך מלת קוד ואנטרופיה אורך מלת קוד ואנטרופיה קידוד.
1 מבוא למדעי המחשב ביטויים. 2 ביטויים expressions ביטויים (expressions) הינם יצורים תחביריים בעלי טיפוס וערך. הגדרה אינדוקטיבית של ביטויים : קבועים הם.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
ניתוח תחבירי (Parsing) - המשך. תזכורת : סוגי הניתוח התחבירי top-down – מהשורש לעלים ( נקרא גם – " ניתוח תחזית " – predictive) bottom-up – מהעלים לשורש.
Lexical Analysis Textbook:Modern Compiler Design Chapter 2.1
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
Lexical Analysis Mooly Sagiv html:// Textbook:Modern Compiler Implementation in C Chapter 2.
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
The Cyclic Multi-peg Tower of Hanoi מעגלי חד-כווני סבוכיות הפתרון בגרסאות עם יותר מ-3 עמודים.
Design and Analysis of Algorithms, Technion EE, Design and Analysis of Algorithms Recitation 10 Turing Machine 2010 Gal Tamir Based on recitations.
Ray 7 דוגמא אלגוריתם 1.קבל דוגמאות 2. פלט f a עבור הדוגמה a המינימלית החיובית ?
תחשיב הפסוקים חלק ד'. תורת ההיסק של תחשיב הפסוקים.
תורת הקומפילציה מרצה –ד"ר שירלי גינסברג שעת קבלה – יום שני 9:30-10:30 טאוב 318 מתרגלים –רותם אושמן, מתרגלת אחראית –סיוון ברקוביץ.
אלכסנדר ברנגולץ דואר אלקטרוני: אלכסנדר ברנגולץ דואר אלקטרוני: פעולות מורפולוגיות.
משטר דינמי – © Dima Elenbogen :14. הגדרת cd ו -pd cd - הזמן שעובר בין הרגע שראשון אותות הכניסה יוצא מתחום לוגי עד אשר אות המוצא יוצא מתחום.
תזכורת : אלגברה ליניארית מסקנה קלט : וקטורים פלט : האם u תלוי ליניארית ב קלט : מערכת של n משואות לינאריות ב -m נעלמים. פלט : פתרון, או שאין כזה. אלגוריתם.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
יחס סדר חלקי.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
תחשיב היחסים (הפרדיקטים)
1 compute תנאים פשוטים בעזרת compute לוגי לדוגמא: compute q1 = w > 80. Freq var = q1.
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
A. Frank File Organization Introduction to Pile File.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א.
ניתוח תחבירי Top-Down נכתב ע"י אלכס קוגן סמסטר חורף, תשס"ח 1.
תורת הקומפילציה הרצאה 2 ניתוח לקסיקלי Wilhelm, and Maurer – Chapter 7 Aho, Sethi, and Ullman – Chapter 3 Cooper and Torczon – Chapter 2.
מתמטיקה בדידה תרגול 2.
בדיקת טיפוסים Aho, Sethi, Ullman – Chapter 6. בדיקת טיפוסים (type checking) המטרות העיקריות של בדיקת הטיפוסים בדיקת תקינות פתרון של בעיות overloadingו-
DTD Inference for Views of XML Data Yannis Papakonstantinou and Victor Vianu U.C. San Diego Given by Irit Gefner
(C) סיון טל גילוי מידע וזיהוי תבניות תרגול מס. 9 גילוי מידע וזיהוי תבניות תרגול מס. 9 דחיסת נתונים מהו קידוד תכונות של קידודים אי - שוויון קרפט.
Lexical Analysis Textbook:Modern Compiler Design Chapter 2.1.
1 Formal Specifications for Complex Systems (236368) Tutorial #3 Z introduction and notation (contd.); Birthday book example (Chapter 1 in the book)
ניתוח לקסיקלי Wilhelm, and Maurer – Chapter 7 Aho, Sethi, and Ullman – Chapter 3 Cooper and Torczon – Chapter 2.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
. Sequence Alignment Tutorial #3 © Ydo Wexler & Dan Geiger.
Compiler Designs and Constructions (Page 83 – 92)
Formal Specifications for Complex Systems (236368) Tutorial #1
מגישה: אפרת אלישע מרקו מרצה: לימור אלהרר
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
בעיות נוספות ב-NPC.
תורת הקומפילציה הרצאה 1 מבוא; ניתוח לקסיקלי.
תזכורת מתרגולים אחרונים
Shell Scripts בסביבת UNIX
תוכנה 1 תרגול 13 – סיכום.
Presentation transcript:

1 ניתוח לקסיקלי Wilhelm, and Maurer – Chapter 7 Aho, Sethi, and Ullman – Chapter 3 Cooper and Torczon – Chapter 2

2 front-end שלב הניתוח – תזכורת בקומפיילרים רבים השלבים במסומנים בקו מרוסק משולבים זה בזה בקומפיילרים רבים ייצוג הביניים הוא decorated syntax tree תוכנית מקור Back end lexical analysis screening syntax analysis semantic analysis symbol string token string syntax tree decorated syntax tree symbol table error messages

3 פישוט הניתוח הלקסיקלי (והגדרת השפה) מודולריות שימוש חוזר יעילות מדוע מנתח לקסיקלי?

4 ניתוח לקסיקלי -- lexical analyzer + screener lexeme = לקסמה = סדרת אותיות (נקרא לעיתים symbol) token = אסימון = עצם לשוני מוגדר; מכיל את סוג הלקסמה ותכונות שלה. Pattern = כלל המגדיר את אוסף הלקסמות עבור token מסוים. דוגמא: id counter name=“counter”

5 תוכנית מקור scanner screener parser symbol token get next symbol get next token מנתח לקסיקלי – מבנה סכמתי (לוגי) error message manager

6 תפקידי ה- scanner קריאת הקלט הפרדת הקלט ליחידות לקסיקליות (= symbols) דוגמאות העברת ה- symbols ל-screener טיפול ב- include files ו- macros ספירת מספר שורות דיווח על symbols לא חוקיים integer, realמשתנים booleanהערות string סימנים מיוחדים (למשל =<)

7 symbol classes symbol classתוכנית המשתמש IDfoo n_14 last NUM REAL e67 5.5e-10 IFif COMMA, NOTEQ!= LPAREN( RPAREN)

8 non-symbols תוכנית המשתמש comment/* ignored */ preprocessor directive#include macro#define NUMS 5, 6 white space\t \n

9 תפקידי ה-scanner – דוגמאות בשפת פסקל const pi = ; ב-Fortran do 5 I = 1.2 ב-Fortran do 5 I = 1, 2 כאן רואים את הצורך ב- lookahead (אבל כיום לא עושים את זה כך...!) ב-Pascal ו- Ada 1. ו- 10. אינם נחשבים שברים, כי אחרת לא ברור מהו (זה מקשה על ה -scanner)

10 scanner generator symbol specification Input program scanner token stream scanning table ה- scanner: מפורמליזם לתוכנה יתרונות –המפרט – קצר יחסית –אפשר לוודא שהמפרט תקין (לא אוטומטית!) –התוכנה קלה לתחזוקה לשיטת ה- generation שימושים נוספים בקומפילציה ובשטחים נוספים scanner scanning table driver

11 ה-scanner : פורמליזם תאור ה- token - ביטויים רגולריים מבנה ה- scanner – אוטומט סופי –ה-driver הוא שלד האוטומט –ה- scanning table היא טבלת המצבים

12 רקע תיאורטי – מושגי יסוד  – אלפבית מילה באורך n מעל  :  X: {1,…,n}  X = X 1 X 2... X n מילה ריקה :     0  – אוסף המילים באורך אפס  n – אוסף המילים באורך n  *– אוסף כל המילים (הסגור של Kleene)  + – אוסף המילים באורך 1 או יותר x.y – מילה המהווה שרשור של x ו- y (בד"כ משמיטים את אופרטור השרשור וכותבים x y) suffix, prefix, subword

13 רקע תיאורטי – שפות מעל  שפה – תת קבוצה של  * יהיו L, L 1, L 2 שפות –L 1  L 2 – איחוד שפות –L 1 L 2 = {x 1 x 2 | x 1  L 1, x 2  L 2 } – שרשור שפות –L – המשלים של L (המילים ב - *  שאינן ב- L) –L n – שרשור של L לעצמו n פעמים –L* – הסגור של L – שרשור L לעצמו מספר כלשהו של פעמים

14 ביטויים רגולריים, שפות רגולריות  הוא ביטוי רגולרי מעל  המתאר את השפה הריקה  הוא ביטוי רגולרי מעל  המתאר את השפה {  } לכל a   הוא ביטוי רגולרי המתאר את השפה { a } אם pו- q הם ביטויים רגולריים המתארים את השפות הרגולריות P ו- Q, אזי: – p | qהוא ביטוי רגולרי המתאר את השפה הרגולרית P U Q –( p q ) הוא ביטוי רגולרי המתאר את השפה P Q –( p )* הוא ביטוי רגולרי המתאר את P* הערה: על מנת לפשט את הסימונים, * הוא בעל הקדימות הגבוהה ביותר, אח"כ שרשור, אח"כ סימן האלטרנטיבה האותיות באדום הן מטה-אותיות

15 תיאור symbols באמצאות ביטויים רגולריים דוגמא: מספר שלם או שבור ( 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ) ( 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 )* (  |. ( 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ) ( 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 )* (  | E ( 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ) ( 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ) ) ) שיטת תיאור זאת – קשה לשימוש

16 תיאור symbols בעזרת מצייני קבוצות ותחומים נעשה שימוש בשמות של קבוצות וסימנים דוגמא: letter = a-z A-Z digit = 0-9 id = letter ( letter | digit ) * number = digit digit * (  |. digit digit * (  | E digit digit ) )

17 תיאור symbols בעזרת מצייני קבוצות – מבנה כללי נניח ש- A 1, A 2,.., A n = שונים זה מזה; R i הוא ביטוי מעל A i-1 }  U {A 1,…, אזי – A 1 = R 1 A 2 = R 2. A n = R n הם מצייני קבוצות דוגמאות integer = digit (digit )* real = integer. integer (E digit digit |  )

18 זיהוי שפות רגולריות – על ידי אוטומט סופי אוטומט – , Q, , q 0, F ) M = (  – א"ב Q– קבוצה סופית של מצבים q 0  Q – מצב התחלתי F  Q – קבוצת המצבים הסופיים   Q  (  \ {  } )  Q יחס העברה state control קלט

19 מתיאור בעזרת מצייני קבוצות לאוטומט לא דטרמיניסטי שלב 1: הצב וקבל סדרת ביטויים רגולריים טהורים שלב 2: בנה אוטומט לא דטרמיניסטי M i לכל A i המזהה את הביטוי הרגולרי R i שלב 3: בנה אוטומט משולב M אוטומט זה מזהה את כל הביטויים הרגולריים

20 אוטומט דטרמיניסטי אוטומט – , Q, , q 0, F ) M = ( הוא אוטומט דטרמיניסטי סופי אם Q   → Q :  היא פונקציה חלקית כלומר –אין מעברי  –לכל מצב q ואות a   יש לכל היותר מעבר למצב יחיד לכל מילה w, האוטומט יגיע למצב מסוים יחיד, אם בכלל אנחנו נתעניין רק באוטומטים סופיים דטרמיניסטיים משפט: לכל אוטומט לא דטרמיניסטי קיים אוטומט דטרמיניסטי שקול משפט: לכל אוטומט סופי דטרמיניסטי קיים אוטומט סופי דטרמיניסטי שקול יחיד בעל מספר מצבים מינימאלי

21

22

23

24

25

26

27

28

29

30

31 Lookahead הבעיה: לעיתים צריך לסרוק מספר אותיות קדימה על מנת להחליט מהו ה-symbol עליו אנחנו מתכוננים הפתרון: אות מיוחדת (למשל - /) המציינת את מקום תחילת ה- lookahead, המוחלפת ב -  בייצוג האוטומט דוגמא: המילה השמורה IF ב- FORTRAN יכולה להיות גם שם של משתנה הערה: בפסקל ו-ADA מספיק lookahead של 2 אותיות IF)(  start letter any

32 ה- screener לעיתים – משולב כתוכנה "פתוחה" בתוך ה- scanner (LEX) תפקידו העיקרי של ה-screener – זיהוי ה- tokens ואיסוף אינפורמציה על ה- lexemes עצמם

33 ה- screener: תפקידים נוספים טיפול ב- keywords -- מילות מפתח שאינן שמורות, יחסית ל- reserved words טיפול במקרים פשוטים של compiler directives הדפסת הפלט –שילוב הודעות שגיאה –מקרו –pretty printing (מעשית יש לעקוב אחרי מספרי השורות והעמודות בהם מופיעים ה- tokens) טיפול בשגיאות –השמטת כל האותיות שהצטברו ב- buffer –השמטת האות הנוכחית הקושי – התפשטות השגיאות. מנגנון אפשרי – error tokens

34 סיכום לרוב שפות התכנות ניתן לבנות מנתח לקסיקלי בקלות יוצאי דופן: –Fortran –PL/1 ישנם כלים שבונים מנתח לקסיקלי מתוך הגדרה בעזרת ביטויים רגולריים. יש להם שימושים גם מחוץ לתחום הקומפיילרים. –בתרגולים ובתרגיל הבית תכירו כלי אחד כזה: Lex