Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής,

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής,"— Μεταγράφημα παρουσίασης:

1 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.1 Σημασιολογική ανάλυση Ι Εκτός από τη συντακτική ορθότητα ενός προγράμματος μας ενδιαφέρει και η εκτέλεση κάποιων άλλων ελέγχων, που δυστυχώς δεν είναι δυνατό να περιγραφούν από μια γραμματική χωρίς συμφραζόμενα: fie(a,b,c,d) int a, b, c, d; { … } fee() { int f[3], g[0], h, i, j, k; char *p; call fie(h, i, “ab”, j, k); k = f * i + j; h = g[17]; printf(“.\n”,p,q); p = 10; } Τι λάθη έχει το συγκεκριμένο π ρόγραμμα ; δηλώθηκε g[0], χρησιμο π οιήθηκε g[17] λάθος αριθμός π αραμέτρων στη fie() η π αράμετρος “ab” δεν είναι int λάθος στη χρήση της μεταβλητής f δεν έχει δηλωθεί η q το 10 δεν είναι συμβολοσειρά Όλοι αυτοί οι έλεγχοι δεν μ π ορούν να γίνουν α π ό τη συντακτική ανάλυση.

2 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.2 Σημασιολογική ανάλυση ΙΙ Γενικά για τη δημιουργία κώδικα πρέπει να απαντηθούν τα ακόλουθα: Είναι το “x” βαθμωτού τύπου, πίνακας ή συνάρτηση; Έχει δηλωθεί η “x”; Υπάρχουν ονόματα που έχουν δηλωθεί αλλά δεν χρησιμοποιούνται; Ποια από τις δηλώσεις του “x” χρησιμοποιείται όταν γίνεται αναφορά σε αυτό; Είναι η έκφραση “x * y + z” σωστή σε ότι αφορά τον έλεγχο τύπων των ονομάτων; Στην “a[i,j,k]”, έχει πράγματι δηλωθεί το a ως πίνακας τριών διαστάσεων; Τη μεταβλητή είναι η “z”; (ολική, τοπική, static) Πόσες παραμέτρους δέχεται η συνάρτηση “fie()”; Η “*p” αναφέρεται πράγματι στο αποτέλεσμα μιας “malloc()”; Αναφέρονται οι “p” και “q” στην ίδια διεύθυνση μνήμης ή όχι; Η “x” έχει δηλωθεί πριν από τη χρήση της ή όχι;

3 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.3 Σημασιολογική ανάλυση ΙΙΙ Όταν οι προαναφερόμενοι έλεγχοι βασίζονται σε πληροφορίες που γίνονται διαθέσιμες κατά τη μεταγλώττιση, τότε λέμε ότι σχετίζονται με τη στατική σημασία του προγράμματος. Όταν βασίζονται σε πληροφορίες που γίνονται διαθέσιμες κατά την εκτέλεση, τότε λέμε ότι σχετίζονται με τη δυναμική σημασία του προγράμματος. Γλώσσες όπως η Lisp και η Smalltalk διεξάγουν σχεδόν το σύνολο της σημασιολογικής ανάλυσης κατά την εκτέλεση του προγράμματος. Γλώσσες όπως η Ada έχουν ιδιαίτερα αυξημένες απαιτήσεις στατικού σημασιολογικού ελέγχου. Η Pascal και η C θα μπορούσαν να ενταχθούν κάπου μεταξύ των δύο προαναφερόμενων περιπτώσεων. Στη συνέχεια θα ασχοληθούμε με τεχνικές που έχουν εφαρμοσθεί με επιτυχία στον έλεγχο της στατικής σημασίας των γλωσσών. Τα αποτελέσματα των ελέγχων αυτών εξαρτώνται από συγκεκριμένες ιδιότητες των λεξικών μονάδων, όπως π.χ. ο τύπος και η τιμή ενός ονόματος κ.α. από πληροφορίες που δε συνοδεύουν τη λεξική μονάδα στο σημείο της εμφάνισής της (π.χ. δηλώσεις μεταβλητών, συναρτήσεων κ.α.) από υπολογισμούς που ίσως χρειάζεται να γίνουν

4 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.4 Σημασιολογική ανάλυση ΙV Για τη σημασιολογική ανάλυση δεν υπάρχουν τυποποιημένες τεχνικές όπως στη συντακτική ανάλυση που να εφαρμόζονται σε όλες τις περιπτώσεις. Εναλλακτικές προσεγγίσεις: Περιγραφή της σημασιολογικής ανάλυσης με γραμματική ιδιοτήτων Περιγραφή της σημασιολογικής ανάλυσης με ένα σχήμα μετάφρασης Απευθείας υλοποίηση της σημασιολογικής ανάλυσης με αξιοποίηση των δυνατοτήτων του byacc (εκτέλεση ενεργειών κάθε φορά που γίνεται απλοποίηση σύμφωνα με συγκεκριμένο κανόνα) και του πίνακα συμβόλων Στην υλοποίηση της γλώσσας YAPL του βιβλίου σας χρησιμοποιήσαμε την τελευταία προσέγγιση και ορίσαμε κάποιες σύνθετες δομές δεδομένων, που σε συνδυασμό με μία στοίβα ανάλυσης (που συντηρούμε) και τον πίνακα συμβόλων διεξάγουν τους επιθυμητούς ελέγχους. Όλες οι προαναφερόμενες τεχνικές λέμε ότι αποδίδουν μία μετάφραση με βάση τη σύνταξη. Όταν γίνεται χρήση γραμματικής ιδιοτήτων πρέπει να υπολογισθεί η σειρά εκτέλεσης των ενεργειών της μετάφρασης. Αυτή καθορίζεται από την τοπολογική ταξινόμηση ενός γράφου εξάρτησης ιδιοτήτων.

5 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.5 Σημασιολογική ανάλυση V Στη δεύτερη και στην τρίτη προσέγγιση η σειρά εκτέλεσης των ενεργειών της μετάφρασης καθορίζεται αυστηρά από τον αλγόριθμο της συντακτικής ανάλυσης που χρησιμοποιείται. Όταν ο μεταγλωττιστής είναι μιας μόνο σάρωσης, τότε η σημασιολογική ανάλυσης γίνεται ταυτόχρονα με τη συντακτική ανάλυση. Όταν χρειάζεται να γίνουν περίπλοκοι σημασιολογικοί έλεγχοι τότε είναι δύσκολη η κατασκευή μεταγλωττιστή μιας μόνο σάρωσης, λόγω των σύνθετων εξαρτήσεων μεταξύ των ιδιοτήτων. Έτσι, οι μεταγλωττιστές πολλαπλής σάρωσης αν και δε μπορούν να αποδώσουν το ίδιο γρήγορη μεταγλώττιση, έχουν περιθώρια διενέργειας πιο περίπλοκων σημασιολογικών ελέγχων.

6 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.6 Γραμματικές ιδιοτήτων Ι Τι είναι μία γραμματική ιδιοτήτων; Γραμματική ιδιοτήτων είναι μία γραμματική χωρίς συμφραζόμενα, που συνοδεύεται από σημασιολογικούς κανόνες ή αλλιώς εξισώσεις ιδιοτήτων Κάθε σύμβολο σε κανόνα παραγωγής συνοδεύεται από ένα σύνολο τιμών, τις αποκαλούμενες ιδιότητες. Οι εξισώσεις ιδιοτήτων περιγράφουν το πως υπολογίζονται οι τιμές των ιδιοτήτων των συμβόλων. ΠΑΡΑΔΕΙΓΜΑ: S  E E  E + T | E – T | T T  T * F |T / F |F F  num Έστω ότι θέλουμε να κατασκευάσουμε ένα διερμηνευτή αριθμητικών εκφράσεων. Ένας τρό π ος είναι να ε π ισυνάψουμε στη γραμματική του σχήματος εξισώσεις ιδιοτήτων π ου π εριγράφουν το π ως γίνεται ο υ π ολογισμός της τιμής των συντακτικά ορθών εκφράσεων.

7 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.7 Γραμματικές ιδιοτήτων ΙΙ ΠαραγωγέςΕξισώσεις ιδιοτήτων S  ES.val  E.val E 0  E 1 + TE 0.val  E 1.val + T.val | E 1 – TE 0.val  E 1.val – T.val | TE 0.val  T.val T 0  T 1 * FT 0.val  T 1.val * F.val |T 1 / FT 0.val  T 1.val / F.val |FT 0.val  F.val F  numF.val  num.val Παρατηρούμε ότι: Οι εξισώσεις ιδιοτήτων χρησιμοποιούν πληροφορίες από τα συμφραζόμενα Στη συγκεκριμένη γραμματική ιδιοτήτων οι ιδιότητες των συμβόλων του αριστερού μέρους υπολογίζονται με βάση τις ιδιότητες των συμβόλων του δεξιού μέρους (ονομάζονται συνθέσιμες ιδιότητες) Το τερματικό σύμβολο num παίρνει τιμή από το λεξικό αναλυτή

8 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.8 Γραμματικές ιδιοτήτων ΙΙΙ S  E – T  E – T  E – T * F  E – T * num  E – F * num  E – num * num  T – num * num  F – num * num  num – num * num T E - F num T F F T ΣΥΜΒΟΛΟΣΕΙΡΑ : “10 – 2 * 3” S * num val = 2 val = 3 val = 10 val = 2 val = 3 val = 2 val = 2 * 3 = 6 val = 10 – 4 = 4 Παράγωγο δένδρο με σχόλια (υπολογισμός τιμών ιδιοτήτων) τόξα εξάρτησης

9 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.9 Γραμματικές ιδιοτήτων ΙV Οι ιδιότητες «συνοδεύουν» τους αντίστοιχους κόμβους στο παράγωγο δένδρο (τερματικά και μη τερματικά) Οι κανόνες παραγωγής συνοδεύονται από εξισώσεις που καθορίζουν τον τρόπο υπολογισμού των τιμών των ιδιοτήτων Όταν σε ένα κανόνα το ίδιο σύμβολο εμφανίζεται περισσότερες από μία φορές, τότε για να ξεχωρίσουμε την κάθε εμφάνιση χρησιμοποιούμε δείκτες, δηλ. ο E  E + T γίνεται E 0  E 1 + T Οι εξισώσεις μαζί με το παράγωγο δένδρο ορίζουν ένα γράφο εξάρτησης τιμών Ο γράφος αυτός για να έχει νόημα πρέπει να είναι μη κυκλικός Συνθέσιμες ιδιότητες Η τιμή τους εξαρτάται μόνο από απογόνους Κληρονομήσιμες ιδιότητες Η τιμή τους εξαρτάται από αδελφούς κόμβους ή προγόνους

10 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.10 Γραμματικές ιδιοτήτων V Έστω ένας κανόνας παραγωγής A  X 1 X 2... X n Συνθέσιμη ιδιότητα: Κάθε ιδιότητα του A που υπολογίζεται από τιμές των X 1, X 2,..., X n Παράδειγμα: E 0  E 1 + T [ E 0.val  E 1.val + T.val ] Κληρονομήσιμη ιδιότητα: Κάθε ιδιότητα συμβόλου του δεξιού μέρους που υπολογίζεται από τιμές των A, X 1, X 2,..., X n Παράδειγμα: Decl  Type L ; [ L.type  Type. type ] Παράδειγμα: L 0  L 1, id [ L 1.type  L 0. type ] παραγωγήεξίσωση ιδιοτήτων παραγωγή εξίσωση ιδιοτήτων

11 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.11 Γραμματικές ιδιοτήτων VΙ ΠΑΡΑΔΕΙΓΜΑ: Number  Sign List Sign  + |- List  List Bit |Bit Bit  0 |1 Η γραμματική αυτή π εριγράφει τη σύνταξη δυαδικών αριθμών με π ρόσημο Θέλουμε να ορίσουμε τις κατάλληλες εξισώσεις ιδιοτήτων για τον υ π ολογισμό της δεκαδικής τιμής των συντακτικά ορθών συμβολοσειρών

12 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.12 Γραμματικές ιδιοτήτων VΙΙ Number  Sign List  Sign Bit  Sign 1  - 1 Number List Bit 1 Sign - για τη “-1” Number  Sign List  Sign List Bit  Sign List 1  Sign List Bit 1  Sign List 1 1  Sign Bit 0 1  Sign  Number List Sign - Bit 1 List Bit 0 List Bit 1 για τη “-101” ΠΑΡΑΔΕΙΓΜΑΤΑ ΑΝΑΛΥΣΗΣ:

13 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.13 Γραμματικές ιδιοτήτων VΙΙΙ Σημασιολογικοί κανόνες (εξισώσεις ιδιοτήτων) για τον υπολογισμό της δεκαδικής τιμής ενός δυαδικού αριθμού με πρόσημο

14 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.14 Γραμματικές ιδιοτήτων ΙΧ Number List Bit 1 Sign - neg  true Bit.pos  0 Bit.val  2 Bit.pos  1 List.pos  0 List.val  Bit.val  1 Number.val  - List.val  -1 για τη “-1” Μία π ιθανή σειρά εκτέλεσης των υ π ολογισμών : 1 List.pos 2 Sign.neg 3 Bit.pos 4 Bit.val 5 List.val 6 Number.val Όχι εφικτός ο υ π ολογισμός με μία μόνο διάσχιση του δένδρου. Θα μ π ορούσαν να υ π άρξουν και άλλες π ερι π τώσεις εκτέλεσης των υ π ολογισμών Σειρά υπολογισμού τιμών: Πρώτα υπολογίζονται αυτές που δεν εξαρτώνται από άλλες Υπολογίζονται οι υπόλοιπες με τη σειρά που οι τιμές από τις οποίες εξαρτώνται γίνονται διαθέσιμες Η σειρά εκτέλεσης των υ π ολογισμών π ρέ π ει να είναι συμβατή με το γράφο εξάρτησης

15 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.15 Γραμματικές ιδιοτήτων Χ Στο σχήμα α π εικονίζεται ο γράφος εξάρτησης τιμών για τη “-101” μαζί με το π αράγωγο δένδρο. Μερικές εξαρτήσεις έχουν διεύθυνση α π ό π άνω π ρος τα κάτω ( ή α π ό το π λάϊ )  κληρονομήσιμες ιδιότητες Μερικές εξαρτήσεις έχουν διεύθυνση α π ό κάτω π ρος τα π άνω  συνθέσιμες ιδιότητες Number Sign - List Bit 1 List Bit 0 List Bit 1 pos: 0 val: 1 pos: 2 val: 4 pos: 1 val: 0 pos: 2 val: 4 pos: 1 val: 4 pos: 0 val: 5 val: -5 neg: true για τη “-101”

16 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.16 Γραμματικές ιδιοτήτων ΧI ΜΕΘΟΔΟΙ ΣΗΜΑΣΙΟΛΟΓΙΚΟΥ ΕΛΕΓΧΟΥ: Μέθοδοι που βασίζονται σε γράφο με κόμβους που αντιστοιχούν στα σύμβολα του δένδρου Κατασκευή παράγωγου δένδρου Κατασκευή γράφου εξάρτησης τιμών Τοπολογική ταξινόμηση των κορυφών του γράφου Υπολογισμός των τιμών με τη σειρά της τοπολογικής ταξινόμησης (που καθορίζεται κατά τη μεταγλώττιση) Μέθοδοι βασιζόμενοι σε κανόνες Ανάλυση των σημασιολογικών κανόνων τη στιγμή της δημιουργίας του μεταγλωττιστή Καθορισμός μιας standard σειράς εκτέλεσης των υπολογισμών Υπολογισμός των τιμών σύμφωνα με αυτή τη σειρά για όλες τις συμβολοσειρές της γλώσσας Μέθοδοι που η σειρά εκτέλεσης των υπολογισμών καθορίζεται χωρίς να λαμβάνονται υπόψη οι εξαρτήσεις ιδιοτήτων: συνήθως η σειρά εκτέλεσης είναι αυτή που υπαγορεύεται από τον αλγόριθμο συντακτικής ανάλυσης (byacc)

17 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.17 Γραμματικές ιδιοτήτων ΧII Number Sign List Bit List Bit List Bit pos: 1 val: 0 pos: 0 val: 1 pos: 2 val: 4 pos: 2 val: 4 pos: 1 val: 4 pos: 0 val: 5 val: -5 neg: true για “-101” αφαιρέσουμε το π αράγωγο δένδρο... Αν α π ό το π ροηγούμενο π αράδειγμα

18 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.18 Γραμματικές ιδιοτήτων ΧIIΙ pos: 1 val: 0 pos: 0 val: 1 pos: 2 val: 4 pos: 2 val: 4 pos: 1 val: 4 pos: 0 val: 5 val: -5 neg: true για την “- 101” Ο γράφος π ου π ροκύ π τει εκφράζει τις εξαρτήσεις τιμών για τη συγκεκριμένη π ερί π τωση συμβολοσειράς. Η π ρώτη κατηγορία των μεθόδων σημασιολογικού ελέγχου εκτελεί τους υ π ολογισμούς αρχής γινομένης α π ό τις ανεξάρτητες τιμές και π ροχωράει σύμφωνα με τα τόξα εξάρτησης, Οι μέθοδοι π ου βασίζονται σε κανόνες π ροσ π αθούν να ανιχνεύσουν τη σειρά εκτέλεσης των υ π ολογισμών τη στιγμή της δημιουργίας του μεταγλωττιστή. Για το σκο π ό αυτό αναλύουν τους σημασιολογικούς κανόνες. Όλες οι άλλες μέθοδοι αγνοούν τη δομή του γράφου. Ο γράφος εξάρτησης π ρέ π ει να είναι μη κυκλικός

19 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.19 Γραμματικές ιδιοτήτων ΧΙV Ένας γράφος εξάρτησης τιμών λέμε ότι είναι κυκλικός αν περιέχει κύκλο. Μία γραμματική ιδιοτήτων λέμε ότι είναι μη κυκλική αν δεν υπάρχει παράγωγο δένδρο με κύκλο εξάρτησης τιμών των ιδιοτήτων των κόμβων του. Αν υπάρχει κύκλος, τότε δε μπορεί να καθορισθεί η σειρά υπολογισμού των τιμών. Ο έλεγχος του αν μία γραμματική ιδιοτήτων είναι μη κυκλική χαρακτηρίζεται από εκθετική πολυπλοκότητα. Εναλλακτικά, ελέγχεται αν η γραμματική είναι “ισχυρά μη κυκλική”, μία ιδιότητα λιγότερο γενική από τη μη κυκλικότητα. Ο έλεγχος του αν μία γραμματική είναι ισχυρά μη κυκλική μπορεί να γίνει σε πολυωνυμικό χρόνο και αν αυτό ισχύει, τότε μπορεί να σχεδιασθεί ένας αναδρομικός αλγόριθμος μετάφρασης, δηλαδή υπολογισμού τιμών, κατά τη δημιουργία του μεταγλωττιστή.

20 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.20 S-Γραμματικές ιδιοτήτων I Μία γραμματική που χρησιμοποιεί αποκλειστικά συνθέσιμες ιδιότητες ονομάζεται S-γραμματική ιδιοτήτων Στις S-γραμματικές ιδιοτήτων μπορεί να γίνει ο υπολογισμός όλων των τιμών σε ένα μόνο ανοδικό πέρασμα του δένδρου Άρα οι S-γραμματικές ιδιοτήτων μπορούν εύκολα να χρησιμοποιηθούν με αλγορίθμους ανάλυσης LR ως εξής Αποθηκεύονται οι ιδιότητες των συμβόλων στη στοίβα της ανάλυσης Όταν γίνεται απλοποίηση τότε Τα σύμβολα του δεξιού μέρους της παραγωγής και οι ιδιότητές τους βρίσκονται ήδη στη στοίβα Υπολογίζονται οι συνθέσιμες ιδιότητες του συμβόλου του αριστερού μέρους χρησιμοποιώντας τις τιμές των συμβόλων του δεξιού μέρους

21 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.21 S-Γραμματικές ιδιοτήτων IΙ Παραγωγή E 0  E 1 + T Σημασιολογικός κανόνας E 0.val  E 1.val + T.val E1 E1 + TT.val E 1.val κορυφή στοίβας ανάλυσης E0 E0 E 0.val μετά από την απλοποίηση κορυφή στοίβας ανάλυσης

22 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.22 L-Γραμματικές ιδιοτήτων Ι Αν η κληρονομήσιμη ιδιότητα ενός συμβόλου υπολογίζεται με βάση τιμές από πρόγονο ή/και από σύμβολα που βρίσκονται στον κανόνα αριστερά του, τότε η γραμματική αυτή ονομάζεται L-γραμματική ιδιοτήτων Δοθέντος συμβόλου X i στο δεξί μέρος της παραγωγής A  X 1 X 2... X n, κάθε κληρονομήσιμη ιδιότητα του X i μπορεί να εξαρτάται: Από ιδιότητες του A Από ιδιότητες των X 1, X 2,..., X i-1 που βρίσκονται αριστερά από το X i στο δεξί μέρος της παραγωγής Οι τιμές των L-γραμματικών ιδιοτήτων μπορούν να υπολογισθούν σε μία μόνο depth-first-search διάσχιση του δένδρου: dfsvisit( n : κόμβος) Για (κάθε απόγονο m του n από αριστερά προς τα δεξιά) επανέλαβε υπολόγισε τις κληρονομήσιμες ιδιότητες του m ; dfsvisit( m ); Τέλος επανάληψης υπολόγισε τις συνθέσιμες ιδιότητες του n ; Τέλος dfsvisit Οι κόμβοι που αναφέρονται στον αλγόριθμο είναι οι κόμβοι του δένδρου Η διάσχιση ξεκινά με κλήση της dfsvisit για τη ρίζα του δένδρου

23 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.23 L-Γραμματικές ιδιοτήτων ΙΙ Μπορούμε να κάνουμε μετάφραση L-γραμματικών ιδιοτήτων με καθοδική ανάλυση αν η γραμματική χωρίς συμφραζόμενα είναι LL(1) Μπορούμε να επεκτείνουμε έναν αναλυτή προβλέπουσας αναδρομικής κατάβασης με σημασιολογικούς κανόνες, έτσι να υπολογίζονται οι τιμές των ιδιοτήτων παράλληλα με την ανάλυση της εισόδου Οι ανοδικοί LR αναλυτές μπορούν να εκτελέσουν μετάφραση L- γραμματικών ιδιοτήτων χρησιμοποιώντας μη τερματικά σύμβολα σήμανσης (τα εισάγουμε όπου εξυπηρετεί ενδιάμεσα, στο δεξί μέρος των κανόνων), που είναι απαλείψιμα (έχουν παραγωγή που οδηγεί σε ε) Τα μη τερματικά σύμβολα σήμανσης χρησιμοποιούνται για την εκτέλεση ενεργειών «περάσματος» κληρονομήσιμων τιμών στη στοίβα της ανάλυσης Οι ανοδικοί αναλυτές μπορούν με ασφάλεια να χρησιμοποιήσουν το προαναφερόμενο τέχνασμα για τη μετάφραση L-γραμματικών ιδιοτήτων όπου η γραμματική είναι LL(1) Σε όλες τις άλλες περιπτώσεις μπορεί ο προαναφερόμενος μετασχηματισμός της γραμματικής να προκαλέσει συγκρούσεις ώθησης – απλοποίησης Στο byacc το τέχνασμα αυτό εφαρμόζεται με χρήση “embedded actions” (περισσότερες λεπτομέρειες στα manuals & σελ. 203 του βιβλίου)

24 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.24 Σχήματα μετάφρασης Ι Στις γραμματικές ιδιοτήτων δε διατυπώνεται η σειρά υπολογισμού τιμών ιδιοτήτων των συμβόλων. Οι εξισώσεις ιδιοτήτων επισυνάπτονται στα δεξιά των κανόνων παραγωγής Στην πιο γενική περίπτωση, για τον καθορισμό της σειράς υπολογισμού των τιμών απαιτείται η δημιουργία ενός γράφου εξάρτησης τιμών Σε ένα σχήμα μετάφρασης η σειρά υπολογισμού τιμών καθορίζεται με την απευθείας τοποθέτηση των ενεργειών στις επιλεγείσες θέσεις του δεξιού μέρους των κανόνων παραγωγής Μία κληρονομήσιμη ιδιότητα ενός συμβόλου του δεξιού μέρους πρέπει να έχει υπολογισθεί σε ενέργεια πριν από αυτό το σύμβολο Μία ενέργεια δεν πρέπει να αναφέρεται σε συνθέσιμη ιδιότητα συμβόλου που βρίσκεται δεξιά της ενέργειας Μία συνθέσιμη ιδιότητα για το μη τερματικό σύμβολο του αριστερού μέρους μπορεί να υπολογισθεί μόνο μετά τον υπολογισμό όλων των ιδιοτήτων στις οποίες αναφέρεται (την τοποθετούμε στο τέλος του δεξιού μέρους του κανόνα)

25 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.25 Σχήματα μετάφρασης ΙΙ D  T L L.in  T. type T  int T.type  integer | float T.type  float L  L 1, id L 1.in  L. in, enter(id.spelling, L.in) | identer(id.spelling, L.in) Καταχώρηση μεταβλητών στον πίνακα συμβόλων. Από θεωρητικής απόψεως αυτός ο κανόνας δεν επιτρέπεται σε μία γραμματική ιδιοτήτων. Μιλάμε για μία ad hoc μετάφραση. D  T { L.in  T. type } L T  int { T.type  integer } | float { T.type  float } L  { L 1.in  L. in } L 1, id {enter(id.spelling, L.in)} | id { enter(id.spelling, L.in) } ΠαραγωγέςΣημασιολογικοί κανόνες Σχήμα μετάφρασης: Οι σημασιολογικές ενέργειες τοποθετούνται στα δεξιά μέρη των παραγωγών καθορίζοντας τη σειρά εκτέλεσής τους.

26 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.26 Σχήματα μετάφρασης ΙΙΙ ΠΑΡΑΔΕΙΓΜΑ: Το σχήμα μετάφρασης, που ακολουθεί, μετατρέπει αριθμητικές εκφράσεις ένθετης μορφής στην αντίστοιχη επιθεματική μορφή. Έτσι, η μετάφραση της έκφρασης, ((a+b)*c)/(d-e*f)+3 δίνει ως αποτέλεσμα την ab+c*def*-/3+ έκφραση = όρος υπ_όροι. υπ_όροι = “+” όρος {print(“+”.λεξ_μονάδα)} υπ_όροι R | “-” όρος {print(“-”.λεξ_μονάδα)} υπ_όροι R | ε. όρος = παράγοντας υπ_παραγ. υπ_παραγ = “*” παράγοντας {print(“*”.λεξ_μονάδα)} υπ_παραγ R | “/” παράγοντας {print(“/”.λεξ_μονάδα)} υπ_παραγ R | ε. παράγοντας = “(” έκφραση “)” | “αριθμός” {print(“αριθμός ”.τιμή)}.

27 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.27 Παράδειγμα γραμματικής ιδιοτήτων: συντακτικό δένδρο Γραμματική ιδιοτήτων για την ανάπτυξη του συντακτικού δένδρου των εκφράσεων. ιδιότητα nptrδείκτης σε κόμβο δένδρου ιδιότητα ID.entryη εγγραφή ενός ονόματος στον πίνακα συμβόλων mknodeδημιουργία νέου κόμβου mkleafδημιουργία φύλλου στο δένδρο Ε n+1 = Ε n-1 “+” Ε n.[Ε n+1.nptr = mknode(‘+’, Ε n-1.nptr, Ε n.nptr) ] Ε n+1 = Ε n-1 “*” Ε n.[Ε n+1.nptr = mknode(‘*’, Ε n-1.nptr, Ε n.nptr) ] Ε n+1 = “(” Ε n “)”.[Ε n+1.nptr = Ε n.nptr ] Ε n+1 = “ID”.[Ε n+1.nptr = mkleaf(ID, ID.entry) ]

28 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.28 Παράδειγμα γραμματικής ιδιοτήτων: έλεγχος τύπων I βασικοί τύποι (λογικός τύπος, ακέραιοι, πραγματικοί κ.α.) και οριζόμενοι από τον προγραμματιστή, που μπορούν να έχουν το δικό τους όνομα ο τύπος ενός δομικού στοιχείου της γλώσσας περιγράφεται από μία έκφραση τύπων, όπου συνδυάζονται ένας ή περισσότεροι απλοί τύποι με δομητές τύπων τύπος πίνακα: array(index_type, component_type) εγγραφή από δύο πεδία: type 1 x type 2 δείκτης: pointer(type) συνάρτηση πρόσθεσης δύο αριθμών: int x int  int

29 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.29 Παράδειγμα γραμματικής ιδιοτήτων: έλεγχος τύπων II έλεγχος συνέπειας τύπων: υλοποιείται με μία ανοδική διάσχιση του συντακτικού δένδρου όπου οι τύποι των φύλλων (ονόματα, σταθερές) εξετάζονται με βάση τις αντίστοιχες δηλώσεις τους στον πίνακα συμβόλων για κάθε κόμβο που αντιστοιχεί σε τελεστή γίνεται έλεγχος αν οι τύποι των υποδένδρων είναι επιτρεπτοί για τη συγκεκριμένη πράξη ονομαστική ισοδυναμία τύπων: πολύ περιοριστική type my_int = integer; var x: integer; y: my_int; x:=y; δομικά ισοδύναμες εκφράσεις: ανν είναι του ίδιου βασικού τύπου ή οι τύποι τους προκύπτουν μετά από εφαρμογή του ίδιου δομητή σε δομικά ισοδύναμους τύπους

30 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.30 Παράδειγμα γραμματικής ιδιοτήτων: δηλώσεις τύπων δηλώσεις μεταβλητών – δείκτη και πινάκων decl = type varlist.[varlist.in = type.name ] type = “INT”.[type.name = “integer” ] type = “FLOAT”.[type.name = “float” ] varlist = varlist R “,” “ID”.[varlist R.in = varlist.in addtype(ID.entry, varlist.in) ] varlist = varlist R “,” “ID” “[” “Num” “]”. [varlist R.in = varlist.in addtype(ID.entry, array(0… “Num”.val –1, varlist.in))] varlist = varlist R “,” “*” “ID”. [varlist R.in = varlist.in addtype(ID.entry, pointer(varlist.in)) ] varlist = “ID”. [addtype(ID.entry, varlist.in) ] varlist = “ID” “[” “Num” “]”. [ addtype(ID.entry, array(0… “Num”.val –1, varlist.in))] varlist = “*” “ID”. [ addtype(ID.entry, pointer(varlist.in)) ]

31 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.31 Παράδειγμα σχήματος μετάφρασης: έλεγχος τύπων αριθμητικών εκφράσεων Ε = “literal”.{E.type = “char” } E = “Num”.{E.type = “integer” } E = “ID”.{E.type = lookup(ID.entry) } E = E 1 “mod” E 2. {αν (E 1.type = = “integer” και E 2.type = = “integer”) τότε E.type = “integer”; αλλιώς E.type = “type error”; } E = E 1 “[” E 2 “]”. {αν (E 2.type = = “integer” και E 1.type = = array(i_type,b_type)) τότε E.type = b_type; αλλιώς E.type = “type error”; } E = “*” E R. {αν (E R.type = = pointer(b_type)) τότε E.type = b_type; αλλιώς E.type = “type error”; } E = E 1 “= =” E 2. {αν (E 1.type = = E 2.type) τότε E.type = “boolean”; αλλιώς E.type = “type error”; }

32 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.32 Πίνακας συμβόλων Ι Ο προγραμματιστής επιλέγει ονόματα για τις διάφορες οντότητες, που πρόκειται να επεξεργαστεί ο μεταγλωττιστής: - σταθερές - τύποι - ετικέτες εντολών - συναρτήσεις - μεταβλητές (περιοχή δεδομένων που περιέχει μία απλή ή δομημένη τιμή) - αρχεία, συσκευές - μακροεντολές Οι οντότητες αυτές περιγράφονται από ένα σύνολο ιδιοτήτων, όπως π.χ. Το όνομα, η εμβέλεια, ο τύπος, η τιμή, το μέγεθος (χώρος μνήμης) κ.α. Ο μεταγλωττιστής συνδέει τα ονόματα των οντοτήτων με τις ιδιότητές τους μέσω μιας δομής που ονομάζεται κόμβος συμβόλου: εγγραφή που ως πεδία έχει τις ιδιότητες της οντότητας. Οι κόμβοι συμβόλων αποτελούν μέρος ενός πίνακα συμβόλων.

33 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.33 Πίνακας συμβόλων ΙΙ Ο πίνακας συμβόλων σχηματίζεται κατά τη συντακτική ανάλυση και χρησιμοποιείται ξανά κατά το στατικό σημασιολογικό έλεγχο, τη δέσμευση χώρου μνήμης και τη δημιουργία κώδικα. Παραμένει στην κύρια μνήμη για να χρησιμοποιηθεί σε κάθε μία από τις προαναφερθείσες επεξεργασίες. Κάθε αναφορά σε όνομα του πηγαίου κώδικα έχει ως αποτέλεσμα την προσπέλαση του πίνακα συμβόλων, για την εύρεση του κόμβου συμβόλου που αντιστοιχεί στο όνομα με σκοπό την καταχώρηση νέας τιμής ή την ανάκτηση μιας υπάρχουσας. Ο πίνακας συμβόλων πρέπει να επιτρέπει την ταχεία προσπέλαση των καταχωρήσεων.

34 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.34 Πίνακας συμβόλων ΙΙΙ Λειτουργίες που πρέπει να υποστηρίζει ένας πίνακας συμβόλων: Δημιουργία πίνακα Αναζήτηση κάποιου κόμβου συμβόλου στον πίνακα Εισαγωγή νέου κόμβου Διαγραφή ενός κόμβου Καταστροφή του πίνακα Η δομή του πίνακα συμβόλων σχεδιάζεται έτσι ώστε να υπάρχει η δυνατότητα αποθήκευσης των ιδιοτήτων, για κάθε τύπο καταχώρησης: δηλώσεις σταθερών δηλώσεις τύπων δηλώσεις μεταβλητών δηλώσεις συναρτήσεων Πιθανό να επιλέγεται η χρήση περισσοτέρων του ενός πίνακα συμβόλων.

35 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.35 Πίνακας συμβόλων ΙV Οργάνωση πίνακα συμβόλων: ταχύτητα προσπέλασης καταχωρήσεων ευκολία εισαγωγής ή διαγραφής κόμβου συμβόλου διαχείριση επιπρόσθετων απαιτήσεων μνήμης Οργάνωση ακολουθίας: σύμφωνα με χρονική σειρά αφίξεως κόμβων πλήθος αναζητήσεων Μ.Ο. (n+1)/2για επιτυχείς nγια ανεπιτυχείς αναζητήσεις εισαγωγήστην n+1 θέση διαγραφή από τη θέση q: μετακίνηση από την q+1 ως την n

36 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.36 Πίνακας συμβόλων V Σειριακή οργάνωση: αλφαβητικά πλήθος αναζητήσεων Μ.Ο. log 2 n για ανεπιτυχείς και επιτυχείς αναζητήσεις εισαγωγήσημαντικό κόστος διαγραφή: απαιτείται μετατόπιση Δενδρικές δομές: δυαδικά δένδρα αναζήτησης Πιο διαδεδομένη οργάνωση: πίνακας κατακερματισμού (Hash): απαρτίζεται από ένα σύνολο θέσεων υποδοχής αριθμημένες από το 0 μέχρι το μέγεθος του πίνακα μείον ένα

37 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.37 Πίνακας συμβόλων VΙ Πιο διαδεδομένη οργάνωση: πίνακας κατακερματισμού (Hash): μία συνάρτηση Hash μετατρέπει τη συμβολοσειρά του ονόματος σε μία ακέραιη τιμή που κυμαίνεται στα όρια του μεγέθους του πίνακα οι καταχωρήσεις θα πρέπει να κατανέμονται όσο το δυνατό περισσότερο ομοιόμορφα διαχείριση συγκρούσεων: 1. ανοικτό Hash 2. αλυσίδες συνδέσμων αν a= n/m όπου m ο αριθμός θέσεων του πίνακα τότε για την περίπτωση 2 ο μέσος αριθμός αναζητήσεων είναι 1 + a/2για επιτυχείς αναζητήσεις a + e -a για ανεπιτυχείς αναζητήσεις

38 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.38 Πίνακας συμβόλων VΙΙ

39 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.39 Πίνακας συμβόλων VI


Κατέβασμα ppt "ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής,"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google