Предпроцесор
За информацията в тази статия или раздел не са посочени източници. Въпросната информация може да е непълна, неточна или изцяло невярна. Имайте предвид, че това може да стане причина за изтриването на цялата статия или раздел. |
Предпроцесорът или предкомпилатор е програма, която извършва предварителна (подготвителна) обработка на информацията преди нейното подаване към основния компилатор. Според сложността на обработката варира от прости заместителни макрос операции до сложни преработки, присъщи за пълноценните програмни езици.
Почти всяка обработваща програма може да изпълнява функцията на предпроцесор, но като такъв се описват само тези, чиято функция се възприема като подготвителна, а не основна. Това означава, че една и съща програма може да изпълнява ролята на (основен, самостоятелен) процесор или предпроцесор в зависимост от нейното място и роля в конкретната обработка.
Лексикални предпроцесори
[редактиране | редактиране на кода]Лексикалните процесори извършват обработка на най-ниското, лексикално, ниво. Те рядко се използват самостоятелно и често изпълняват функцията на предпроцесори. Извършват прости заместителни операции. Най-често се реализират като макропроцесори.
Примери за лексикални предпроцесори са:
Синтактични предпроцесори
[редактиране | редактиране на кода]При синтактичните предпроцесори правилата за трансформация взимат предвид синтактичната структура на входящите данни. Могат да служат за дефиниране или предефиниране на синтаксис с цел разширяване или специализиране на програмен език. Много от тях могат да се използват и като самостоятелни езикови процесори.
Примери за синтактични (пред)процесори са:
- Lisp и неговите производни имат вградена поддръжка на (синтактични) макроси. Разширяването на макросите се извършва от синтактичния анализатор на компилатора, преди процеса на същинската компилация. Затова в контекста на процеса на компилация това разширяване на макросите може да се разглежда като предпроцесорна обработка.
- OCaml също има възможност за дефиниране на собствен синтаксис.
- XSLT