Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεΙώ Μαλαξός Τροποποιήθηκε πριν 8 χρόνια
1
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου
2
Δομή ▪Πίνακας Συμβόλων Κατασκευή Πληροφορία του ΠΣ Μεταβλητές (είδη, τύπος κλπ) ▪Οργάνωση του πίνακα συμβόλων Δομές Δεδομένων ΠΣ ▪Πολλαπλές Μεταβλητές Τρόποι χειρισμού πολλαπλών εμβελειών.
3
Πίνακας Συμβόλων ▪Κατά την διάρκεια της μεταγλώττισης υπάρχει η ανάγκη για την συγκέντρωση πληροφοριών σχετικών με τα ονόματα (identifiers) τα οποία εμφανίζονται μέσα στο πρόγραμμα. ▪Είδη ονομάτων: μεταβλητές υποπρογράμματα (διαδικασίες και συναρτήσεις) παράμετροι υποπρογραμμάτων ετικέτες εντολών (για χρήση σε συνδυασμό με GOTO εντολές) σταθερές τύποι δεδομένων
4
Πίνακας Συμβόλων ΙΙ ▪Η πληροφορία που αποθηκεύεται στον πίνακα συμβόλων χρησιμοποιείται κατά τη σημασιολογική ανάλυση (έλεγχος τύπων) και κατά την παραγωγή κώδικα (πχ. πόσο χώρο στη μνήμη απαιτούν). ▪πχ. int x; float y; Αποθήκευση στον πίνακα συμβόλων ότι ο x είναι ακέραιου τύπου. Ανάκληση από τον πίνακα συμβόλων κάθε φορά που απαιτείται το x είναι ακέραιος (πχ κατά την ανάθεση τιμής στη μεταβλητή x).
5
Πότε κατασκευάζεται ο Πίνακας Συμβόλων; ▪Ο ΠΣ κατασκευάζεται κατά την φάση της ανάλυσης, δηλαδή κατά την λεκτική, συντακτική ή/και σημασιολογική ανάλυση. Είναι δυνατό κατά τη λεκτική ανάλυση να δημιουργηθεί μια νέα θέση στο πίνακα που να περιέχει αρχικές πληροφορίες για το σύμβολο. Κυρίως κατασκευή του πίνακα λαμβάνει χώρα στη φάση της συντακτικής ανάλυση, καθώς υπάρχει εκεί διαθέσιμη πληροφορία σχετική με το συγκεκριμένο όνομα.
6
Μεταβλητές ▪Βασικό στοιχείο που αποθηκεύεται στο πίνακα συμβόλων. ▪Χαρακτηριστικά Τύπος Εμβέλεια Διάρκεια ζωής Ορατότητα ▪Εμβέλεια, διάρκεια ζωής και ορατότητα συνήθως ορίζουν τη κατηγορία αποθήκευσης (storage class).
7
Εμβέλεια ▪Εμβέλεια: δομική μονάδα προγράμματος η οποία περιέχει δηλώσεις μιας ή περισσοτέρων μεταβλητών. Δομική μονάδα προγράμματος: το ίδιο το πρόγραμμα, συναρτήσεις, διαδικασίες, αρχεία (C). Δυναμική εμβέλεια (dynamic scope): όταν η απόφαση για το σε ποια μεταβλητή αναφέρεται ένα όνομα βασίζεται σε πληροφορία που είναι διαθέσιμη μόνο κατά την εκτέλεση. Στατική εμβέλεια (static scope): όταν η παραπάνω απόφαση μπορεί να γίνει κατά την μεταγλώττιση.
8
Ορατότητα και Εμβέλειες ▪Περισσότερες γλώσσες επιτρέπουν φωλιασμένες δομικές μονάδες (block structure). Φωλιασμένες εμβέλειες ορίζουν ένα δένδρο. ▪Η ορατότητα μιας μεταβλητής είναι η περιοχή στην οποία το όνομα της μεταβλητής αναφέρεται στη συγκεκριμένη μεταβλητή.
9
Ορατότητα και Εμβέλειες (ιι) ▪Η μεταβλητή είναι ορατή στην εμβέλεια s που δηλώνεται από το σημείο δήλωσης και μετά καθώς και σε κάθε φωλιασμένη εμβέλεια s n αν: η s n βρίσκεται μετά τη δήλωση της μεταβλητής στην s το όνομα της μεταβλητής δεν δηλώνεται ξανά στην s n ή σε κάποια φωλιασμένη εμβέλεια s p της s που περιέχει την s n. ▪Πολλές φορές οι όροι εμβέλεια (scope) και ορατότητα (visibility) χρησιμοποιούνται χωρίς διαφορά.
10
Παράδειγμα program p; var x,y,z : int; var x : real; begin... end function f; var x,w: real; begin... end procedure g; var x,z: real; begin... end function h; p fg h
11
Μερικά Είδη Μεταβλητών ▪Καθολικές Μεταβλητές: μέγιστη δυνατή εμβέλεια. ▪Μεταβλητές Αρχείου: εμβέλεια στο αρχείο που εμφανίζονται. ▪Μεταβλητές Στοίβας (stack): η εμβέλεια και διάρκεια ζωής είναι ίδια με τη συγκεκριμένη δομική μονάδα που τις περιέχει. ▪Στατικές μεταβλητές (static): διατηρούν την τιμή τους μεταξύ διαδοχικών κλήσεων της δομικής μονάδας στην οποία ανήκουν. ▪Νεότερες γλώσσες: public, private, protected
12
Άλλα χαρακτηριστικά των Μεταβλητών ▪Γλώσσες μοναδικής ανάθεσης (single assignment): Σε κάθε μεταβλητή η ανάθεση τιμής γίνεται μια και ΜΟΝΑΔΙΚΗ φορά. ▪Γλώσσες καταστροφικής ανάθεσης (desctructive assignment): Η ανάθεση τιμών στη μεταβλητή μπορεί να γίνει περισσότερες από μια φορές, και κάθε φορά η προηγούμενη τιμή εξαφανίζεται. ▪Διάρκεια ζωής: χρόνος από την στιγμή που δεσμεύεται μνήμη για μια μεταβλητή μέχρι να ελευθερωθεί.
13
Πληροφορία στον ΠΣ ▪Μεταβλητές Εμβέλεια και ορατότητα (έμμεσα) Διάρκεια ζωής τύπος Θέση στη μνήμη ▪Παράμετροι Τρόπος περάσματος (passing mode) {ref & value} ▪Ονόματα διαδικασιών/συναρτήσεων Αριθμός παραμέτρων Τύπος και τρόπος περάσματος Τύπος αποτελέσματος (συναρτήσεις)
14
Οργάνωση του Πίνακα Συμβόλων
15
Βασικές Απαιτήσεις ▪Πολύ συχνή προσπέλαση του πίνακα κατά τη μεταγλώττιση: ▪Αποδοτική υλοποίηση λειτουργιών: προσθήκη νέου ονόματος αναζήτηση ονόματος διαγραφή ονόματος ή ομάδας ονομάτων ▪Διατήρηση πληροφορίας μέχρι να μην είναι πλέον χρήσιμη στη μεταγλώττιση. ▪Κατάλληλες δομές δεδομένων για την αποθήκευση του πίνακα.
16
Σειριακές Λίστες ▪Σειριακές Λίστες (γραμμικές λίστες): οι πληροφορίες για τα ονόματα τοποθετούνται σε μια συνδεδεμένη λίστα. Νέα ονόματα τοποθετούνται στο τέλος της λίστας. Εύκολη υλοποίηση Μεγάλο κόστος προσθήκης/διαγραφής a x y z b c
17
Δυαδικά Δένδρα ▪Δυαδικά δένδρα αναζήτησης Σε κάθε κόμβο όλοι οι κόμβοι που λεξικογραφικά προηγούνται βρίσκονται αριστερά, ενώ οι κόμβοι που έπονται βρίσκονται δεξιά του κόμβου. ▪Γρηγορότερη Αναζήτηση ▪Κατάλληλες δομές για τον "ισοζυγισμό" του δένδρου. c by a x z
18
Πίνακες Κατακερματισμού ▪Hash tables ▪Βασίζεται στην ύπαρξη δύο πινάκων: του πίνακα αποθήκευσης και του πίνακα κατακερματισμού. ▪Η αποδοτικότερη των τριών δομών. ▪Πίνακας κατακερματισμού Αποτελείται από k θέσεις. Κάθε θέση έχει ένα δείκτη σε μια συνδεδεμένη λίστα. Η συνάρτηση κατακερματισμού (hash function) δίνει σε ποια θέση του πίνακα κατακερματισμού αντιστοιχεί ένα όνομα, και οδηγεί στην αντίστοιχη σειριακή (συνδεδεμένη) λίστα.
19
Πίνακας Κατακερματισμού a1 a2 a3 a4 a5 a6 c1 c2 c3 b1 b2 b3 k-1 k-2... 2 1 0 a1 a2 a3 a4 a5 a6 c1 c2 c3 b1 b2 b3 k-1 k-2... 2 1 0
20
Συνάρτηση Καταακερματισμού ▪Σημαντικό ρόλο για την επιτυχία της μεθόδου. ▪Επιθυμητή η ομοιόμορφη κατανομή ονομάτων στη λίστα. ▪Εύκολος υπολογισμός όταν το όνομα είναι ακολουθίες χαρακτήρων. ▪Παράδειγμα Σ ASCII (name) = Άθροισμα ASCII χαρακτήρων ονόματος hash(name) = Σ ASCII mod k
21
Πολλαπλές Εμβέλειες
22
▪Ένας πίνακας αποθήκευσης για κάθε εμβέλεια. ▪Πίνακες οργανώνονται σε δενδρική δομή που αντιστοιχεί στην δενδρική δομή των εμβελειών. ▪Γενική αρχή αναζήτησης: ένα αναγνωριστικό (identifier) αφορά την αντίστοιχη μεταβλητή που δηλώνεται στη πιο "κοντινά" φωλιασμένη δομική μονάδα (most closely nested scope) Η αναζήτηση ξεκινά από τον "τρέχοντα" ΠΣ και κινείται προς την "ρίζα" του δένδρου. Η πρώτη καταχώριση της μεταβλητής είναι η ζητούμενη.
23
Παράδειγμα x y z x w z prog p; var x : real; begin... end fun f; var x,w: real; begin...end proc g; var x,z:real; begin...end fun h; var x,y,z:int; int real x y z x x w x z prog p fun f proc g fun h
24
Πολλαπλές Εμβέλειες με ένα μοναδικό πίνακα αποθήκευσης ▪Ένας μοναδικός πίνακας για την αποθήκευση των στοιχείων και μια συνάρτηση κατακερματισμού. ▪Στοίβα εμβελειών: πληροφορία όσον αφορά τις φωλιασμένες εμβέλειες και το σημείο του πίνακα από όπου ξεκινά δήλωση των αντίστοιχων μεταβλητών. ▪Λειτουργία όπως πίνακες κατακερματισμού, με την διαφορά ότι τα νέα στοιχεία τοποθετούνται στην αρχή της συνδεδεμένης λίστας.
25
Οργάνωση Πίνακα συμβόλων Πολλαπλών Εμβελειών a1 a2 a3 a4 a5 a6 c1 c2 c3 b1 b2 b3 k-1 k-2... 2 1 0 ε1 ε2... εnεn
26
Σύνοψη ▪Πίνακας Συμβόλων Κατασκευή Πληροφορία του ΠΣ Μεταβλητές (είδη, τύπος κλπ) ▪Οργάνωση του πίνακα συμβόλων Δομές Δεδομένων ΠΣ ▪Πολλαπλές Μεταβλητές Τρόποι χειρισμού πολλαπλών εμβελειών.
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.