Προεπεξεργαστής

Στην πληροφορική ο προεπεξεργαστής είναι ένα πρόγραμμα υπολογιστή το οποίο επεξεργάζεται τα δεδομένα που του δίνονται και παράγει πηγαίο κώδικα για επεξεργασία από κάποιο άλλο πρόγραμμα (ή άλλον προεπεξεργαστή). Το πόσα και ποια δεδομένα επεξεργάζεται εξαρτάται από το είδος του προεπεξεργαστή.

Γενικά

Η ανάγκη χρήσης προεπεξεργαστών προέκυψε από την ανάγκη επαναχρησιμοποίησης τμημάτων πηγαίου κώδικα χωρίς να ξαναγράφονται από την αρχή αλλά με τη χρήση λέξεων κλειδιών. Αυτή η διαδικασία δεν είναι απαραίτητο να ενσωματώνεται στον μεταγλωττιστή καθώς δυσκολεύει και την αποσφαλμάτωση (debugging).
Πρακτικά οι περισσότεροι εξειδικευμένοι σε γλώσσες προγραμματισμού προεπεξεργαστές «περνούν» το αποτέλεσμα όχι σε κείμενο αλλά σε μια συμβολική γλώσσα ειδική για τον συγκεκριμένο μεταγλωττιστή αλλά σχεδόν πάντα υπάρχει η δυνατότητα εξαγωγής σε κείμενο. Φυσικά όλα εξαρτώνται από τον προεπεξεργαστή και τις εντολές που υπάρχουν για αυτόν μέσα στο πηγαίο κείμενο.

Λεξικολογικοί προεπεξεργαστές

Οι προεπεξεργαστές αυτού του επιπέδου εκτελούν απλές αντικαταστάσεις (στο βαθμό που απαιτούν μόνο λεξικολογική ανάλυση), αναζητώντας μέσα στο κείμενο του πηγαίου κώδικα λέξεις κλειδιά και τις αντικαθιστούν με άλλες λέξεις. Είναι κυρίως προγράμματά αντικατάστασης μακροεντολών.

Συντακτικοί προεπεξεργαστές

Οι συντακτικοί προεπεξεργαστές πρωτοεμφανίστηκαν με την οικογένεια γλωσσών Lisp. Ο ρόλος τους είναι να μετασχηματίσουν τα δενδροειδείς δομές σύνταξης σύμφωνα με διάφορους, προκαθορισμένους από το χρήστη, κανόνες. Σε μερικές γλώσσες προγραμματισμού, οι κανόνες γράφονται στην ίδια τη γλώσσα όπως στη Lisp και την OCaml. Σε μερικές χρησιμοποιείται εξωτερική γλώσσα όπως συμβαίνει με την XML που χρησιμοποιεί την XSLT.

Προεπεξεργαστές γενικής χρήσης

Οι περισσότεροι προεπεξεργαστές είναι εξειδικευμένοι στην προ-επεξεργασία κάποιων συγκεκριμένων δεδομένων όπως ο προεπεξεργαστής της C.

m4

Ο m4 είναι βασικά επεξεργαστής μακροεντολών αλλά χρησιμοποιείται και σαν προεπεξεργαστής. Είναι ένας πολύ γενικού τύπου προεπεξεργαστής με "ισχυρά" χαρακτηριστικά. Στις περισσότερες γλώσσες προγραμματισμού η εντολές είναι κυρίως εντολές γραμμής (αν και μπορούν να επεκταθούν σε πολλαπλές γραμμές όμως μόνο με τη χρήση ειδικών χαρακτήρων στο τέλος της γραμμής που οι προεπεξεργαστές αναλαμβάνουν να τις ενοποιήσουν). Ο m4 παρέχει τη δυνατότητα να χρησιμοποιηθεί και σε περιπτώσεις που ούτε το πηγαίο κείμενο ούτε το αποτέλεσμα της προ-επεξεργασίας να χρειάζονται "εντολές σε μία γραμμή".
Δείτε επίσης: m4 (γλώσσα προγραμματισμού)

php

Η php είναι και προεπεξεργαστής που χρησιμοποιείται για να επεξεργάζεται (μερικώς) αρχεία html. Η php ελέγχει αν το πηγαίο αρχείο περιέχει ειδικές εντολές για την ίδια (γραμμές που ξεικούν με το "<?php" ή "<script language=php> " και κλείνουν τελικά με "?>" ή "</script>") και επεξεργάζεται το ενδιάμεσο κείμενο ενσωματώνοντας στο αρχείο html το αποτέλεσμα. Παράδειγμα απλής χρήσης της php ως προεπεξεργαστή για αρχεία html είναι:

 <html>
<head>
<title>Η σελίδα μου</title>
</head>
<body>
<b>
<?php
echo("Σελίδα υπό κατασκευή!"); 
?>
</b> </ br>
<?php
echo("Περάστε αργότερα."); 
?>
</body>
</html>
 
το οποίο μετατρέπει το κείμενο της σελίδας σε

 <html>
<head>
<title>Η σελίδα μου</title>
</head>
<body>
<b>
Σελίδα υπό κατασκευή!
</b></ br>
<?php
echo("Περάστε αργότερα."); 
?>
</body>
</html>
 
και το αποστέλλει στον αναγνώστη της σελίδας. (αυτό με τη σειρά του μπορεί να περάσει σε άλλον προεπεξεργαστή όπως οι προεπεξεργαστές αρχείων asp. H ίδια η php έχει πλέον τη δυνατότητα να μεταβιβάζει το αρχείο σε προεπεξεργαστή αρχείων asp πριν τα επιστρέψει στον εξυπηρετητή για περαιτέρω επεξεργασία ή αποστολή στον επισκέπτη της ιστοσελίδας).
Το προηγούμενο παράδειγμα θα εμφανίσει στη σελίδα το:
Σελίδα υπό κατασκευή!
Περάστε αργότερα.