ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Δομές στην C (επανάληψη)
Advertisements

Το αλφαριθμητικό (string)
Εισαγωγή στους Η/Υ Πίνακες.
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΘΕΩΡΙΑ ΔΙΑΛΕΞΗ 4 Αριθμητικές εκφράσεις και πράξεις Εντολές ανάθεσης
Μάθημα : Βασικά Στοιχεία της Γλώσσας Java
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜMΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ – ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ.
Εντολες Επιλογης (Selection)
ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών9-1 Στατικός Έλεγχος Με τον όρο στατικός έλεγχος (static checking) χαρακτηρίζεται ο έλεγχος της συντακτικής.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
ΜΕΤΑΒΛΗΤΕΣ - ΤΥΠΟΙ ΜΑΘΗΜΑ 3.
ΤΕΛΕΣΤΕΣ II ΜΑΘΗΜΑ 5.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Υποθετικός τελεστής Ο υποθετικός τελεστής (?:) αποτελείται από δύο σύμβολα. Ανήκει στην κατηγορία των τελεστών που αποτελούνται από συνδυασμό συμβόλων.
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών5-1 Επίλυσης ασάφειας με εισαγωγή μη-τερματικών Π.χ. stmt = “if”, expr, “then”, stmt | “if”, expr, “then”,
1 Ολυμπιάδα Πληροφορικής Μάθημα 2. 2 Στόχοι μαθήματος Αριθμητικοί– Λογικοί Τελεστές Η εντολή IF.
Β΄ ΓΕΛ ΕισΑρχΕπ Η/Υ παρ – 2.2.5
ΣΥΝΑΡΤΗΣΕΙΣ.
Αντικειμενοστρεφής Προγραμματισμός ΚΛΑΣΕΙΣ ΙΙ. Υπερφόρτωση (Overloading) Όταν το ίδιο όνομα συνάρτησης (μεθόδου) χρησιμοποιείται για περισσότερες από.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
Μεταβλητές – εντολές εκχώρησης- δομή ακολουθίας
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 30/03/2009.
Δείκτες (Pointers) – Δομές (Structs)
ΘΠ06 - Μεταγλωττιστές Συντακτική Ανάλυση, Bison 1.
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών7-1 Πίνακας Συμβόλων Πίνακας συμβόλων: δομή δεδομένων που χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Πίνακας Συμβόλων Symbol Table.
Δηλαδή οι σημαντικοί δεν ασχολούνται με μικροπράγματα.
ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Δομές Δεδομένων.
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 23/03/2010.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 8: Πίνακας Συμβόλων Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας.
Έλεγχος Ονομάτων (Name Control) Για ένα πρόγραμμα που αποτελείται από πολλά τμήματα κάποια από τα οποία έχουν πιθανώς γραφτεί από άλλους προγραμματιστές.
Υπερφόρτωση Τελεστών (Συνέχεια) Αντικειμενοστραφής Προγραμματισμός.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
9-1 ΜΑΘΗΜΑ 9 ο Δυαδικά Δένδρα, Διάσχιση Δυαδικών Δένδρων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
ΘΠ06 - Μεταγλωττιστές Ενδιάμεσος Κώδικας – Μεταφραστικά Σχήματα.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ -150 Προγραμματισμός Δομές Δεδομένων.
Τεχνολογία ΛογισμικούSlide 1 Εξειδίκευση Βασισμένη σε Μοντέλο u Τυπική εξειδίκευση λογισμικού με ανάπτυξη μαθηματικού μοντέλου για το σύστημα.
Slide 1/52 ΗΥ – 340 Γλώσσες και Μεταφραστές Φροντιστήριο Yacc.
Βασικά στοιχεία της Java
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
ΜΑΘ106/3122 – Γλώσσα Προγραμματισμού Ξ. Ζαμπούλης ΜΑΘ106/3122 Γλώσσα Προγραμματισμού Δομές Δεδομένων.
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 2: Συναρτήσεις Εισόδου ⁄ Εξόδου. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής.
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση με το Εργαλείο BISON Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
ΚΕΦΑΛΑΙΟ 2ο - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
Δεδομένα, μεταβλητές, υπολογισμοί
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Δείκτες Προγραμματισμός Ι
Δομές.
ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ Η εντολή if if ( παράσταση) εντολή επόμενη εντολή.
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΔΟΜΕΣ ΕΛΕΓΧΟΥ(if-else, switch) και Λογικοί τελεστές / παραστάσεις
Τεχνολογία και Προγραμματισμός Υπολογιστών
Μανασσάκης Βασίλης Καθηγητής Πληροφορικής
Εισαγωγή στον Προγ/μό Υπολογιστών
Τελεστές και ή όχι Για την εκτέλεση αριθμητικών πράξεων
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
Εντολές και δομές αλγορίθμου
Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου
Μεταγράφημα παρουσίασης:

ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες

Πίνακας Συμβόλων (I)  Δομή αποθήκευσης και ανάκτησης πληροφοριών σχετικά με τα χαρακτηριστικά γνωρίσματα των ονομάτων του μεταγλωττιζόμενου προγράμματος  Προσπελαύνεται από τον μεταγλωττιστή σε κάθε εμφάνιση ενός ονόματος και υποστηρίζει τις λειτουργίες:  έλεγχο ύπαρξης ονόματος (lookup())  εισαγωγή ονόματος (insert())  ανάκτηση πληροφοριών ενός ονόματος  πρόσθεση πληροφοριών σχετικά με κάποιο όνομα  διαγραφή ονόματος ή ομάδας ονομάτων (delete())

Πίνακας Συμβόλων (II)  Διαδικασία προσπέλασης του πίνακα συμβόλων:  ορισμός ονόματος  έλεγχος για την ύπαρξη του ονόματος στην ίδια εμβέλεια, εισαγωγή του ονόματος  χρήση ονόματος  έλεγχος ύπαρξης ονόματος  ορισμός συνάρτησης ή σύνθετης εντολής  δημιουργία καινούργιας εμβέλειας  τέλος συνάρτησης ή σύνθετης εντολής  απόκρυψη τοπικών ονομάτων

Σημασιολογικός Έλεγχος  Έλεγχος τύπων  οι τιμές/τελεστές εφαρμόζονται σε τελεστέους με τον αντίστοιχο τύπο  Έλεγχος ροής  μήπως χρησιμοποιείται εντολή εξόδου από κάποια δομή ελέγχου (π.χ., break ) έξω από την αντίστοιχη δομή  Έλεγχος ύπαρξης ονομάτων  όταν χρησιμοποιείται ένα όνομα πρέπει προηγουμέ νω ς να έχει οριστεί  Έλεγχος μοναδικότητας  δεν πρέπει ένα όνομα να ορίζεται περισσότερες από μία φορές στην ίδια εμβέλεια  εξα ί ρεση αποτελε ί ο ορισμ ός εν ός σ ύ νθετου τ ύ που και η δ ή λωση μ ί α ς μεταβλητ ής με το ί διο ό νομα (π.χ., record t {…}; int t; )

Σημασιολογία (I)  Σε κάθε σύμβολο της γραμματικής μπορεί να αποδοθεί μια σημασιολογική τιμή.  Ο τύπος των σημασιολογικών τιμών καθορίζεται από το macro YYSTYPE,  #define YYSTYPE double  Οι σημασιολογικές τιμές μπορούν να είναι διαφορετικού τύπου για διαφορετικά σύμβολα. Οι τύποι αυτοί δε δηλώνονται με ορισμό του YYSTYPE, αλλά στο πρώτο μέρος ως εξής:  %{ typedef enum {TY_int, TY_real, TY_boolean} Type; %union { char * n; Type t; struct { Type type; /* other fields */ } v; }  Ο τύπος των συμβόλων καθορίζεται επίσης στο πρώτο μέρος της περιγραφής με δηλώσεις όπως: %type T_id %type typename %type expression

Σημασιολογία (II)  Με $$ συμβολίζεται η σημασιολογική τιμή του αριστερού μέλους ενός κανόνα.  Τα σύμβολα $n, όπου n>0, παριστάνουν τη σημασιολογική τιμή του n-οστού συμβόλου του δεξιού μέλους του κανόνα. Το πρώτο σύμβολο αντιστοιχεί στο $1, κ.ο.κ.  Οι σημασιολογικές τιμές των τερματικών συμβόλων συνήθως καθορίζονται από το λεκτικό αναλυτή και τοποθετούνται στη μεταβλητή yylval.  Στην περιγραφή του λεκτικού αναλυτή πρέπει σε κάθε αναγνωρίσιμο στοιχείο να αποθηκεύσουμε την τιμή του  {id}{yylval.string=strdup(yytext); return(TK_ID);}

Έλεγχος Τύπων (Ι)  Στο σχηματισμό των εκφράσεων αποδίδονται σημασιολογικές τιμές σύμφωνα με τα (μη- )τερματικά σύμβολα που τις παράγουν:  στην περίπτωση των σταθερών, παίρνουμε τον τύπο, όπως αυτός έχει αναγνωρισθεί από τον λ εκτικό α ναλυτή.  στην περίπτωση των μεταβλητών, ο τύπος τους αποθηκεύεται στον π ίνακα σ υμβόλων κατά τον ορισμό τους  στην περίπτωση εκφράσεων με τελεστές, υπάρχουν περιπτώσεις που επιτρέπονται μόνο συγκεκριμένοι τύποι

Έλεγχος Τύπων (ΙΙ)  Παραδείγματα:  Ο τελεστής ακεραίου υπολοίπου mod (ή %) δέχεται μόνο τελούμενα ακεραίου τύπου expr: expr “%” expr { if ($1.type==TY_INT && $3.type==TY_INT) $$.type=TY_INT; else yyerror(“type mismatch”);}  Στον κανόνα περιγραφής του while η συνθήκη πρέπει να έχει τύπο boolean stmt: “while” condition while_body { if ($2.type != TY_boolean) yyerror(“condition type mismatch”);}

Μετατροπές Τύπων  Στη Floop2009 επιτρέπεται ρητή μετατροπή τύπου (type casting) ανάμεσα σε συμβατούς τύπους  expr : ‘(‘ typename ‘)’ expr { if (isCastAllowed ($2, $4.type)) $$.type = $2; else yyerror(“illegal type cast”); }  Επιτρέπεται επίσης η έμμεση μετατροπή τύπου (type coersion) όπου μια έκφραση τύπου t χρησιμοποιείται σε ένα σημείο όπου αναμενόταν μια έκφραση τύπου t’, τότε η έκφραση μετατρέπεται αυτόματα στον τύπο t’ (άν αυτό είναι δυνατό)

Υπερφόρτωση Τελεστών  Όταν ένας τελεστής μπορεί να εφαρμοστεί σε τελούμενα διαφορετικών τύπων υλοποιώντας διαφορετικές πράξεις, λέμε ότι έχουμε υπερφόρτωση (overloading) του τελεστή  expr: expr ‘+’ expr { if ($1.type == TY_int) if($3.type == TY_int)$$.type = TY_int; else if($3.type == TY_real) $$.type = TY_real; else yyerror(“type mismatch”); else if($1.type == TY_real) if($3.type == TY_int)$$.type = TY_real; else if($3.type == TY_real) $$.type = TY_real; elseyyerror(“type mismatch”);