קדם-מעבד – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
מ Aviados העביר את הדף קדם מעבד לקדם-מעבד: מיקוף התחילית
מ ז
שורה 1:
ב[[מדעי המחשב]], '''קדם -מעבד''' הוא תוכנית המעבדת קלט ויוצרת ממנו פלט המיועד להיות קלט לתוכנית אחרת, בדרך כלל עבור [[מהדר]]. סוג העיבוד תלוי בטבעו של הקדם -מעבד,: ישנם קדם -מעבדים הבנויים להחלפה טקסטואלית של [[מאקרו (תכנות)|פקודות מאקרו]] גרידא, בעוד אחרים כוללים יכולות מלאות של שפת תכנות.
 
תהליך ה[[מהדר|הידור]] בחלק מהשפות, למשל [[PL/I]] ו-[[‏C (שפת תכנות)|C]], מכיל שלב של קדם-עיבוד.
 
==קדם -מעבדים מילוליים==
קדם -מעבדים מילוליים הם הקדם -מעבדים מהרמה הנמוכה ביותר של קדם -מעבדים, המבצעים [[ניתוח מילולי]] בלבד, על ידי החלפת סדרות תווים בסדרות תווים אחרות על פי הגדרת המשתמש. בייחוד משמשים להחלפה טקסטואלית של [[מאקרו (תכנות)|פקודות מאקרו]], ולהכללה של קובצי כותרת (header files).
===קדם מעבד ב-[[‏C (שפת תכנות)|C]]===
הדוגמה הנפוצה ביותר לקדם מעבד מילולי הוא קדם המעבד של [[‏C (שפת תכנות)|C]], המפרש שורות המתחילות בסימן # כהנחיות (directives) ובפרט ההנחיות: define#,{{כ}} include#. בגלל שהקדם מעבד לא יודע דבר אודות השפה, הוא עלול לבצע פעולות המחבלות בפעילות התוכנית ויש צורך בזהירות רבה מצד המתכנת.
 
===קדם -מעבד ב-[[‏C (שפת תכנות)|C]]===
הנחיות קדם מעבד לשם ביצוע החלפות מאקרו, מבוצעות על ידי ההנחיה define#. הנחייה זו משמשת להגדרת שמות משמעותיים לקבועים על ידי כתיבת השם ולאחריו הקבוע המבוקש. שימוש נוסף נעשה על ידי הצמדת סוגריים לשם, בתוך הסוגריים כותבים את הפרמטרים של פקודת המאקרו, ולאחר מכן כותבים את פקודת המאקרו, תוך שימוש בפרמטרים. קדם המעבד יחליף כל מופע של פרמטר בשמו של הפרמטר שנשלח לפקודה.
הדוגמה הנפוצה ביותר לקדם -מעבד מילולי הוא קדם המעבדהקדם-מעבד של [[‏C (שפת תכנות)|C]], המפרש שורות המתחילות בסימן # כהנחיות (directives) ובפרט ההנחיות: define#,{{כ}} include#. בגלל שהקדם -מעבד לאאינו יודע דבר אודות השפה, הוא עלול לבצע פעולות המחבלות בפעילות התוכנית ויש צורך בזהירות רבה מצד המתכנת.
 
הנחיות קדם -מעבד לשם ביצוע החלפות מאקרו, מבוצעות על ידי ההנחיה define#. הנחייה זו משמשת להגדרת שמות משמעותיים לקבועים על ידי כתיבת השם ולאחריו הקבוע המבוקש. שימוש נוסף נעשה על ידי הצמדת סוגריים לשם, בתוך הסוגריים כותבים את הפרמטרים של פקודת המאקרו, ולאחר מכן כותבים את פקודת המאקרו, תוך שימוש בפרמטרים. קדם המעבדהקדם-מעבד יחליף כל מופע של פרמטר בשמו של הפרמטר שנשלח לפקודה.
 
הנחיית הכללה של קובצי כותרת נעשית על ידי include#. שימוש בפונקציות הנמצאות בקבצים שונים, בין מהספרייה הסטנדרטית ובין מקבצים של המתכנת, מצריכה הכרזה על הפונקציות וכדי לחסוך כתיבה של ההכרזות בכל תוכנית מכלילים קבצים של הכרזות, הנקראים קובצי כותרת על ידי הנחייה זו.
 
==קדם -מעבדים תחביריים==
קדם -מעבד תחבירי הוצג לראשונה במשפחת השפות [[LISP]]. תפקידו להמיר עצים תחביריים בהתאם למספר כללים המוגדרים על ידי המשתמש. בחלק מהשפות הכללים נכתבים בשפת התכנות עצמה, למשל ב[[LISP]] וב-OCaml. שפות אחרות מסתמכות על שפה חיצונית להגדרת ההמרות, למשל קדם -מעבד [[XSL]] עבור [[XML]].
 
קדם -מעבדים תחביריים משמשים בדרך כלל להתאמת תחביר של שפה, הרחבת שפה, הכללה של שפה המיועדת לתחום ספציפי (DSL) בתוך שפה למטרות כלליות.
 
==ראו גם==
* [[מאקרו (תכנות)]]
 
[[קטגוריה:תכנות]]