משתמש:משה הדב/טיוטה/ניתוח סמנטי (מהדר)

מתוך ויקיפדיה, האנציקלופדיה החופשית

במדעי המחשב, ניתוח סמנטי או ניתוח רגיש להקשראנגלית: Semantic Analyzer) הוא תהליך בפעולת המהדר, בדרך כלל הוא השלב השלישי והאחרון, שלב זה בא אחר שלב הניתוח התחבירי. ניתוח זה נועד על מנת להבטיח שההצהרות בתוכנית הן נכונות סמנטית, כלומר משעמותן ברורה והן תואמות את האופן בו מבני בקרה וטיפוסי נתונים אמורים לשמש. בניתוח נאסף מידע סמנטי נחוץ מקוד המקור. הניתוח הסמנטי כולל בדרך כלל בדיקת טיפוסים של משתנים (בדיקה שהערך והמשתנה מאותו טיפוס), בדיקה שאין שימוש במשתנים לא מוכרזים ושלא משתמשים בתוכנית במילים שמורות.

סוגי השגיאות הסמנטיות[עריכת קוד מקור | עריכה]

השגיאות הסמנטיות הן:

  1. טיפוסים לא תואמים
  2. משתנים לא מוכרזים
  3. שימוש במילים שמורות

פונקציות של ניתוח סמנטי[עריכת קוד מקור | עריכה]

  1. בדיקת טיפוסים - מוודא שמשתמשים בטיפוסי נתונים באופן התואם את שימושם.
  2. בדיקת תוויות - תוכניות מחשב צריכות לכלול הפניות לתוויות.
  3. בדיקת בקרת זרימה - בודק שמשתמשים במבני בקרה באופן נכון, לדוגמה - בודק שלא משתמשים בפקודה continue (פקודה שמורה לעבור לאיטרציה הבאה) מחוץ ללולאה.

דוגמה:

float x = 1.1;
float y = x * 10;

בדוגמה למעלה המספר שלם 10 יומר לטיפוס float ויהפוך ל-10.0 לפני ההכפלה במשתנה x, בזמן הניתוח הסמנטי.

סמנטיקה סטטית ודינמית[עריכת קוד מקור | עריכה]

סמנטיקה סטטית[עריכת קוד מקור | עריכה]

סמנטיקה סטטית נקראת כך מכיוון שהניתוח שלה נבדק בזמן ההידור. הסמנטיקה הסטטית קשורה בעקיפין לביצוע של התוכנית.

ניתוח סמנטי דינמי[עריכת קוד מקור | עריכה]

ניתוח סמנטי דינמי קובע את המשמעות של חלקים שונים בתוכנית כמו ביטויים (באנגלית: expressions) והצהרות. משמעותם של החלקית השונים בתוכנית נקבעים בזמן הריצה ולא בזמן ההידור כמו בסמנטיקה הסטטית.

דוגמאות לשגיאות סמנטיות[עריכת קוד מקור | עריכה]

דוגמאות לשגיאות סמנטיות בשפת התכנות Java:

int x = "Hello, world!";

השגיאה הסמנטית נוצרה כאן מכיוון שבקוד מאתחלים משתנה מטיפוס int (מספר שלם) למחרוזת טקסט.

int y = z + 1;

השגיאה הסמנטית נוצרה כאן מכיוון שבקוד משתמשים במשתנה z עוד לפני שהוכרז.