**Նախապրոցեսոր**ը համակարգչային ծրագիր է, որն իր մուտքին տրված տվյալները մշակում է և տվյալներ է ստեղծում մեկ այլ ծրագրի (օրինակ՝ կոմպիլյատորի) մուտքին տալու համար։ Ծրագրի ելքում ստեղծված տվյալները կախված են պրեպրոցեսորի բնույթից։ Որոշ պրեպրոցեսորներ կարող են կատարել միայն պարզ տեքստային փոխարինումներ, մյուսները կարող են համեմատվել ծրագրավորման լեզուների հետ։ C++/C լեզուները և տեքստերի համակարգչային շարվածքի համար նախատեսված TeX գործիքը օգտագործում են իրենց բազային հնարավորություններն ընդլայնող պրեպրոցեսորներ։

Բառային (լեքսիկական) պրեպրոցեսորներ
-----------------------------------

*Բառային* են անվանվում ցածր մակարդակի պրեպրոցեսորները, որովհետև նրանք պահանջում են միայն բառային վերլուծություն։ Ստացվում է, որ նրանք տեքստը մշակում են շարահյուսական վերլուծությունից (parsing) առաջ՝ փոխարինելով լեքսեմը (կամ այլ հատուկ նշաններ) օգտագործողի կողմից սահմանված սիմվոլներովով՝ օգտագործողի կողմից սահմանված օրենքններով։

### C և C++ լեզուների պրեպրոցեսորը

C ծրագրավորման լեզվում պրեպրոցեսորն ունի լայն կիրառություն։ Այն կոդից հեռացնում է մեկնաբանությունները և կատարում այն հատվածները, որոնք սկսում են «`#`» նշանով (ինչպիսիք են `#include`, `#define` և այլն)։

PHP ծրագրավորման լեզու
----------------------

PHP լեզուն առավել հաճախ օգտագործվում է վեբ-էջեր ստեղծելու համար։ Տեքստը գրեթե չի փոփոխվում։ Միակ բացառությունը `<?php` սկզբում, և `?>` վերջում հրամանների համար է։
Ընթացիկ ժամանակը որոշող կոդի օրինակ.

```
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ընթացիկ ժամանակը</title>
<head>
<body>
<h1>Ընթացիկ ժամանակը/h1>
 <?php
 print strftime('Հիմա %H ժամ, %M րոպե %S վայրկյան');
 ?>
</body>
</html>

```

PHP պրեպրոցեսորը նշված հատվածը կփոխարինի հետևյալով.

```
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ընթացիկ ժամանակը</title>
<head>
<body>
<h1>Ընթացիկ ժամանակը</h1>
 Հիմա 10 Ժամ, 15 րոպե 20 վայրկյան
</body>
</html>

```

Շարահյուսական պրեպրոցեսրներ
---------------------------

Շարահյուսական պրեպրոցեսրները առաջին անգամ ներդրվել են Լիսպ լեզուների ընտանիքում։ Նրանց դերն այն էր, որ օգագործողի պահանջներին համապատասխան կառուցվեր շարահյուսական ծառը։ Շարահյուսական պրեպրոցեսրները հիմնականում օգտագործվում են լեզվի շարահյուսության հստակեցման և պարզ բաղադրիչների ավելացման միջոցով լեզվի ընդլայնման համար։

Օրինակներ
---------

* C-ի պրեպրոցեսորի օգտագործումը JavaScript կոդի նախնական մշակման համար։.
* m4 միկրոպրոցեսորի կամ C-ի պրեպրոցեսորի օգտագործումը HTML շաբլոններ գեներացնելու համար։
* imake (от *interface make*)-ը օգտագործում է C-ի պրեպրոցեսոր. Օգտագործվել է X Window համակարգում մինչ automake-ի անցումը։
* grompp —միկրոպրոցեսոր GROMACS նախագծի ֆայլերի համար (բաց կոդով ծրագիր հաշվողական քիմիայի խնդիրներ լուծելու համար)։ Լռելայնությամբ օգտագործում է C պրեպրոցեսոր, բայց ֆայլի մոդելում կարելի է օգտագործել այլ ցանկացած պրեպրոցեսոր։ Օգտագործում է `#define` и `#include` դիրեկտորիաներ։

Արտաքին հղումներ
----------------

* DSL Design in Lisp
* Программирование снизу вверх
* The PIKT piktc Archived 2020-12-02 at the Wayback Machine. text, script, and configuration file preprocessor Archived 2020-12-02 at the Wayback Machine.

Ծանոթագրություններ
------------------

1. ↑  T. Snyder. JavaScript is Not Industrial Strength Archived 2008-01-16 at the Wayback Machine. Как использовать препроцессор Си для JavaScript-кода
2. ↑  J. Korpela. Using a C preprocessor as an HTML authoring tool Archived 2015-12-08 at the Wayback Machine. 2000.