Μεταγλωττιστές / Ζαφείρης Καραΐσκος

ΚΩΔΙΚΟΣ (SKU): 9789609732185

Παλιά τιμή: 55,00  

Τιμή: 44,00

(Συμπερ. ΦΠΑ) Κερδίζετε : 11,00 (20%)
-20%
Διαθεσιμότητα: Σε Απόθεμα

Είναι κοινή αντίληψη μεταξύ των σπουδαστών, ότι η σχεδίαση και ανάπτυξη μετα-
γλωττιστών είναι ένα θέμα λιγότερο σχετικό με το αντικείμενο σπουδών τους, από
ότι η δικτύωση των υπολογιστών και ζητήματα που σχετίζονται με τον παγκόσμιο
ιστό, και ως εκ τούτου θεωρούν ότι πρέπει να αφιερώνουν λιγότερο χρόνο και προ-
σπάθεια στη μελέτη των μεταγλωττιστών. Κατακερματίζοντας τις γνώσεις τους δυ-
σκολεύονται να εφαρμόσουν τα διδάγματα από τα μαθήματα σχεδίασης μεταγλωτ-
τιστών σε άλλα μεταφραστικά προβλήματα, εκτός εάν τους επισημαίνονται ρητά και
επανειλημμένα οι υποκείμενες ομοιότητες μεταξύ των προβλημάτων.
Σε κάποιο σημείο στην καριέρα τους ωστόσο θα παραστεί η ανάγκη να υλοποιήσουν
μια γλώσσα του υπολογιστή. Πιθανότατα δε θα υλοποιήσουν τη C ή τη Java. Μπορεί
ακόμη να μην την αναγνωρίσουν ως γλώσσα. Η αλήθεια είναι ότι υπάρχουν πάρα
πολλές γλώσσες σε συγκεκριμένους τομείς ή «μικρές γλώσσες» σε κοινή χρήση:
• αρχεία ρυθμίσεων,
• HTML / XML έγγραφα,
• scripts κελύφους,
• πρωτόκολλα δικτύου,
• κεφαλίδες ηλεκτρονικού ταχυδρομείου,
• διαταγές της γραμμής-εντολών.
και ο κατάλογος δεν έχει «τέλος».
Αποδεικνύεται ότι πολλές από τις τεχνικές και τους αλγορίθμους που χρησιμοποι-
ούνται στους μεταγλωττιστές είναι στην πραγματικότητα ευρύτερα εφαρμόσιμες/
οι από ότι η μετάφραση (μόνο) γλωσσών προγραμματισμού υψηλού επιπέδου σε
συμβολική γλώσσα ή κώδικα μηχανής. Τονίζοντας αυτήν την πτυχή της σχεδίασης
και ανάπτυξης μεταγλωττιστών και διευκρινίζοντάς την με μια μεγάλη ποικιλία παραδειγμάτων, μπορεί να επαναφέρει την άποψη στους σπουδαστές ότι το υλικό που διδάσκονται, στην πραγματικότητα, έχει μεγάλη συνάφεια με μια ποικιλία υπολογιστικών προβλημάτων που πολύ απέχουν από τα προβλήματα μεταγλώττισης. Η ιδέα είναι να θεωρήσουμε τους μεταγλωττιστές ως ένα παράδειγμα μεταφραστών από (σχεδόν) οποιαδήποτε πηγαία γλώσσα σε (σχεδόν) οποιαδήποτε γλώσσα στόχο. Υπάρχουν πολλά παραδείγματα τέτοιων μεταφραστών, που δεν εμπίπτουν στο παραδοσιακό μοντέλο των μεταγλωττιστών. Πολλά από αυτά δεν περιλαμβάνουν καθόλου γλώσσες προγραμματισμού. Σε κάθε μία από αυτές τις περιπτώσεις, ωστόσο, η διαδικασία της μετάφρασης έχει περίπου την ίδια δομή: μια συμβολοσειρά εισόδου αναλύεται σε λεξικές μονάδες, η ακολουθία των οποίων ομαδοποιείται σε «φράσεις» - που η δομή τους καθορίζεται από (κάτι ανάλογο με) μια γραμματική χωρίς συμφραζόμενα - και αυτές οι φράσεις τελικά αντιστοιχίζονται με την ακολουθία εξόδου με τρόπο που καθορίζεται από τη δομή τους και το πλαίσιο στο οποίο εμφανίζονται. Πολλά από τα θέματα που προκύπτουν, συμπεριλαμβανομένων των τρόπων με τους οποίους η είσοδος μπορεί να οργανωθεί σε λεξικές μονάδες και φράσεις και των τρόπων αναπαράστασης και χειρισμού τέτοιων φράσεων, είναι παρόμοια σε όλα αυτά τα παραδείγματα. Εστιάζοντας σε αυτά τα κοινά στοιχεία καθίσταται δυνατό να παρουσιάζονται πολλές παραδοσιακές τεχνικές μεταγλώττισης, π.χ. διαχείριση της προσωρινής μνήμης για τη λεξική ανάλυση, τεχνικές συντακτικής ανάλυσης γλωσσών χωρίς συμφραζόμενα και υπολογισμός της τιμής ιδιοτήτων και διάδοση αυτών στα συντακτικά δέντρα, σε ένα πολύ πιο γενικό πλαίσιο που τονίζει τη συνάφειά τους με ένα σημαντικά ευρύτερο φάσμα εφαρμογών. Δείχνει επίσης πώς εργαλεία ανάπτυξης μεταγλωττιστών όπως lex και yacc μπορούν να εφαρμοστούν σε πολλά μεταφραστικά προβλήματα, που οι σπουδαστές δε θεωρούν ως προβλήματα μεταγλώττισης. Η εκτέλεση ενός μεταγλωττιστή αποτελείται, σε γενικές γραμμές, από τέσσερις φάσεις:

(i) τη λεξική και συντακτική ανάλυση, (ii) τη σημασιολογική ανάλυση, (iii) την παραγωγή κώδικα και (iv) τη βελτιστοποίηση κώδικα. Οι ιδέες και τεχνικές κάθε φάσης μπορούν να είναι χρήσιμες σε προβλήματα μετάφρασης έξω από τη σφαίρα της παραδοσιακής μεταγλώττισης. Η λεξική ανάλυση αφορά την εξέταση ενός κειμένου χαρακτήρα-προς-χαρακτήρα και την ομαδοποίηση των χαρακτήρων σε μονάδες όπως λέξεις, αριθμούς και σημεία στίξης.

Αυτό συνήθως γίνεται με τη χρήση κανονικών εκφράσεων για τον καθορισμό της δομής των λεξικών μονάδων, καθώς και με τη χρήση των αντίστοιχων πεπερασμένων αυτομάτων για την υλοποίηση του ταιριάσματος προτύπων με την ακολουθία χαρακτήρων που εξετάζεται. Με δεδομένη την πολύ κατανοητή φύση των κανονικών εκφράσεων και πεπερασμένων αυτομάτων, έχουν αναπτυχθεί εργαλεία, όπως τα lex και flex, που μπορούν να δημιουργήσουν αυτόματα λεξικούς ανα-λυτές δεδομένου ενός συνόλου κανονικών εκφράσεων. Τα εργαλεία αυτά καθιστούν την παραγωγή των λεξικών αναλυτών μια σχετικά απλή και ανώδυνη διαδικασία.

9789609732185
Ζαφείρης Καραΐσκος
2016
17x24
606

Περιεχόμενα (Chapter-00-Contents.pdf, 287 Kb) [Λήψη]

Εισάγετε τους χαρακτήρες που βλέπετε στην εικόνα.

Φόρτωση ...