ניתוח מילולי – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
Gidi H (שיחה | תרומות)
תרגמתי טבלה שמסבירה על TOKENS
מ פרק הערות שוליים, תיקון כיווניות להערת שוליים
שורה 1:
ב[[מדעי המחשב]], '''ניתוח מילולי''' (ב[[אנגלית]]: '''Lexical analysis''') הוא השלב הראשון בתהליך ה[[מהדר|הידור]], בו מתורגם הקוד שכתוב ב[[שפה עילית]] ל[[שפת מכונה]]. בשלב זה, מתבצע תרגום של רצף ה[[תו (מחשב)|תווים]] לרצף של '''אסימונים''' קבועים (כגון: מזהה, מספר, פסיק, סוגריים וכו').
[[תוכנית מחשב|תוכנית]] או [[פונקציה (תכנות)|פונקציה]] אשר מבצעת את הניתוח המילולי נקראת מנתח מילולי (lexer) או סורק (scanner).
 
[[תוכנית מחשב|תוכנית]] או [[פונקציה (תכנות)|פונקציה]] אשר מבצעת את הניתוח המילולי נקראת מנתח מילולי (lexer) או סורק (scanner).
תפקידו של המנתח המילולי הוא לבדוק עבור כל משפט האם אבני הבניין שמרכיבות אותו הן חוקיות לפי הגדרות [[שפת תכנות|שפת התכנות]]. לרוב, הגדרת אבני הבניין החוקיות מתבצעת בעזרת [[ביטוי רגולרי|ביטויים רגולריים]], ובהתאמה הסורק מתבסס על [[אוטומט סופי]]. תהליך פירוק המשפט נקרא Tokenize, כלומר, סיווג כל אבני הבניין לקטגוריות שלהם. בתהליך זה כל מילה במשפט (Lexeme) מסווגת ומוחלפת באסימון (Token) אליו היא מתאימה. האסימון הוא למעשה מחרוזת שהוקצתה לה (assigned) משמעות כלשהי, והוא בנוי (structured) כזוג המורכב משם האסימון וערך האסימון (אופציונלי).<ref name="auto">page 111, "Compilers Principles, Techniques, & Tools, 2nd Ed." (WorldCat) by Aho, Lam, Sethi and Ullman, as quoted in https://stackoverflow.com/questions/14954721/what-is-the-difference-between-token-and-lexeme</ref> אסימונים נפוצים הם:
 
תפקידו של המנתח המילולי הוא לבדוק עבור כל משפט האם אבני הבניין שמרכיבות אותו הן חוקיות לפי הגדרות [[שפת תכנות|שפת התכנות]]. לרוב, הגדרת אבני הבניין החוקיות מתבצעת בעזרת [[ביטוי רגולרי|ביטויים רגולריים]], ובהתאמה הסורק מתבסס על [[אוטומט סופי]]. תהליך פירוק המשפט נקרא Tokenize, כלומר, סיווג כל אבני הבניין לקטגוריות שלהם. בתהליך זה כל מילה במשפט (Lexeme) מסווגת ומוחלפת באסימון (Token) אליו היא מתאימה. האסימון הוא למעשה מחרוזת שהוקצתה לה (assigned) משמעות כלשהי, והוא בנוי (structured) כזוג המורכב משם האסימון וערך האסימון (אופציונלי).<ref name="auto">{{הערה|page 111, "Compilers Principles, Techniques, & Tools, 2nd Ed." (WorldCat) by Aho, Lam, Sethi and Ullman, as quoted in https://stackoverflow.com/questions/14954721/what-is-the-difference-between-token-and-lexeme</ref>|כיוון=שמאל}} אסימונים נפוצים הם:
* מזהה (identifier): שמות שהמתכנת בוחר;
* [[מילה שמורה|מילת מפתח]] (keyword): שמות שכבר נמצאים בשפת התכנות;
שורה 37 ⟵ 36:
 
==דוגמה==
הפקודה: <syntaxhighlight lang="text">
sum = a + b;
</syntaxhighlight>
שורה 52 ⟵ 51:
 
==קישורים חיצוניים==
* [http://www.google.co.il/url?sa=t&source=web&cd=2&ved=0CA4QFjAB&url=http%3A%2F%2Fwebcourse.cs.technion.ac.il%2F236360%2FWinter2010-2011%2Fho%2FWCFiles%2FWinter0708_T1.pdf&ei=eyjOTJXMCoqOjAerpfXWBw&usg=AFQjCNGDWj8YvzyicmMDJRLtw8jZUfXW7A&sig2=gPRlZfxAO_EL-dHfqXJsKQ ניתוח לקסיקלי וכלי Lex] {{כ}} {{כ}}
* [http://www.google.co.il/url?sa=t&source=web&cd=3&ved=0CBIQFjAC&url=http%3A%2F%2Fwebcourse.cs.technion.ac.il%2F236360%2FSpring2009%2Fho%2FWCFiles%2FSpring09_L2.ppt&ei=eyjOTJXMCoqOjAerpfXWBw&usg=AFQjCNEUXxsECbo9DU0ZritntfwZEMwliQ&sig2=65Ebf_251Y5oZObLHK9kWQ ניתוח לקסיקלי], אתר הטכניון {{PPT}}
 
== הערות שוליים ==
{{הערות שוליים}}
 
[[קטגוריה:תוכנה]]