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

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