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

תוכן שנמחק תוכן שנוסף
Gidi H (שיחה | תרומות)
מ הרחבה קלה
Gidi H (שיחה | תרומות)
תרגמתי טבלה שמסבירה על TOKENS
שורה 3:
[[תוכנית מחשב|תוכנית]] או [[פונקציה (תכנות)|פונקציה]] אשר מבצעת את הניתוח המילולי נקראת מנתח מילולי (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> אסימונים נפוצים הם:
 
* מזהה (identifier): שמות שהמתכנת בוחר;
* [[מילה שמורה|מילת מפתח]] (keyword): שמות שכבר נמצאים בשפת התכנות;
* מפריד (seperator): סימני פיסוק ומפרידים זוגיים;
* [[אופרטור (תכנות)|אופרטור]]: סמלים המבצעים פעולות על ארגומנטים ומולידים תוצאות;
* ליטרל (literal): ערך מספרי, לוגי, או טקסטואלי;
* הערה (comment): שורה, בלוק של שורות.
 
{| class="wikitable"
!שם אסימון
!ערכי אסימון לדוגמה
|-
|מזהה (identifier)
|{{קוד|x}}, {{קוד|color}}, {{קוד|UP}}
|-
|מילת מפתח (keyword)
|{{קוד|if|c}}, {{קוד|while|c}}, {{קוד|return|c}}
|-
|מפריד (seperator)
|<code>}</code>, <code>(</code>, <code>;</code>
|-
|אופרטור
|{{קוד|+|c}}, {{קוד|<|c}}, {{קוד|1==|2=c}}
|-
|ליטרל
|{{קוד|true|c}}, {{קוד|6.02e23|c}}, {{קוד|"music"|c}}
|-
|הערה (comment)
|{{קוד|/* Retrieves user data */|c}}, {{קוד|// must be negative|c}}
|}
בדרך כלל, המנתח המילולי לא בודק האם רצף האסימונים הוא אכן חוקי לפי חוקי השפה. לדוגמה, מנתח לקסיקלי טיפוסי ינתח ויאבחן תווים מסוג סוגריים לאסימונים המתאימים, אך לא יבדוק האם לכל "(" קיים ")". בדיקת תקינות של משפטים שלמים, מבחינת המבנה שלהם מתבצעת בשלב הבא, שלה ה[[ניתוח סינטקטי|ניתוח הסינטקטי]] (ניתוח תחבירי).