כתיבת קוד — שיעור 11
שפה מומצאת — 5 שלבים, Dry Run, Symbol Table
כל 2 משימות הקוד שנשמרו מהשיעור מופיעות כאן, עם דרישות, דוגמאות וקוד פתיחה. אפשר לכתוב פתרון בעורך המקומי וללחוץ על „בדיקת AI” לקבלת ציון, רמזים והערות.
T2 · בסיסי250 נק'~20 דק'algorithmic
Tokenizer לשפה מומצאת (שלב 1/5)
השלב הראשון בהרצת שפה הוא פירוק לאסימונים. ממש tokenize(s) שמפרק ביטוי לרשימת אסימונים (kind, text): NUM (רצף ספרות), ID (אות ואז אותיות/ספרות), OP (אחד מ- + - * / =), LP עבור '(', RP עבור ')'. דלג על רווחים. על תו לא-חוקי — זרוק ValueError.
דוגמאות
tokenize('x = 3 + 4') → [('ID','x'),('OP','='),('NUM','3'),('OP','+'),('NUM','4')]
tokenize('foo1*(2)') → [('ID','foo1'),('OP','*'),('LP','('),('NUM','2'),('RP',')')]
הפתרון נשמר מקומית אוטומטית.
T3 · בינוני350 נק'~20 דק'algorithmic
Symbol Table — בדיקת הצהרות
אחרי הפירוק לאסימונים בונים טבלת סמלים. נתונה רשימת שורות; כל שורה היא "let NAME" (הצהרה) או "set NAME"/"get NAME" (שימוש). עבד לפי הסדר והחזר את השגיאה הראשונה: הצהרה חוזרת של שם קיים → "redeclare:NAME"; שימוש בשם שלא הוצהר → "undeclared:NAME". אם אין שגיאות → "ok".
דוגמאות
check_symbols(['let x','set x']) → 'ok'
check_symbols(['set x']) → 'undeclared:x'
check_symbols(['let x','let x']) → 'redeclare:x'
הפתרון נשמר מקומית אוטומטית.