ניתוח לקסיקלי 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

מבוא למדעי המחשב לתעשייה וניהול
COMP-421 Compiler Design Presented by Dr Ioanna Dionysiou.
מבוסס על הרצאות של יורם זינגר, האוניברסיטה העברית י"ם
ניתוח תחבירי (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 ישנו עץ.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
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)
Design and Analysis of Algorithms, Technion EE, Design and Analysis of Algorithms Recitation 10 Turing Machine 2010 Gal Tamir Based on recitations.
תחשיב הפסוקים חלק ד'. תורת ההיסק של תחשיב הפסוקים.
COS 320 Compilers David Walker. Outline Last Week –Introduction to ML Today: –Lexical Analysis –Reading: Chapter 2 of Appel.
1 ניתוח לקסיקלי Wilhelm, and Maurer – Chapter 7 Aho, Sethi, and Ullman – Chapter 3 Cooper and Torczon – Chapter 2.
אלכסנדר ברנגולץ דואר אלקטרוני: אלכסנדר ברנגולץ דואר אלקטרוני: פעולות מורפולוגיות.
תזכורת : אלגברה ליניארית מסקנה קלט : וקטורים פלט : האם u תלוי ליניארית ב קלט : מערכת של n משואות לינאריות ב -m נעלמים. פלט : פתרון, או שאין כזה. אלגוריתם.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
יחס סדר חלקי.
Last time on Clang משתנה: "פתק" המשמש את המחשב לשמירת מידע. לכל משתנה יש שם וטיפוס כללים לשמות משתנים –חייבים להכיל רק אותיות, מספרים ו '_' –חייבים להתחיל.
1 compute תנאים פשוטים בעזרת compute לוגי לדוגמא: compute q1 = w > 80. Freq var = q1.
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)
R. Bar-Yehuda © 1 Graph theory – תורת הגרפים 4. ORDERED TREES 4.1 UNIQUELY DECIPHERABLE CODES מבוסס על הספר : S. Even,
CSC 338: Compiler design and implementation
Compiler Phases: Source program Lexical analyzer Syntax analyzer Semantic analyzer Machine-independent code improvement Target code generation Machine-specific.
Lexical Analysis - An Introduction. The Front End The purpose of the front end is to deal with the input language Perform a membership test: code  source.
Lexical Analysis - An Introduction Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at.
Lexical Analysis Mooly Sagiv Schrierber Wed 10:00-12:00 html:// Textbook:Modern.
Scanning & FLEX CPSC 388 Ellen Walker Hiram College.
1.  10% Assignments/ class participation  10% Pop Quizzes  05% Attendance  25% Mid Term  50% Final Term 2.
Review: Compiler Phases: Source program Lexical analyzer Syntax analyzer Semantic analyzer Intermediate code generator Code optimizer Code generator Symbol.
Compiler design Lecture 1: Compiler Overview Sulaimany University 2 Oct
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
IN LINE FUNCTION AND MACRO Macro is processed at precompilation time. An Inline function is processed at compilation time. Example : let us consider this.
Chapter 1: Introduction 1 Compiler Designs and Constructions Chapter 1: Introduction Objectives: Course Objectives Introduction Dr. Mohsen Chitsaz.
Compiler Construction By: Muhammad Nadeem Edited By: M. Bilal Qureshi.
The Role of Lexical Analyzer
What is a compiler? –A program that reads a program written in one language (source language) and translates it into an equivalent program in another language.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
CS 404Ahmed Ezzat 1 CS 404 Introduction to Compiler Design Lecture 1 Ahmed Ezzat.
. 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 מבוא; ניתוח לקסיקלי.
תזכורת מתרגולים אחרונים
Review: Compiler Phases:
Presentation transcript:

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

front end – שלב הניתוח - תזכורת תוכנית מקור Back end lexical analysis syntax analysis semantic analysis token stream syntax tree decorated syntax tree scanner parser

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

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

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

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

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

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

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

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

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

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

רקע תיאורטי – שפות מעל S שפה – תת קבוצה של  * יהיו 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 לעצמו מספר כלשהו של פעמים

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

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

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

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

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

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

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

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

סיכום For most programming languages lexical analyzers can be easily constructed Exceptions –Fortran –PL/1 Lexical analyzer generator tools exist; they are used beyond compilers