Download presentation
Presentation is loading. Please wait.
1
1 ניתוח לקסיקלי Wilhelm, and Maurer – Chapter 7 Aho, Sethi, and Ullman – Chapter 3 Cooper and Torczon – Chapter 2
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
3 פישוט הניתוח הלקסיקלי (והגדרת השפה) מודולריות שימוש חוזר יעילות מדוע מנתח לקסיקלי?
4
4 ניתוח לקסיקלי -- lexical analyzer + screener lexeme = לקסמה = סדרת אותיות (נקרא לעיתים symbol) token = אסימון = עצם לשוני מוגדר; מכיל את סוג הלקסמה ותכונות שלה. Pattern = כלל המגדיר את אוסף הלקסמות עבור token מסוים. דוגמא: id counter name=“counter”
5
5 תוכנית מקור scanner screener parser symbol token get next symbol get next token מנתח לקסיקלי – מבנה סכמתי (לוגי) error message manager
6
6 תפקידי ה- scanner קריאת הקלט הפרדת הקלט ליחידות לקסיקליות (= symbols) דוגמאות העברת ה- symbols ל-screener טיפול ב- include files ו- macros ספירת מספר שורות דיווח על symbols לא חוקיים integer, realמשתנים booleanהערות string סימנים מיוחדים (למשל =<)
7
7 symbol classes symbol classתוכנית המשתמש IDfoo n_14 last NUM73 00 517 082 REAL66.1.5 10. 1e67 5.5e-10 IFif COMMA, NOTEQ!= LPAREN( RPAREN)
8
8 non-symbols תוכנית המשתמש comment/* ignored */ preprocessor directive#include macro#define NUMS 5, 6 white space\t \n
9
9 תפקידי ה-scanner – דוגמאות בשפת פסקל const pi = 3.1416 ; ב-Fortran do 5 I = 1.2 ב-Fortran do 5 I = 1, 2 כאן רואים את הצורך ב- lookahead (אבל כיום לא עושים את זה כך...!) ב-Pascal ו- Ada 1. ו- 10. אינם נחשבים שברים, כי אחרת לא ברור מהו 1..10 (זה מקשה על ה -scanner)
10
10 scanner generator symbol specification Input program scanner token stream scanning table ה- scanner: מפורמליזם לתוכנה יתרונות –המפרט – קצר יחסית –אפשר לוודא שהמפרט תקין (לא אוטומטית!) –התוכנה קלה לתחזוקה לשיטת ה- generation שימושים נוספים בקומפילציה ובשטחים נוספים scanner scanning table driver
11
11 ה-scanner : פורמליזם תאור ה- token - ביטויים רגולריים מבנה ה- scanner – אוטומט סופי –ה-driver הוא שלד האוטומט –ה- scanning table היא טבלת המצבים
12
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
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
14 ביטויים רגולריים, שפות רגולריות הוא ביטוי רגולרי מעל המתאר את השפה הריקה הוא ביטוי רגולרי מעל המתאר את השפה { } לכל a הוא ביטוי רגולרי המתאר את השפה { a } אם pו- q הם ביטויים רגולריים המתארים את השפות הרגולריות P ו- Q, אזי: – p | qהוא ביטוי רגולרי המתאר את השפה הרגולרית P U Q –( p q ) הוא ביטוי רגולרי המתאר את השפה P Q –( p )* הוא ביטוי רגולרי המתאר את P* הערה: על מנת לפשט את הסימונים, * הוא בעל הקדימות הגבוהה ביותר, אח"כ שרשור, אח"כ סימן האלטרנטיבה האותיות באדום הן מטה-אותיות
15
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
16 תיאור symbols בעזרת מצייני קבוצות ותחומים נעשה שימוש בשמות של קבוצות וסימנים דוגמא: letter = a-z A-Z digit = 0-9 id = letter ( letter | digit ) * number = digit digit * ( |. digit digit * ( | E digit digit ) )
17
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
18 זיהוי שפות רגולריות – על ידי אוטומט סופי אוטומט – , Q, , q 0, F ) M = ( – א"ב Q– קבוצה סופית של מצבים q 0 Q – מצב התחלתי F Q – קבוצת המצבים הסופיים Q ( \ { } ) Q יחס העברה state control קלט
19
19 מתיאור בעזרת מצייני קבוצות לאוטומט לא דטרמיניסטי שלב 1: הצב וקבל סדרת ביטויים רגולריים טהורים שלב 2: בנה אוטומט לא דטרמיניסטי M i לכל A i המזהה את הביטוי הרגולרי R i שלב 3: בנה אוטומט משולב M אוטומט זה מזהה את כל הביטויים הרגולריים
20
20 אוטומט דטרמיניסטי אוטומט – , Q, , q 0, F ) M = ( הוא אוטומט דטרמיניסטי סופי אם Q → Q : היא פונקציה חלקית כלומר –אין מעברי –לכל מצב q ואות a יש לכל היותר מעבר למצב יחיד לכל מילה w, האוטומט יגיע למצב מסוים יחיד, אם בכלל אנחנו נתעניין רק באוטומטים סופיים דטרמיניסטיים משפט: לכל אוטומט לא דטרמיניסטי קיים אוטומט דטרמיניסטי שקול משפט: לכל אוטומט סופי דטרמיניסטי קיים אוטומט סופי דטרמיניסטי שקול יחיד בעל מספר מצבים מינימאלי
21
21
22
22
23
23
24
24
25
25
26
26
27
27
28
28
29
29
30
30
31
31 Lookahead הבעיה: לעיתים צריך לסרוק מספר אותיות קדימה על מנת להחליט מהו ה-symbol עליו אנחנו מתכוננים הפתרון: אות מיוחדת (למשל - /) המציינת את מקום תחילת ה- lookahead, המוחלפת ב - בייצוג האוטומט דוגמא: המילה השמורה IF ב- FORTRAN יכולה להיות גם שם של משתנה הערה: בפסקל ו-ADA מספיק lookahead של 2 אותיות 012345 6 IF)( start letter any
32
32 ה- screener לעיתים – משולב כתוכנה "פתוחה" בתוך ה- scanner (LEX) תפקידו העיקרי של ה-screener – זיהוי ה- tokens ואיסוף אינפורמציה על ה- lexemes עצמם
33
33 ה- screener: תפקידים נוספים טיפול ב- keywords -- מילות מפתח שאינן שמורות, יחסית ל- reserved words טיפול במקרים פשוטים של compiler directives הדפסת הפלט –שילוב הודעות שגיאה –מקרו –pretty printing (מעשית יש לעקוב אחרי מספרי השורות והעמודות בהם מופיעים ה- tokens) טיפול בשגיאות –השמטת כל האותיות שהצטברו ב- buffer –השמטת האות הנוכחית הקושי – התפשטות השגיאות. מנגנון אפשרי – error tokens
34
34 סיכום לרוב שפות התכנות ניתן לבנות מנתח לקסיקלי בקלות יוצאי דופן: –Fortran –PL/1 ישנם כלים שבונים מנתח לקסיקלי מתוך הגדרה בעזרת ביטויים רגולריים. יש להם שימושים גם מחוץ לתחום הקומפיילרים. –בתרגולים ובתרגיל הבית תכירו כלי אחד כזה: Lex
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.