1 / 29

Διεκπεραιωτές – Μεταφραστές

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΤΟΜΕΑΣ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ. Διεκπεραιωτές – Μεταφραστές. Compilers – Translators Τρίτη, 06 Δεκεμβρίου 200 5. Εισαγωγή στην Επιστήμη των Υπολογιστών Τμήμα α’, 1 1 η Εβδομάδα. Εισαγωγή στην Επιστήμη των Υπολογιστών.

lea
Download Presentation

Διεκπεραιωτές – Μεταφραστές

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΤΟΜΕΑΣ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Διεκπεραιωτές – Μεταφραστές Compilers – Translators Τρίτη, 06 Δεκεμβρίου 2005 Εισαγωγή στην Επιστήμη των Υπολογιστών Τμήμα α’, 11η Εβδομάδα

  2. Εισαγωγή στην Επιστήμη των Υπολογιστών Γενικές Παρατηρήσεις • Στην παρουσίαση αυτή, θα διαπραγματευτούμε τις γενικές αρχές που διέπουν τους διεκπεραιωτές – μεταφραστέςτων γλωσσών υψηλού επιπέδου, που αριθμούν μερικές εκατοντάδες. • Tο πρώτο ζητούμενο σ’ όλες αυτές τιςπεριπτώσεις λογισμικού (γλωσσών προγραμματισμού) είναι η σαφήνεια και η αυστηρότητα του ορισμού των.

  3. Εισαγωγή στην Επιστήμη των Υπολογιστών Βασική Διαφορά μεταξύCOMPILERS και TRANSLATORS • ο διεκπεραιωτής μεταφράζει το όλο πρόγραμμα (το πηγαίο) σε γλώσσα μηχανής και εν συνεχεία το εκτελεί • ενώ ο μεταφραστής μεταφράζει και εκτελεί την κάθε μια εντολή ξεχωριστά. Άρα, εάν μια εντολή του προγράμματος είναι μέσα σε ένα βρόγχο (loop) -που εκτελείται πολλές φορές - τότε, κάθε φορά προτού εκτελεστεί η εντολήμεταφράζεται πάλι και στη συνέχεια εκτελείται.

  4. Εισαγωγή στην Επιστήμη των Υπολογιστών Τα Κοινά Σημεία των Compilers και Translators Το όλο έργο τους εκτελείται σε τρεις φάσεις, που είναι: • H πρώτη φάση είναι η λεκτική ανάλυση (Lexical analysis) κατά την οποία το πρόγραμμα διασπάται σε μια σειρά λέξεων. • H δεύτερη φάση είναι η συντακτική ανάλυση (Syntactical analysis) στην οποία ελέγχεται η γραμματική του προγράμματος. • Τέλος, η τρίτη φάση είναι η δημιουργία του κώδικα της γλώσσας μηχανής (Code generαtion) ο οποίος θα εκτελεστεί, τελικά, από τον H. Y.

  5. Εισαγωγή στην Επιστήμη των Υπολογιστών Η Αναγκαία Προϋπόθεση στον Ορισμό μιας ΓΛΩΣΣΑΣ Προγραμματισμού Υψηλού Επιπέδου (Γ.Υ.Ε) Μια γλώσσα υψηλού επιπέδου για να είναι εύχρηστη για την περιγραφή των αλγορίθμων επίλυσης των διαφόρων προβλημάτων ΠΡΕΠΕΙ να ορίζεταιεπακριβώς και να είναι κατανοήσιμη. ΟΡΙΣΜΟΣ ΤΗΣ ΓΛΩΣΣΑΣ ΕΧΕΙ ΔΥΟ ΣΚΕΛΗ: • Τη γραμματική – σύνταξη (grammar – syntax), • Tη σημαντική (semantics)- Την έννοια (meaning)

  6. Εισαγωγή στην Επιστήμη των Υπολογιστών Η περιγραφή μιας γλώσσας υψηλού επιπέδου θεωρείται ομοίως σε δυο μέρη: Στην γραμματική της (grammar) που συχνά ονομάζεται και σύνταξη (syntax) και στην έννοια (meαning) ή σημαντική της γλώσσας (semantics).

  7. Εισαγωγή στην Επιστήμη των Υπολογιστών Επισήμανση To ενδιαφέρον είναι ότι ο βαθμός ακρίβειας μιας γλώσσας υψηλού επιπέδου και η έλλειψη ασαφειών που πρέπει να την χαρακτηρίζουν, είναι ανάγκη να είναι ακόμη πιο ενισχυμένες στις γλώσσες μηχανής από τις καθομιλούμενες φυσικές γλώσσες, δεδομένου ότι οι άνθρωποι μπορούν να καταλαβαίνουν τα 'ευκόλως εννοούμενα', πράγμα που αδυνατούν να κάνουν οι μηχανές, αφού αυτές είναι 'βλάκες υψηλής ταχύτητας'.

  8. Εισαγωγή στην Επιστήμη των Υπολογιστών Στοιχεία Γραμματικής μιας Γ.Υ.Ε. Γενικά, η γραμματική αποτελείται από ένα σύνολο κανόνων που καθορίζουν μια έγκυρη εντολή και ένα έγκυρο πρόγραμμα, σε αντιδιαστολή από ένα τυχαίο σύνολο χαρακτήρων και μια απαράδεκτη εντολή. Π.χ. η εντολή της FORTRΑN (ή BΑSIC) : Α=B+C είναι γραμματικώς ορθή. Αλλά η παρακάτω εντολή: Α<>=Β+-Χ)5.6.7 είναι χωρίς νόημα, και άρα απαράδεκτη.

  9. Εισαγωγή στην Επιστήμη των Υπολογιστών Εργαλείο Ορισμού μιας Γραμματικής – Συμβολισμός των BACKUS-NAUR Η γραμματική μιας γλώσσας προγραμματισμού εκφράζεται συμβολικά με έναν συμβολισμό των Backus-Naur Form (BNF) που στην ουσία είναι ένα ΣΥΝΟΛΟ ΤΥΠΩΝ, που ο καθένας ορίζει μια ΓΡΑΜΜΑΤΙΚΗ ΜΟΝΑΔΑ με τη βοήθεια μιας απλούστερης ή μιας σειράς από απλούστερες μονάδες. Έτσι, ο συμβολισμός των BNF χρησιμοποιεί τις γωνιακές(<,>) Παρενθέσεις για να δώσει το όνομα της γραμματικής μονάδας και το ::= για Την έκφραση «ορίζεται ως», ενώ αξιοποιεί το Ι για τις παραλακτικές περιπτώ- σεις δίκην ή. Τέλος η αναδρομή επιτυγχάνεται με την χρήση του στοιχείου που Ορίζεται στον ίδιο τον ορισμό(recursion),όπως συμβαίνει παρακάτω στον ορισμό του Στοιχείου number στα παραδείγματα που ακολουθούν. ΠΑΡΑΔΕΙΓΜΑTA: Ορισμός των ΣΤΟΙΧΕΙΩΝ τύπου «ψηφίο» και «γράμμα» : Ο τύπος του «ψηφίου» (digit)είναι: <digit>:=0|1|2|3|4|5|6|7|8|9 Ο τύπος του «γράμματος» (letter)είναι: <letter>:=Α|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z που σημαίνουν ότι το : 0 ή 1 ή 2 ή .. .ή 9 , είναι περιπτώσεις; του γενικού τύπου ψηφίου <digit> και ότι το : Α ή Β ή .. .ή Ζ είναι περιπτώσεις του γενικού τύπου <letter>.

  10. Εισαγωγή στην Επιστήμη των Υπολογιστών Άλλα Παραδείγματα Τύπων:Ελληνικές και Βρετανικές πινακίδες κυκλοφορίας αυτοκινήτων Οι πινακίδες κυκλοφορίας των αυτοκινήτων στην χώρα μας μπορούν να περιγραφούν από τον τύπο : <Greek car number>:=<letter><letter><letter><digit><digit><digit><digit> Παρόμοια για τιςβρετανικές πινακίδες κυκλοφορίας με τύπο: <British car number>:=<letter><letter><letter><digit><digit><digit><letter> Άρα, η πινακίδα HGK123N μπορεί εύκολα να αναγνωριστεί ως Βρετανική ενώ η πινακίδα 135GKL123N σαφώς, μπορούμε να πούμε ότι δεν είναι Ελληνική.

  11. Εισαγωγή στην Επιστήμη των Υπολογιστών Τέλος, ένας άλλος ενδιαφέρον ορισμός σε μορφή BNF είναι του αριθμού (με χρήση αναδρομής): <number> :=<digit>|<number> <digit> που καθορίζει ότι: • κάθε <digit> είναι αριθμός<number> • κάθε <number> ακολουθούμενοι από ένα <digit> είναι επίσης αριθμός, που μπορεί να έχει άπειρα ψηφία.

  12. Εισαγωγή στην Επιστήμη των Υπολογιστών Τέλος, εάν έχουμε μια γραμματική και μια ακολουθίασυμβόλων (κάποια εντολή), τότε μπορεί να παραχθεί ένα δένδρο αναγνωρίσεως (recognition tree), που να δείχνει το συγκεκριμένο Στοιχείο – τύπο της γραμματικής που σχηματίζει η δοθείσα ακολουθία. Αυτή η διαδικασίακαλείται Parsing(τεχνολογώ - τηνλέξη).

  13. Εισαγωγή στην Επιστήμη των Υπολογιστών Π.χ. την ακολουθία των συμβόλων ΑΧΗ4338 μπορούμε να την τεχνολογήσουμε (to be parsed) με τον γραμματικό τύπο: <Greek car number>, αφού <Greek car number> :=

  14. Εισαγωγή στην Επιστήμη των Υπολογιστών Οι γραμματικές των γλωσσών υψηλού επιπέδου έχουν τύπους για μαθηματικές εκφράσεις, για δηλώσεις, για διαδικασίες κλπ. και η τεχνολόγηση των εντολών ενός προγράμματος, γίνεται αυτομάτως. Παρόμοια ισχύουν για τη σημαντική μιας εντολής που είναι συντακτικώς έγκυρη και αναφέρεται στην έννοια της εντολής. ΣΗΜΑΝΤΙΚΟ: Στη Γ.Υ.Ε ALGOL68 έχει επιτευχθεί αμφότερα γραμματική (syntax) και σημαντική (semantics)να έχουν ορισθεί επακριβώς μαθηματικώς.

  15. Εισαγωγή στην Επιστήμη των Υπολογιστών ΛΕΚΤΙΚΗ ΑΝΑΛΥΣΗ (LEXICAL ANALYSIS)

  16. Εισαγωγή στην Επιστήμη των Υπολογιστών Στην πηγαία του μορφή - όταν γράφουμε ένα πρόγραμμα σε μια γλώσσα υψηλού επιπέδου - αυτό αποτελείται από μια αλληλουχία εντολών, η κάθε μια των οποίων αποτελείται από μια σειρά συμβόλων - Χαρακτήρων ( που όταν κάθε χαρακτήρας ληφθεί μεμονωμένα δεν έχει οποιαδήποτε έννοια) με ένα καταληκτικό σύμβολο γενικά, που στην PASCAL είναι Το ( ; ).Π.χ. : var n,c : integer ; Για να κατανοηθούν οι χαρακτήρες πρέπει να συνδυαστούν σε λέξεις.

  17. Εισαγωγή στην Επιστήμη των Υπολογιστών Ωςένα παράδειγμα, ας πάρουμε το παρακάτω πρόγραμμα (σε Γ.Υ.Ε. Pascal): program average; var n,c: integer: x,y: real; beginread(n); x=0; for c: 1 to n do beginread(y);if y<3.5 or y>49.25 thenwriteln (y, 'IS OUT OF RANGE') else x:=x+y end; writeln('AVERAGE=‘, x/n) end.

  18. Εισαγωγή στην Επιστήμη των Υπολογιστών Τα προγράμματα περιέχουν τεσσάρων ειδών λέξεις που η κάθε μια έχει τους δικούς της κανόνες σχηματισμού, και είναι: • Σύμβολα σταθερής έννοιας, όπου τα σύμβολα των αριθμητικών πράξεων, οι παρενθέσεις, τα συμβολικά ονόματα της γλώσσας IF, THEN, ELSE, ENDκλπ. Λέξεις αυτού του είδους μπορούν να αποτελούνται από ένα ή περισσότερους χαρακτήρες, κατά περίπτωση. Το σημαντικό είναι ότι ο κάθε COMPILERδιαθέτει τον δικό του πίνακα συμβόλων σταθερής έννοιας, που γνωρίζει. • Αριθμοί, όπως: οι 15, 0, 771, 5.54367 κλπ. • Ακολουθίες χαρακτήρων (strings) εντός εισαγωγικών (quote marks) ή συμβολοσειρών-σχολίων για επεξηγήσεις των αριθμητικών αποτελεσμάτων. • Ονόματα-μεταβλητές, που επινοεί ο προγραμματιστής για τις μεταβλητές, συναρτήσεις, κτλ.

  19. Εισαγωγή στην Επιστήμη των Υπολογιστών Πεμπτουσία της Λεκτικής Ανάλυσης Ο ρόλος της Λεκτικής Ανάλυσης είναι να λάβει τις ακολουθίες των χαρακτήρων που συναποτελούν τις εντολές και να τους δώσει μια μορφή πιο κατάλληλη για την επόμενη φάση της μετάφρασης (συντακτική ανάλυση), πράγμα που κάνει με την δημιουργία τριών πινάκων (που τους μεταφέρει στην επόμενη φάση της συντακτικής ανάλυσης).

  20. Εισαγωγή στην Επιστήμη των Υπολογιστών Οι Τρεις Πίνακες που Μεταφέρονται • Ο πίνακας των διαφόρων τιμών του προγράμματος (number table). • Ο πίνακας των διαφόρων ακολουθιών χαρακτήρων (string table), • Ο πίνακας των λογικών μονάδων (token table), που περιέχει κωδικοποιημένες μορφές κάθε λέξεως του προγράμματος, που ονομάζονται tokens και που καθένα παρίσταται, με ένα ζεύγος ακεραίων, ο πρώτος των οποίων δίδει το είδος της λέξεως (1, 2, 3 ή 4) και ο δεύτερος την σειρά του στον αντίστοιχο πίνακα (κατηγορία) και διαφοροποιεί τα tokens της ίδιας κατηγορίας

  21. Εισαγωγή στην Επιστήμη των Υπολογιστών Βασικά Εργαλεία της Διαδικασίας Βασικό εργαλείο είναι ο πίνακας των σταθερών συμβόλων με αριθμό τύπου 1, που περιέχει όλα τα σύμβολα των αριθμητικών πράξεων τις παρενθέσεις, τα συμβολικά ονόματα της γλώσσας που στο προηγούμενο παράδειγμα στη γλώσσα Pascal, αποδόθηκαν με το μπλε χρώμα. Αυτός ο πίνακας ακολουθεί τη γλώσσα και στη Pascal μπορεί να είναι ό ακόλουθος: Τύπος-1

  22. Εισαγωγή στην Επιστήμη των Υπολογιστών Για την δεύτερη κατηγορία των αριθμών, ο αριθμός τύπου είναι 2 και ο πραγματικός αριθμός αποθηκεύεται στονπίνακα αριθμών (number table)και το αντίστοιχο Token περιέχει έναδείκτη (pointer) για τη θέση που ο αριθμός αυτός έχειαποθηκευτεί. Π.χ. Για το προηγούμενο παράδειγμα προγράμματος, ο πίνακας των αριθμών είναι: Τύπος-2 To token (2,3) παριστά τον αριθμό 3.5 του προγράμματος

  23. Για την τρίτη κατηγορία, ο αριθμός τύπου είναι 3 και σ‘ αυτή την περίπτωση παράγεται ο πίνακας των ακολουθιών (string table) που για το προηγούμενο πρόγραμμα είναι ο ακόλουθος: Τύπος-3 To token (3,2) παριστά την ακολουθία χαρακτήρων "AVERAGE =" Εισαγωγή στην Επιστήμη των Υπολογιστών

  24. Τέλος για την (δ) κατηγορία, ο αριθμός τύπου είναι 4 και σ‘ αυτή την περίπτωση παράγεται ο πίνακας των ονομάτων (name table)που για το προηγούμενο πρόγραμμα είναι ο ακόλουθος: Τύπος-4 To token (4,4) παριστά το όνομα 'x' και αυτό είναι το τέταρτο όνομα που εμφανίζεται, από την αρχή του προγράμματος. Εισαγωγή στην Επιστήμη των Υπολογιστών

  25. Εισαγωγή στην Επιστήμη των Υπολογιστών Ο Πίνακας των Token Με τη βοήθεια των προηγούμενων πινάκων δημιουργούμε τον πολύ σημαντικό πίνακα των token, που ουσιαστικά είναι το πρόγραμμα με κάθε λεπτομέρεια, απογυμνωμένο, όμως, από κάθε περιττή πληροφορία. Έτσι, για το προηγούμενο πρόγραμμα – παράδειγμα ο πίνακας των token είναι ο ακόλουθος:

  26. Εισαγωγή στην Επιστήμη των Υπολογιστών Ωςένα παράδειγμα, ας πάρουμε το παρακάτω πρόγραμμα (σε Γ.Υ.Ε. Pascal): program average; var n,c: integer; ! nείναι το πλήθος των αναμενόμενων τιμών που x,y: real; ! όλες πρέπει να είναι μεγαλύτερες του 3.5 και beginread(n); x=0;! μικρότερες του 49.25 for c: 1 to n do beginread(y);if y<3.5 or y>49.25 thenwriteln (y, 'IS OUT OF RANGE') else x:=x+y end; writeln('AVERAGE=' ,x/n) end. Πίνακας τύπου 1 Πίνακας τύπου 2 Πίνακας τύπου 3 Πίνακας τύπου 4

  27. Εισαγωγή στην Επιστήμη των Υπολογιστών Παρατηρήσεις • Η πρώτη λέξη του προγράμματος αναμένει ο ο compiler να είναι η λέξη program Η τελευταία λέξη του προγράμματος αναμένεται να είναι η λέξη end. Πράγμα που συμβαίνει στον προηγούμενο πίνακα των Token • To 47o Token είναι μια λέξη του 2ου τύπου που είναι η 4η στη σειρά στον αντίστοιχο πίνακα των αριθμών και που αντιστοιχεί στον αριθμό 49.25 Όμοια, το 53ο Token είναι μια λέξη του 3ου τύπου που είναι το 1ο του αντίστοιχου πίνακα των strings με τιμή «IS OUT OF RANGE»

  28. Εισαγωγή στην Επιστήμη των Υπολογιστών Παρατηρήσεις • Τέλος, το 13ο, το 37ο, το 41ο, το 45ο, το 51ο και το 60ο, Token είναι τα ίδια του 4ου τύπου των ονομάτων που είναι το 5ο της σειράς του αντίστοιχου πίνακα, τη τιμή του οποίου όμως την αξιοποιεί στο πρόγραμμα χωρίς να έχει την ανάγκη να γνωρίζει το όνομά του (γιατί είναι θέση μνήμης) και γι’ αυτό απορρίπτει και δε χρησιμοποιεί τον αντίστοιχο πίνακα των ονομάτων στην επόμενη φάση της μετάφρασης, για τη συντακτική ανάλυση. ΔΗΛΑΔΗ, για τη συντακτική ανάλυση μεταφέρονται μόνο ο πίνακας των αριθμών, ο πίνακας των strings και ο πίνακας των Tokens

More Related