1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Πίνακας Συμβόλων Symbol Table.

Slides:



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

Τεχνολογίες Web Απαραίτητες γνώσεις για την υλοποίηση της άσκησης.
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 26 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 11.
Επιμορφωτής: Ονομ/νυμο Επιμορφωτή
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 1ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 5 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 11.
-Στοίβα-Ουρά - Πλεονεκτήματα πινάκων -Δομές δεδομένων δευτερεύουσας μνήμης -Πληροφορική και δεδομένα -Παραδείγματα-Προβλήματα ψευδοκώδικα.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι18/10/2010.
Εισαγωγή στους Η/Υ Πίνακες.
Πινακες (Arrays) Σημασια Συνταξη Αρχικοποιηση Προσβαση Παραμετροι
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Προγραμματισμός Ι Πίνακες •Ο πίνακας είναι μία συλλογή μεταβλητών ίδιου τύπου, οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης. Χρησιμοποιείται.
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
Μάθημα : Βασικά Στοιχεία της Γλώσσας Java
 2003 Prentice Hall, Inc. All rights reserved. 1 Συναρτήσεις στη C++ ΠΕΡΙΕΧΟΜΕΝΑ Εισαγωγή Συστατικά προγράμματος στη C++ Μαθηματικές Συναρτήσεις ( Math.
ΜΑΘ-3122/106 Προγραμματισμός
Εντολες Επιλογης (Selection)
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Δρ. Παναγιώτης Συμεωνίδης
Page  1 Ο.Παλιάτσου Γαλλική Επανάσταση 1 ο Γυμνάσιο Φιλιππιάδας.
Linear Hashing Τμήμα Πληροφορικής & Τηλ/νών, ΕΚΠΑ Υλοποίηση Συστημάτων Βάσεων Δεδομένων
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
1 ΕΝΤΟΛΕΣ ΠΛΗΡΟΦΟΡΙΩΝ ΓΕΝΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣΓΕΝΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ ΘΕΣΗ ΣΗΜΕΙΟΥΘΕΣΗ ΣΗΜΕΙΟΥ ΑΠΟΣΤΑΣΗΑΠΟΣΤΑΣΗ ΕΜΒΑΔΟΝΕΜΒΑΔΟΝ.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
1 Ολυμπιάδα Πληροφορικής Μάθημα 7. 2 Στόχοι μαθήματος Δημιουργία συναρτήσεων από το χρήστη Δομή προγράμματος με συναρτήσεις Συναρτήσεις και παράμετροι.
Ολυμπιάδα Πληροφορικής
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
ΣΥΝΑΡΤΗΣΕΙΣ.
Microsoft Excel 4.4 Τύποι και Συναρτήσεις
Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις
Τεχνολογία ΛογισμικούSlide 1 Αλγεβρική Εξειδίκευση u Καθορισμός τύπων αφαίρεσης σε όρους σχέσεων μεταξύ τύπων λειτουργιών.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
Lists– Λίστες 1. Αυτό-αναφορικές δομές Τα μέλη μίας δομής μπορεί να είναι οποιουδήποτε τύπου, ακόμα και δείκτες σε δομές του ίδιου τύπου. Χρησιμοποιώντας.
ΗΥ – 340 Γλώσσες και Μεταφραστές Φροντιστήριο
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 30/03/2009.
Δείκτες (Pointers) – Δομές (Structs)
Ενότητα Α.4. Δομημένος Προγραμματισμός
ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ 2η Εργασία Μαθήματος Γιώργος Γιαγλής Οικονομικό Πανεπιστήμιο Αθηνών Τμήμα Διοικητικής Επιστήμης & Τεχνολογίας.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία.
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών7-1 Πίνακας Συμβόλων Πίνακας συμβόλων: δομή δεδομένων που χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες:
ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Δομές Δεδομένων.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 23/03/2010.
Κεφάλαιο 10 – Υποπρογράμματα
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι115/4/2015.
Έλεγχος Ονομάτων (Name Control) Για ένα πρόγραμμα που αποτελείται από πολλά τμήματα κάποια από τα οποία έχουν πιθανώς γραφτεί από άλλους προγραμματιστές.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ -150 Προγραμματισμός Δομές Δεδομένων.
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
Δομές Δεδομένων και Αρχεία
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Δομές.
Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος
Πίνακας Συμβόλων Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής.
EPL231 – Data Structures and Algorithms
Μεταγράφημα παρουσίασης:

1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Πίνακας Συμβόλων Symbol Table

2 Τι είναι ο Symbol Table Ο πίνακας συμβόλων (symbol table) είναι μία δομή, όπου αποθηκεύεται πληροφορία σχετικά με τα σύμβολα (μεταβλητές και συναρτήσεις) του προγράμματος. Ο πίνακας συμβόλων προσπελαύνεται κάθε φορά που ο compiler συναντά κάποιο σύμβολο.

3 Ποια είναι η δουλειά του Symbol Table read(a);//< Σημασία των read, a? input(a);//< Σημασία του input? function foo(x)//< foo, x? { s = ”hy340”;//< s? } Ο compiler μας στο παραπάνω πρόγραμμα πρέπει να μπορεί να ξεχωρίσει τον τύπο του κάθε συμβόλου όταν το συναντά.

4 Περιεχόμενη Πληροφορία Μεταβλητή  Όνομα  Τύπος  Εμβέλεια (scope)  Γραμμή δήλωσης Συνάρτηση  Όνομα  Ορίσματα  Εμβέλεια  Γραμμή δήλωσης

5 Λειτουργίες του Symbol Table Insert  Εισαγωγή ενός νέου συμβόλου στον πίνακα. Lookup  Αναζήτηση ενός συμβόλου στον πίνακα. Hide  Απενεργοποίηση (όχι διαγραφή) όλων των συμβόλων ενός επιπέδου εμβέλειας.

6 Insert Κάθε φορά που αναγνωρίζεται ένα σύμβολο δημιουργείται μία νέα εγγραφή για αυτό, εφόσον δεν υπάρχει ήδη στον symbol table. Πότε γίνεται;  Κατά τον ορισμό μιας νέας μεταβλητής ή συνάρτησης  Κατά την χρήση μη ορισμένου συμβόλου

7 Lookup Αναζήτηση ενός συμβόλου στο τρέχον επίπεδο εμβέλειας ή σε περιέχουσα εμβέλεια με βάση τη λογική των κανόνων που ακολουθεί η γλώσσα Πότε γίνεται;  Κατά τον ορισμό ενός συμβόλου  Κατά την χρήση ενός συμβόλου

8 Hide Απενεργοποίηση των μεταβλητών του επιπέδου εμβέλειας το οποίο δεν χρειαζόμαστε πλέον Πότε γίνεται;  Κατά την έξοδο από κάποιο block Προσοχή: Ακύρωση τοπικών μεταβλητών και τυπικών ορισμάτων μιας συνάρτησης με την έξοδο από το block της συνάρτησης

9 Παράδειγμα Symbol Table - Χρήση συναρτήσεων input(x); lookup(input()), lookup(x), ins(x) g = 12.4; lookup(g), ins(g) print(typeof(x)); lookup(print()), lookup(typeof()), lookup(x) function foo(x,y) lookup(foo()), ins(foo()), ins(x), ins(y) { print(x+y); lookup(print()), lookup(x), lookup(y) local print = y; lookup(print), ins(print), lookup(y) ::print(print); lookup(::print()), lookup(print) function h(a) lookup(h()), ins(h()), ins(a) { return x+y+a; lookup(x), lookup(y), ins(y), lookup(a) } hide(h.a, h.y) y = h(::x); lookup(y), lookup(h()), lookup(::x) } hide(foo.x, foo.y, foo.print, foo.h())

10 Η Δομή varType Σε αυτή την δομή αποθηκεύεται πληροφορία σχετικά με τις μεταβλητές. typedef struct varType { name// το όνομα της μεταβλητής type// ο τύπος της μεταβλητής scope level// εμβέλεια μεταβλητής declLine// γραμμή δήλωσης μεταβλητής } varType;

11 Η Δομή funType Σε αυτή την δομή αποθηκεύεται πληροφορία σχετικά με τις συναρτήσεις. typedef struct funType { name// το όνομα της συνάρτησης arguments// ορίσματα συνάρτησης scope level// εμβέλεια συνάρτησης declLine// γραμμή δήλωσης συνάρτησης } varType;

12 Η εγγραφή στον πίνακα συμβόλων Κάθε εγγραφή στον πίνακα συμβόλων είναι για την δήλωση ενός συμβόλου. typedef struct symbolTableRecord { bool isActive;// είναι ενεργό σύμβολο; union { varType* p_var; funTtype* p_fun; } types; enum symbolType;// αν το σύμβολο είναι // μεταβλητή ή συνάρτηση } symbolTableRecord;

13 Υλοποίηση Πίνακα Συμβόλων Υπάρχουν δύο τρόποι υλοποίησης του πίνακα συμβόλων:  Linked List  Hash Table Προτιμήστε η υλοποίηση με Hashtable κυρίως λόγω της επίδοσης του LookUp.

14 Υλοποίηση Πίνακα Συμβόλων με Hashtable (1/2) Ένας Hashtable αποτελείται από m buckets.  Κάθε σύμβολο κατανέμεται σε ένα από αυτά τα buckets με βάση μια hash συνάρτηση.  Σύμβολα που τυχαίνει να πέσουν στο ίδιο bucket δημιουργούν ένα linked list.  Επιπλέον είναι πολύ χρήσιμο στην υλοποίηση σας να υπάρχει και ένα scope link που δημιουργεί μία λίστα συνδέοντας όλα τα σύμβολα που ανήκουν στο ίδιο scope.  Σημείωση: αυτή η λίστα θα είναι μία δομή πάνω στην ήδη υπάρχουσα.

15 Υλοποίηση Πίνακα Συμβόλων με Hashtable (2/2) Οι εγγραφές με το ίδιο χρώμα ανήκουν στο ίδιο scope.

16 Συναρτήσεις χειρισμού Οι συναρτήσεις Insert και LookUp είναι όμοιες με αυτές που έχετε υλοποιήσει σε προηγούμενα μαθήματα για έναν Hashtable, με την διαφορά ότι πρέπει να γίνει ο χειρισμός του scope link. Η συνάρτηση Hide θα «ακολουθεί» το scope link για μία συγκεκριμένη εμβέλεια και θα ακυρώνει αυτά τα σύμβολα.

17 Χώροι Εμβέλειας Ένας τρόπος χειρισμού των χώρων εμβέλειας είναι να υπάρχει μία καθολική μεταβλητή που να δείχνει την εμβέλεια στην οποία βρισκόμαστε.  Στα actions των κατάλληλων γραμματικών κανόνων θα πρέπει να αυξάνεται ή να μειώνεται αυτή η μεταβλητή.

18 Type Checking (1/3) Redefine  Όταν υπάρχει ήδη μια μεταβλητή με id ίδιο με το id της μεταβλητής που πάμε να ορίσουμε στο ίδιο επίπεδο εμβέλειας. Undefine  Όταν μια μεταβλητή που χρησιμοποιείται δεν είναι στον πίνακα συμβόλων στο επίπεδο εμβέλειας στο οποίο θα έπρεπε να βρίσκεται.

19 Type Checking (2/3) Στη γλώσσα alpha  Redefine global μεταβλητή με ίδιο όνομα με κάποια συνάρτηση βιβλιοθήκης  Undefine Οι μεταβλητές που δεν υπάρχουν στον πίνακα συμβόλων ορίζονται με την πρώτη εμφάνισή τους (εισάγονται στον symbol table) Όταν ζητάμε global μεταβλητή η οποία δεν έχει οριστεί και άρα δεν υπάρχει στον symbol table (error)

20 Type Checking (3/3) read(a);// νέα συνάρτηση read() και μεταβλητή a input(a); function foo(x) // definition συνάρτησης foo() { s = ”hy340”;// νέα μεταβλητή s print(x+y);// νέα μεταβλητή y local hello = a;// δήλωση νέας local μεταβλητής hello function hello()// redefined hello, error { if(a > 10) print(::a + x);// νέα μεταβλητή x } sqrt(s); y = cos(::y);// error: undefined ::y }

21 Παράδειγμα Symbol Table – Yacc (1/2) … %union { char* s_type; …. } %type ID … % …

22 Παράδειγμα Symbol Table – Yacc (2/2) lvalue: ::ID {p = LookUp($2, 0); // Αναζήτηση ID στη καθολική εμβέλεια if(p == null) { //error } | … block: ‘{’ {++scope;} stmts ‘}’ {Hide(scope--);}