ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Advertisements

Το αλφαριθμητικό (string)
Κεφάλαιο Τμηματικός προγραμματισμός
Chord: A scalable Peer-to-Peer Lookup Service for Internet Applications Παρουσίαση: Αθανασόπουλος, Αλεξάκης, Δεβελέγκα, Πεχλιβάνη, Φωτιάδου, Φωτόπουλος.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Πολυδιάστατοι Πίνακες, Δομές, Ενώσεις
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
Μάθημα : Βασικά Στοιχεία της Γλώσσας Java
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.
ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών9-1 Στατικός Έλεγχος Με τον όρο στατικός έλεγχος (static checking) χαρακτηρίζεται ο έλεγχος της συντακτικής.
Μήτρες (templates)  Μία μήτρα είναι ένα κομμάτι κώδικα που περιέχει παραμέτρους οι οποίες δέχονται ως τιμές τύπους δεδομένων.  Είναι ένας μηχανισμός.
1 ΕΝΤΟΛΕΣ ΠΛΗΡΟΦΟΡΙΩΝ ΓΕΝΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣΓΕΝΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ ΘΕΣΗ ΣΗΜΕΙΟΥΘΕΣΗ ΣΗΜΕΙΟΥ ΑΠΟΣΤΑΣΗΑΠΟΣΤΑΣΗ ΕΜΒΑΔΟΝΕΜΒΑΔΟΝ.
ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ ΜΑΘΗΜΑ 3.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
1 Ολυμπιάδα Πληροφορικής Μάθημα 7. 2 Στόχοι μαθήματος Δημιουργία συναρτήσεων από το χρήστη Δομή προγράμματος με συναρτήσεις Συναρτήσεις και παράμετροι.
ΣΥΝΑΡΤΗΣΕΙΣ.
ΕΝΟΤΗΤΑ 3 – MS Windows – Περιβάλλον εργασίας
ΗΥ302 Διδακτική της Πληροφορικής Η γλώσσα προγραμματισμού LOGO Writer Ομάδα Εργασία: Αλεβίζου Βασιλική (Α.Μ.:1029) Κοφφινά Ιωάννα (Α.Μ.:1035) Τριανταφυλλίδου.
Αντικειμενοστρεφής Προγραμματισμός ΚΛΑΣΕΙΣ ΙΙ. Υπερφόρτωση (Overloading) Όταν το ίδιο όνομα συνάρτησης (μεθόδου) χρησιμοποιείται για περισσότερες από.
Lists– Λίστες 1. Αυτό-αναφορικές δομές Τα μέλη μίας δομής μπορεί να είναι οποιουδήποτε τύπου, ακόμα και δείκτες σε δομές του ίδιου τύπου. Χρησιμοποιώντας.
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών8-1 Μετάφραση κατευθυνόμενη από τη σύνταξη Ένας μεταγλωττιστής πρέπει όχι απλώς να αναγνωρίζει κατά πόσο μία.
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 30/03/2009.
Δείκτες (Pointers) – Δομές (Structs)
Ενότητα Α.4. Δομημένος Προγραμματισμός
ΘΠ06 - Μεταγλωττιστές Συντακτική Ανάλυση, Bison 1.
Δομές Δεδομένων. Επιλογή δομής δεδομένων Κριτήρια: – Μέγεθος του προβλήματος – Πως θα χρησιμοποιηθεί Ενέργειες που καθορίζουν το κόστος: – Lookup: αναζήτηση/έλεγχος.
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών7-1 Πίνακας Συμβόλων Πίνακας συμβόλων: δομή δεδομένων που χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Πίνακας Συμβόλων Symbol Table.
Αναζήτηση – Δέντρα (2 ο Μέρος) Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων)
ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Δομές Δεδομένων.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 23/03/2010.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 9: Παραγωγή Ενδιάμεσου Κώδικα (Ενδιάμεσες Γλώσσες) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: 2-3 Δένδρα, Υλοποίηση και πράξεις Β-δένδρα B-Δένδρα.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 8: Πίνακας Συμβόλων Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας.
Κεφάλαιο 10 – Υποπρογράμματα
ΜΑΘ3122/106 – Γλώσσα προγραμματισμούΞενοφών Ζαμπούλης ΜΑΘ3122/106 Γλώσσα προγραμματισμού Συναρτήσεις.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Έλεγχος Ονομάτων (Name Control) Για ένα πρόγραμμα που αποτελείται από πολλά τμήματα κάποια από τα οποία έχουν πιθανώς γραφτεί από άλλους προγραμματιστές.
ΘΠ06 - Μεταγλωττιστές Ενδιάμεσος Κώδικας – Μεταφραστικά Σχήματα.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ -150 Προγραμματισμός Δομές Δεδομένων.
Τεχνολογία ΛογισμικούSlide 1 Εξειδίκευση Βασισμένη σε Μοντέλο u Τυπική εξειδίκευση λογισμικού με ανάπτυξη μαθηματικού μοντέλου για το σύστημα.
Δομές Δεδομένων και Αρχεία
Βασικά στοιχεία της Java
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Δομές δεδομένων και Αλγόριθμοι Κεφάλαιο 3. Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Δεδομένα Δεδομένα (data) Δεδομένα (data) –αφαιρετική αναπαράσταση.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Δυναμικός Κατακερματισμός
Βάσεις Δεδομένων ΙΙ 7η διάλεξη
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
1. Πώς ανοίγουμε ένα αποθηκευμένο βιβλίο εργασίας;
Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος
Πίνακας Συμβόλων Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής.
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε στοιχείο έχει ένα κλειδί από ολικά διατεταγμένο σύνολο Θέλουμε να υποστηρίξουμε δύο.
Προγραμματισμός ΗΥ Ενότητα 12: Αρχεία Δομών. Διδάσκων: Ηλίας Κ Σάββας,
Εξωτερική Αναζήτηση Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη
Δυναμικός Κατακερματισμός
Μεταγράφημα παρουσίασης:

ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009

Τι είναι ο Πίνακας Συμβόλων (Symbol Table)? (Ι)‏  Ο πίνακας συμβόλων είναι μια δομή στην οποία αποθηκεύονται τα ονόματα (και πληροφορίες για αυτά) ενός προγράμματος.  Είδη ονομάτων είναι:  το ίδιο το πρόγραμμα  μεταβλητές  συναρτήσεις / διαδικασίες  ετικέτες εντολών, στις οποίες επιτρέπεται η μετάβαση με εντολές όπως η goto  σταθερές  τύποι δεδομένων  … …

Τι είναι ο Πίνακας Συμβόλων (Symbol Table)? (ΙΙ)‏  Ο πίνακας συμβόλων χρησιμοποιείται σε διάφορα στάδια της μετάφρασης, όταν ο μεταγλωττιστής συναντά κάποιο όνομα.  π.χ. στην φάση της σημασιολογικής ανάλυσης ελέγχεται αν η χρήση των ονομάτων συμφωνεί με τον τύπο τους

Περιεχόμενα του Πίνακα Συμβόλων  Μεταβλητές  όνομα  τύπος  εμβέλεια (scope)‏  Συναρτήσεις  όνομα  επιστρεφόμενος τύπος  ορίσματα / αριθμός ορισμάτων  εμβέλεια

Οργάνωση του Πίνακα Συμβόλων  Insert  Εισαγωγή ενός νέου συμβόλου στον πίνακα  Lookup  Αναζήτηση ενός συμβόλου στον πίνακα  Delete  Διαγραφή ενός ονόματος ή μιας ομάδας ονομάτων

Εισαγωγή - Αναζήτηση  Κάθε φορά που αναγνωρίζεται ένα όνομα δημιουργείται μία νέα εγγραφή για αυτό, εφόσον δεν υπάρχει ήδη στον πίνακα συμβόλων  κατά τον ορισμό μιας νέας μεταβλητής ή συνάρτησης  Αναζήτηση ενός ονόματος στο τρέχον επίπεδο εμβέλειας ή σε περιέχουσα εμβέλεια με βάση τη σημασιολογία της γλώσσας  κατά τον ορισμό ενός συμβόλου  κατά τη χρήση ενός συμβόλου

Διαγραφή  Διαγραφή ενός ονόματος και των πληροφοριών του το οποίο δεν χρειαζόμαστε πλέον  κατά την έξοδο από κάποιο block

Παράδειγμα Χρήσης Πίνακα Συμβόλων float g;lookup(g), ins(g)‏ g = 12.4;lookup(g)‏ writeString(typeof(x));lookup(writeString()), lookup(typeof()), lookup(x)‏ int foo(int x, int y) {lookup(foo()), ins(foo()), ins(x), ins(y)‏ writeInt(x+y);lookup(writeInt()), lookup(x), lookup(y)‏ int print = y;lookup(print), ins(print), lookup(y)‏ writeInt(print);lookup(writeInt()), lookup(print)‏ int h(int a) {lookup(h()), ins(h()), ins(a)‏ return x+y+a;lookup(x), lookup(y), lookup(a)‏ }delete(h.a)‏ y = h(x);lookup(y), lookup(h()), lookup(x)‏ }delete(foo.x), delete(foo.y), delete(foo.print), delete(foo.h)‏

Υλοποίηση με Συνδεδεμένες Λίστες  Η απλούστερη και λιγότερο αποδοτική υλοποίηση  Τα νέα ονόματα εισάγονται στη λίστα σύμφωνα με την σειρά εμφάνισης στο πρόγραμμα  Η αναζήτηση απαιτεί να διατρέξουμε όλη την λίστα  Σε ένα πίνακα συμβόλων με n ονόματα  κόστος εισαγωγής/αναζήτησης O(n)‏ b z c a x αρχη y

Υλοποίηση με Δέντρα Δυαδικής Αναζήτησης (Ι)‏ c b y a xz

Υλοποίηση με Δέντρα Δυαδικής Αναζήτησης (II)‏  Σε κάθε κόμβο x ο οποίος περιέχει το όνομα n(x)‏  όλοι οι αριστεροί κόμβοι y, περιέχουν ονόματα n(y) που προηγούνται του n(x) κατ’αλφαβητική σειρά  όλοι οι δεξιοί κόμβοι z, περιέχουν ονόματα n(z) που έπονται του n(x) κατ’αλφαβητική σειρά  Για να εισάγουμε ένα όνομα το συγκρίνουμε με αυτό του τρέχοντος κόμβου και ακολουθούμε το αντίστοιχο μονοπάτι  Σε ένα πίνακα συμβόλων με n ονόματα  κόστος εισαγωγής/αναζήτησης O(log(n))‏

Υλοποίηση με Hash Table (Ι)‏  Ένας πίνακας κατακερματισμού αποτελείται από k θέσεις (αριθμημένες από 0 εώς k-1)‏  σε κάθε θέση υπάρχει ένας δείκτης στο αρχικό στοιχείο μιας συνδεδεμένης λίστας  κάθε όνομα n κατανέμεται σε μία από αυτές τις λίστες με βάση μια hash συνάρτηση (h(n) = x, 0 ≤ x ≤ k-1)  είναι πολύ χρήσιμο στην υλοποίηση σας να υπάρχει και ένα scope link που δημιουργεί μία λίστα συνδέοντας όλα τα σύμβολα που ανήκουν στο ίδιο scope.  Σημείωση: αυτή η λίστα θα είναι μία δομή πάνω στην ήδη υπάρχουσα.

Υλοποίηση με Hash Table (ΙΙ)‏ Οι εγγραφές με το ίδιο χρώμα ανήκουν στο ίδιο scope k-1

Εμβέλεια  Ένας τρόπος διαχείρισης της εμβέλειας είναι να αντιστοιχίσουμε σε κάθε εμβέλεια μοναδικό αριθμό εμβέλειας  Μια καθολική μεταβλητή μπορεί να δείχνει την τρέχουσα εμβέλεια  η μεταβλητή αυτή θα πρέπει να αυξάνεται / μειώνεται στα actions των γραμματικών κανόνων  Μόλις κλείσει μια εμβέλεια όλες οι καταχωρήσεις με τον αριθμό που αντιστοιχεί στην εμβέλεια εξαλείφονται

Bison και Πίνακας Συμβόλων  Σε ένα αρχείο C υλοποιούμε τις δομές και συναρτήσεις του πίνακα συμβόλων  Στο bison αρχείο προσθέτουμε actions στους κανόνες της γραμματικής έτσι ώστε:  κάνουμε αναζήτηση του ονόματος στην τρέχουσα (ή/και παραπάνω) εμβέλεια  σε κανόνες δήλωσης μεταβλητής/συνάρτησης εισάγουμε το όνομα και τις πληροφορίες του στον πίνακα συμβόλων  διαχειριζόμαστε την εμβέλεια