הידור — Front end, IR, back end
איך מהדרים עובדים מקצה-לקצה: ניתוח לקסיקלי, parsing, ניתוח סמנטי, ייצוג ביניים, סביבת ריצה, ייצור קוד, ואופטימיזציה. כל מושג נלמד עם הדמיה ייעודית צעד-אחר-צעד.
מבוא ומבנה המהדר
מהו מהדר, שלבי התרגום, ומקום המהדרים בין interpreters ל-JITs.
ניתוח לקסיקלי
מתווים ל-tokens — שפות רגולריות, NFAs, DFAs, והמכניזם של scanners.
דקדוקים ו-Parsing: תיאוריה
דקדוקים חופשי-הקשר, גזירות, עצי parse, ובעיית הרב-משמעות.
Parsing מלמעלה-למטה (LL)
Parsing חיזוי: קבוצות FIRST/FOLLOW, טבלאות LL(1), recursive descent, ו-parsers מבוססי-טבלה.
Parsing מלמטה-למעלה (LR)
אוטומטי shift-reduce, LR(0), SLR(1), LR(1), ו-LALR(1).
ניתוח סמנטי
מתחביר למשמעות — ASTs, טבלאות סמלים, scope, טיפוסים, ו-syntax-directed translation.
ייצוג ביניים (IR)
קוד שלושת-הכתובות, גרפי בקרת זרימה, ו-Static Single Assignment.
סביבת ריצה
Activation records, calling conventions, ו-garbage collection.
ייצור קוד והקצאת רגיסטרים
מ-IR לקוד מכונה: בחירת פקודות, הקצאת רגיסטרים, ו-spilling.
אופטימיזציה
Peepholes לוקליים, ניתוחי dataflow, וטרנספורמציות לולאה.