Σημασιολογική ανάλυση Ι

Slides:



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

Αλγόριθμοι σχεδίασης βασικών 2D σχημάτων (ευθεία)
Βασικές έννοιες αλγορίθμων
Επιμέλεια: Τίκβα Χριστίνα
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
-Στοίβα-Ουρά - Πλεονεκτήματα πινάκων -Δομές δεδομένων δευτερεύουσας μνήμης -Πληροφορική και δεδομένα -Παραδείγματα-Προβλήματα ψευδοκώδικα.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Εισαγωγή στους Η/Υ Πίνακες.
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Προγραμματισμός Ι Πίνακες •Ο πίνακας είναι μία συλλογή μεταβλητών ίδιου τύπου, οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης. Χρησιμοποιείται.
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
ΘΕΩΡΙΑ ΔΙΑΛΕΞΗ 4 Αριθμητικές εκφράσεις και πράξεις Εντολές ανάθεσης
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.
ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών9-1 Στατικός Έλεγχος Με τον όρο στατικός έλεγχος (static checking) χαρακτηρίζεται ο έλεγχος της συντακτικής.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Συναρτησιακές Εξαρτήσεις.
Β΄ ΓΕΛ ΕισΑρχΕπ Η/Υ παρ – 2.2.5
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
ΕΠΛ223 Θεωρία και Πρακτική Μεταγλωττιστών Εαρινό Εξάμηνο 2002 Κ. Μουρλάς, Λέκτορας Σημείωση: Οι διαφάνειες αυτές βασίζονται κατά το μεγαλύτερο μέρος τους.
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών5-1 Επίλυσης ασάφειας με εισαγωγή μη-τερματικών Π.χ. stmt = “if”, expr, “then”, stmt | “if”, expr, “then”,
Ολυμπιάδα Πληροφορικής
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
Β΄ ΓΕΛ ΕισΑρχΕπ Η/Υ παρ – 2.2.5
Διαχείριση μνήμης Υπόβαθρο Εναλλαγή Συνεχής κατανομή Σελιδοποίηση
Ο ΗΛΕΚΤΡΟΝΙΚΟΣ ΥΠΟΛΟΓΙΣΤΗΣ
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου.
Τεχνολογία ΛογισμικούSlide 1 Αλγεβρική Εξειδίκευση u Καθορισμός τύπων αφαίρεσης σε όρους σχέσεων μεταξύ τύπων λειτουργιών.
Συνδυαστικά Κυκλώματα
Μοντέλα Συστημάτων Παρουσιάσεις των συστημάτων των οποίων οι απαιτήσεις αναλύονται.
Μεταβλητές – εντολές εκχώρησης- δομή ακολουθίας
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής,
2-1 Ανάλυση Αλγορίθμων Αλγόριθμος Πεπερασμένο σύνολο εντολών που, όταν εκτελεστούν, επιτυγχάνουν κάποιο επιθυμητό αποτέλεσμα –Δεδομένα εισόδου και εξόδου.
Ενότητα Α.4. Δομημένος Προγραμματισμός
Γραμματικές Ι Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017.
ΘΠ06 - Μεταγλωττιστές Συντακτική Ανάλυση, Bison 1.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής,
31 Μαρτίου 2015 ΔΙΑΦΑΝΕΙΑ 1 ΤΥΠΙΚΕΣ ΜΕΘΟΔΟΙ ΑΝΑΛΥΣΗΣ ΣΥΣΤΗΜΑΤΩΝ ΤΜ. ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. – ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ ΚΑΤΗΓΟΡΗΜΑΤΙΚΟΣ ΛΟΓΙΣΜΟΣ Ι Για τον προτασιακό.
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών7-1 Πίνακας Συμβόλων Πίνακας συμβόλων: δομή δεδομένων που χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Πίνακας Συμβόλων Symbol Table.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τμ. Πληροφορικής,
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Τμ. Πληροφορικής,
Διδακτική της Πληροφορικής ΗΥ302 Εργασία :Παρουσίαση σχολικού βιβλίου Γ’ Λυκείου Τεχνολογικής Κατεύθυνσης «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον»
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Τμ.
Δομές Δεδομένων - Ισοζυγισμένα Δυαδικά Δένδρα (balanced binary trees)
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες:
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 8: Πίνακας Συμβόλων Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας.
Κεφάλαιο 10 – Υποπρογράμματα
Βασικά στοιχεία της Java
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Κεφάλαιο 4 :: Σημασιολογική Ανάλυση
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Πίνακας Συμβόλων Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής.
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Μεταγράφημα παρουσίασης:

Σημασιολογική ανάλυση Ι Εκτός από τη συντακτική ορθότητα ενός προγράμματος μας ενδιαφέρει και η εκτέλεση κάποιων άλλων ελέγχων, που δυστυχώς δεν είναι δυνατό να περιγραφούν από μια γραμματική χωρίς συμφραζόμενα: 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(“<%s,%s>.\n”,p,q); p = 10; } Τι λάθη έχει το συγκεκριμένο πρόγραμμα; δηλώθηκε g[0], χρησιμοποιήθηκε g[17] λάθος αριθμός παραμέτρων στη fie() η παράμετρος “ab” δεν είναι int λάθος στη χρήση της μεταβλητής f δεν έχει δηλωθεί η q το 10 δεν είναι συμβολοσειρά Όλοι αυτοί οι έλεγχοι δεν μπορούν να γίνουν από τη συντακτική ανάλυση. Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

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

Σημασιολογική ανάλυση ΙΙΙ Όταν οι προαναφερόμενοι έλεγχοι βασίζονται σε πληροφορίες που γίνονται διαθέσιμες κατά τη μεταγλώττιση, τότε λέμε ότι σχετίζονται με τη στατική σημασία του προγράμματος. Όταν βασίζονται σε πληροφορίες που γίνονται διαθέσιμες κατά την εκτέλεση, τότε λέμε ότι σχετίζονται με τη δυναμική σημασία του προγράμματος. Γλώσσες όπως η Lisp και η Smalltalk διεξάγουν σχεδόν το σύνολο της σημασιολογικής ανάλυσης κατά την εκτέλεση του προγράμματος. Γλώσσες όπως η Ada έχουν ιδιαίτερα αυξημένες απαιτήσεις στατικού σημασιολογικού ελέγχου. Η Pascal και η C θα μπορούσαν να ενταχθούν κάπου μεταξύ των δύο προαναφερόμενων περιπτώσεων. Στη συνέχεια θα ασχοληθούμε με τεχνικές που έχουν εφαρμοσθεί με επιτυχία στον έλεγχο της στατικής σημασίας των γλωσσών. Τα αποτελέσματα των ελέγχων αυτών εξαρτώνται από συγκεκριμένες ιδιότητες των λεξικών μονάδων, όπως π.χ. ο τύπος και η τιμή ενός ονόματος κ.α. από πληροφορίες που δε συνοδεύουν τη λεξική μονάδα στο σημείο της εμφάνισής της (π.χ. δηλώσεις μεταβλητών, συναρτήσεων κ.α.) από υπολογισμούς που ίσως χρειάζεται να γίνουν Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Σημασιολογική ανάλυση ΙV Για τη σημασιολογική ανάλυση δεν υπάρχουν τυποποιημένες τεχνικές όπως στη συντακτική ανάλυση που να εφαρμόζονται σε όλες τις περιπτώσεις. Εναλλακτικές προσεγγίσεις: Περιγραφή της σημασιολογικής ανάλυσης με γραμματική ιδιοτήτων Περιγραφή της σημασιολογικής ανάλυσης με ένα σχήμα μετάφρασης Απευθείας υλοποίηση της σημασιολογικής ανάλυσης με αξιοποίηση των δυνατοτήτων του byacc (εκτέλεση ενεργειών κάθε φορά που γίνεται απλοποίηση σύμφωνα με συγκεκριμένο κανόνα) και του πίνακα συμβόλων Στην υλοποίηση της γλώσσας YAPL του βιβλίου σας χρησιμοποιήσαμε την τελευταία προσέγγιση και ορίσαμε κάποιες σύνθετες δομές δεδομένων, που σε συνδυασμό με μία στοίβα ανάλυσης (που συντηρούμε) και τον πίνακα συμβόλων διεξάγουν τους επιθυμητούς ελέγχους. Όλες οι προαναφερόμενες τεχνικές λέμε ότι αποδίδουν μία μετάφραση με βάση τη σύνταξη. Όταν γίνεται χρήση γραμματικής ιδιοτήτων πρέπει να υπολογισθεί η σειρά εκτέλεσης των ενεργειών της μετάφρασης. Αυτή καθορίζεται από την τοπολογική ταξινόμηση ενός γράφου εξάρτησης ιδιοτήτων. Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Σημασιολογική ανάλυση V Στη δεύτερη και στην τρίτη προσέγγιση η σειρά εκτέλεσης των ενεργειών της μετάφρασης καθορίζεται αυστηρά από τον αλγόριθμο της συντακτικής ανάλυσης που χρησιμοποιείται. Όταν ο μεταγλωττιστής είναι μιας μόνο σάρωσης, τότε η σημασιολογική ανάλυσης γίνεται ταυτόχρονα με τη συντακτική ανάλυση. Όταν χρειάζεται να γίνουν περίπλοκοι σημασιολογικοί έλεγχοι τότε είναι δύσκολη η κατασκευή μεταγλωττιστή μιας μόνο σάρωσης, λόγω των σύνθετων εξαρτήσεων μεταξύ των ιδιοτήτων. Έτσι, οι μεταγλωττιστές πολλαπλής σάρωσης αν και δε μπορούν να αποδώσουν το ίδιο γρήγορη μεταγλώττιση, έχουν περιθώρια διενέργειας πιο περίπλοκων σημασιολογικών ελέγχων. Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

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

Γραμματικές ιδιοτήτων ΙΙ Παραγωγές Εξισώσεις ιδιοτήτων S  E S.val  E.val E0  E1 + T E0.val  E1.val + T.val | E1 – T E0.val  E1.val – T.val   | T E0.val  T.val T0  T1 * F T0.val  T1.val * F.val | T1 / F T0.val  T1.val / F.val | F T0.val  F.val F  num F.val  num.val Παρατηρούμε ότι: Οι εξισώσεις ιδιοτήτων χρησιμοποιούν πληροφορίες από τα συμφραζόμενα Στη συγκεκριμένη γραμματική ιδιοτήτων οι ιδιότητες των συμβόλων του αριστερού μέρους υπολογίζονται με βάση τις ιδιότητες των συμβόλων του δεξιού μέρους (ονομάζονται συνθέσιμες ιδιότητες) Το τερματικό σύμβολο num παίρνει τιμή από το λεξικό αναλυτή Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Γραμματικές ιδιοτήτων ΙΙΙ ΣΥΜΒΟΛΟΣΕΙΡΑ: “10 – 2 * 3” 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 τόξα εξάρτησης S val = 10 – 4 = 4 E - T val = 10 val = 2 * 3 = 6 T F val = 3 T * val = 10 val = 2 F num val = 3 F val = 10 val = 2 num val = 2 num val = 10 Παράγωγο δένδρο με σχόλια (υπολογισμός τιμών ιδιοτήτων) Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Γραμματικές ιδιοτήτων ΙV Οι ιδιότητες «συνοδεύουν» τους αντίστοιχους κόμβους στο παράγωγο δένδρο (τερματικά και μη τερματικά) Οι κανόνες παραγωγής συνοδεύονται από εξισώσεις που καθορίζουν τον τρόπο υπολογισμού των τιμών των ιδιοτήτων Όταν σε ένα κανόνα το ίδιο σύμβολο εμφανίζεται περισσότερες από μία φορές, τότε για να ξεχωρίσουμε την κάθε εμφάνιση χρησιμοποιούμε δείκτες, δηλ. ο E  E + T γίνεται E0  E1 + T Οι εξισώσεις μαζί με το παράγωγο δένδρο ορίζουν ένα γράφο εξάρτησης τιμών Ο γράφος αυτός για να έχει νόημα πρέπει να είναι μη κυκλικός Συνθέσιμες ιδιότητες Η τιμή τους εξαρτάται μόνο από απογόνους Κληρονομήσιμες ιδιότητες Η τιμή τους εξαρτάται από αδελφούς κόμβους ή προγόνους Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Γραμματικές ιδιοτήτων V Έστω ένας κανόνας παραγωγής A  X1 X2 ... Xn Συνθέσιμη ιδιότητα: Κάθε ιδιότητα του A που υπολογίζεται από τιμές των X1 , X2 , ... , Xn Παράδειγμα: E0  E1 + T [ E0.val  E1.val + T.val ] Κληρονομήσιμη ιδιότητα: Κάθε ιδιότητα συμβόλου του δεξιού μέρους που υπολογίζεται από τιμές των A , X1 , X2 , ... , Xn Παράδειγμα: Decl  Type L ; [ L.type  Type . type ] Παράδειγμα: L0  L1 , id [ L1.type  L0 . type ] παραγωγή εξίσωση ιδιοτήτων παραγωγή εξίσωση ιδιοτήτων παραγωγή εξίσωση ιδιοτήτων Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

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

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

Γραμματικές ιδιοτήτων VΙΙΙ Σημασιολογικοί κανόνες (εξισώσεις ιδιοτήτων) για τον υπολογισμό της δεκαδικής τιμής ενός δυαδικού αριθμού με πρόσημο Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Γραμματικές ιδιοτήτων ΙΧ για τη “-1” Μία πιθανή σειρά εκτέλεσης των υπολογισμών: List.pos Sign.neg Bit.pos Bit.val List.val Number.val Όχι εφικτός ο υπολογισμός με μία μόνο διάσχιση του δένδρου. Θα μπορούσαν να υπάρξουν και άλλες περιπτώσεις εκτέλεσης των υπολογισμών Number List Bit 1 Sign - neg  true Bit.pos  0 Bit.val  2Bit.pos  1 List.pos  0 List.val  Bit.val  1 Number.val  - List.val  -1 Σειρά υπολογισμού τιμών: Πρώτα υπολογίζονται αυτές που δεν εξαρτώνται από άλλες Υπολογίζονται οι υπόλοιπες με τη σειρά που οι τιμές από τις οποίες εξαρτώνται γίνονται διαθέσιμες Η σειρά εκτέλεσης των υπολογισμών πρέπει να είναι συμβατή με το γράφο εξάρτησης Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

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

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

Γραμματικές ιδιοτήτων ΧII Number Sign List Bit val: -5 pos: 0 val: 5 Αν από το προηγούμενο παράδειγμα neg: true - 1 pos: 1 val: 4 pos: 0 val: 1 αφαιρέσουμε το παράγωγο δένδρο ... pos: 2 val: 4 pos: 1 val: 0 pos: 2 val: 4 για “-101” Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

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

Γραμματικές ιδιοτήτων ΧΙV Ένας γράφος εξάρτησης τιμών λέμε ότι είναι κυκλικός αν περιέχει κύκλο. Μία γραμματική ιδιοτήτων λέμε ότι είναι μη κυκλική αν δεν υπάρχει παράγωγο δένδρο με κύκλο εξάρτησης τιμών των ιδιοτήτων των κόμβων του. Αν υπάρχει κύκλος, τότε δε μπορεί να καθορισθεί η σειρά υπολογισμού των τιμών. Ο έλεγχος του αν μία γραμματική ιδιοτήτων είναι μη κυκλική χαρακτηρίζεται από εκθετική πολυπλοκότητα. Εναλλακτικά, ελέγχεται αν η γραμματική είναι “ισχυρά μη κυκλική”, μία ιδιότητα λιγότερο γενική από τη μη κυκλικότητα. Ο έλεγχος του αν μία γραμματική είναι ισχυρά μη κυκλική μπορεί να γίνει σε πολυωνυμικό χρόνο και αν αυτό ισχύει, τότε μπορεί να σχεδιασθεί ένας αναδρομικός αλγόριθμος μετάφρασης, δηλαδή υπολογισμού τιμών, κατά τη δημιουργία του μεταγλωττιστή. Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

S-Γραμματικές ιδιοτήτων I Άρα οι S-γραμματικές ιδιοτήτων μπορούν εύκολα να χρησιμοποιηθούν με αλγορίθμους ανάλυσης LR ως εξής Αποθηκεύονται οι ιδιότητες των συμβόλων στη στοίβα της ανάλυσης Όταν γίνεται απλοποίηση τότε Τα σύμβολα του δεξιού μέρους της παραγωγής και οι ιδιότητές τους βρίσκονται ήδη στη στοίβα Υπολογίζονται οι συνθέσιμες ιδιότητες του συμβόλου του αριστερού μέρους χρησιμοποιώντας τις τιμές των συμβόλων του δεξιού μέρους Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

S-Γραμματικές ιδιοτήτων IΙ Παραγωγή E0  E1 + T Σημασιολογικός κανόνας E0.val  E1.val + T.val κορυφή στοίβας ανάλυσης κορυφή στοίβας ανάλυσης T T.val μετά από την απλοποίηση + E1 E1.val E0 E0.val Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

L-Γραμματικές ιδιοτήτων Ι Δοθέντος συμβόλου Xi στο δεξί μέρος της παραγωγής A  X1 X2 ... Xn , κάθε κληρονομήσιμη ιδιότητα του Xi μπορεί να εξαρτάται: Από ιδιότητες του A Από ιδιότητες των X1 , X2 , ..., Xi-1 που βρίσκονται αριστερά από το Xi στο δεξί μέρος της παραγωγής Οι τιμές των L-γραμματικών ιδιοτήτων μπορούν να υπολογισθούν σε μία μόνο depth-first-search διάσχιση του δένδρου: dfsvisit(n: κόμβος) Για (κάθε απόγονο m του n από αριστερά προς τα δεξιά) επανέλαβε υπολόγισε τις κληρονομήσιμες ιδιότητες του m; dfsvisit(m); Τέλος επανάληψης υπολόγισε τις συνθέσιμες ιδιότητες του n; Τέλος dfsvisit Οι κόμβοι που αναφέρονται στον αλγόριθμο είναι οι κόμβοι του δένδρου Η διάσχιση ξεκινά με κλήση της dfsvisit για τη ρίζα του δένδρου Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

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

Σχήματα μετάφρασης Ι Στις γραμματικές ιδιοτήτων δε διατυπώνεται η σειρά υπολογισμού τιμών ιδιοτήτων των συμβόλων. Οι εξισώσεις ιδιοτήτων επισυνάπτονται στα δεξιά των κανόνων παραγωγής Στην πιο γενική περίπτωση, για τον καθορισμό της σειράς υπολογισμού των τιμών απαιτείται η δημιουργία ενός γράφου εξάρτησης τιμών Σε ένα σχήμα μετάφρασης η σειρά υπολογισμού τιμών καθορίζεται με την απευθείας τοποθέτηση των ενεργειών στις επιλεγείσες θέσεις του δεξιού μέρους των κανόνων παραγωγής Μία κληρονομήσιμη ιδιότητα ενός συμβόλου του δεξιού μέρους πρέπει να έχει υπολογισθεί σε ενέργεια πριν από αυτό το σύμβολο Μία ενέργεια δεν πρέπει να αναφέρεται σε συνθέσιμη ιδιότητα συμβόλου που βρίσκεται δεξιά της ενέργειας Μία συνθέσιμη ιδιότητα για το μη τερματικό σύμβολο του αριστερού μέρους μπορεί να υπολογισθεί μόνο μετά τον υπολογισμό όλων των ιδιοτήτων στις οποίες αναφέρεται (την τοποθετούμε στο τέλος του δεξιού μέρους του κανόνα) Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

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

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

Παράδειγμα γραμματικής ιδιοτήτων: συντακτικό δένδρο Γραμματική ιδιοτήτων για την ανάπτυξη του συντακτικού δένδρου των εκφράσεων. ιδιότητα 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) ] Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Παράδειγμα γραμματικής ιδιοτήτων: έλεγχος τύπων I βασικοί τύποι (λογικός τύπος, ακέραιοι, πραγματικοί κ.α.) και οριζόμενοι από τον προγραμματιστή, που μπορούν να έχουν το δικό τους όνομα ο τύπος ενός δομικού στοιχείου της γλώσσας περιγράφεται από μία έκφραση τύπων, όπου συνδυάζονται ένας ή περισσότεροι απλοί τύποι με δομητές τύπων τύπος πίνακα: array(index_type, component_type) εγγραφή από δύο πεδία: type1 x type2 δείκτης: pointer(type) συνάρτηση πρόσθεσης δύο αριθμών: int x int  int Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Παράδειγμα γραμματικής ιδιοτήτων: έλεγχος τύπων II έλεγχος συνέπειας τύπων: υλοποιείται με μία ανοδική διάσχιση του συντακτικού δένδρου όπου οι τύποι των φύλλων (ονόματα, σταθερές) εξετάζονται με βάση τις αντίστοιχες δηλώσεις τους στον πίνακα συμβόλων για κάθε κόμβο που αντιστοιχεί σε τελεστή γίνεται έλεγχος αν οι τύποι των υποδένδρων είναι επιτρεπτοί για τη συγκεκριμένη πράξη ονομαστική ισοδυναμία τύπων: πολύ περιοριστική type my_int = integer; var x: integer; y: my_int; x:=y; δομικά ισοδύναμες εκφράσεις: ανν είναι του ίδιου βασικού τύπου ή οι τύποι τους προκύπτουν μετά από εφαρμογή του ίδιου δομητή σε δομικά ισοδύναμους τύπους Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Παράδειγμα γραμματικής ιδιοτήτων: δηλώσεις τύπων δηλώσεις μεταβλητών – δείκτη και πινάκων decl = type varlist. [varlist.in = type.name ] type = “INT”. [type.name = “integer” ] type = “FLOAT”. [type.name = “float” ] varlist = varlistR “,” “ID”. [varlistR.in = varlist.in addtype(ID.entry, varlist.in) ] varlist = varlistR “,” “ID” “[” “Num” “]”. [varlistR.in = varlist.in addtype(ID.entry, array(0… “Num”.val –1, varlist.in))] varlist = varlistR “,” “*” “ID”. [varlistR.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 = “*” “ID”. [ addtype(ID.entry, pointer(varlist.in)) ] Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Παράδειγμα σχήματος μετάφρασης: έλεγχος τύπων αριθμητικών εκφράσεων Ε = “literal”. {E.type = “char” } E = “Num”. {E.type = “integer” } E = “ID”. {E.type = lookup(ID.entry) } E = E1 “mod” E2. {αν (E1.type = = “integer” και E2.type = = “integer”) τότε E.type = “integer”; αλλιώς E.type = “type error”; } E = E1 “[” E2 “]”. {αν (E2.type = = “integer” και E1.type = = array(i_type,b_type)) τότε E.type = b_type; E = “*” ER. {αν (ER.type = = pointer(b_type)) τότε E = E1 “= =” E2 . {αν (E1.type = = E2.type) τότε E.type = “boolean”; Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Πίνακας συμβόλων Ι Ο προγραμματιστής επιλέγει ονόματα για τις διάφορες οντότητες, που πρόκειται να επεξεργαστεί ο μεταγλωττιστής: - σταθερές - τύποι - ετικέτες εντολών - συναρτήσεις - μεταβλητές (περιοχή δεδομένων που περιέχει μία απλή ή δομημένη τιμή) - αρχεία, συσκευές - μακροεντολές Οι οντότητες αυτές περιγράφονται από ένα σύνολο ιδιοτήτων, όπως π.χ. Το όνομα, η εμβέλεια, ο τύπος, η τιμή, το μέγεθος (χώρος μνήμης) κ.α. Ο μεταγλωττιστής συνδέει τα ονόματα των οντοτήτων με τις ιδιότητές τους μέσω μιας δομής που ονομάζεται κόμβος συμβόλου: εγγραφή που ως πεδία έχει τις ιδιότητες της οντότητας. Οι κόμβοι συμβόλων αποτελούν μέρος ενός πίνακα συμβόλων. Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Πίνακας συμβόλων ΙΙ Ο πίνακας συμβόλων σχηματίζεται κατά τη συντακτική ανάλυση και χρησιμοποιείται ξανά κατά το στατικό σημασιολογικό έλεγχο, τη δέσμευση χώρου μνήμης και τη δημιουργία κώδικα. Παραμένει στην κύρια μνήμη για να χρησιμοποιηθεί σε κάθε μία από τις προαναφερθείσες επεξεργασίες. Κάθε αναφορά σε όνομα του πηγαίου κώδικα έχει ως αποτέλεσμα την προσπέλαση του πίνακα συμβόλων, για την εύρεση του κόμβου συμβόλου που αντιστοιχεί στο όνομα με σκοπό την καταχώρηση νέας τιμής ή την ανάκτηση μιας υπάρχουσας. Ο πίνακας συμβόλων πρέπει να επιτρέπει την ταχεία προσπέλαση των καταχωρήσεων. Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Πίνακας συμβόλων ΙΙΙ Λειτουργίες που πρέπει να υποστηρίζει ένας πίνακας συμβόλων: Δημιουργία πίνακα Αναζήτηση κάποιου κόμβου συμβόλου στον πίνακα Εισαγωγή νέου κόμβου Διαγραφή ενός κόμβου Καταστροφή του πίνακα Η δομή του πίνακα συμβόλων σχεδιάζεται έτσι ώστε να υπάρχει η δυνατότητα αποθήκευσης των ιδιοτήτων, για κάθε τύπο καταχώρησης: δηλώσεις σταθερών δηλώσεις τύπων δηλώσεις μεταβλητών δηλώσεις συναρτήσεων Πιθανό να επιλέγεται η χρήση περισσοτέρων του ενός πίνακα συμβόλων. Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Πίνακας συμβόλων ΙV Οργάνωση πίνακα συμβόλων: ταχύτητα προσπέλασης καταχωρήσεων ευκολία εισαγωγής ή διαγραφής κόμβου συμβόλου διαχείριση επιπρόσθετων απαιτήσεων μνήμης Οργάνωση ακολουθίας: σύμφωνα με χρονική σειρά αφίξεως κόμβων πλήθος αναζητήσεων Μ.Ο. (n+1)/2 για επιτυχείς n για ανεπιτυχείς αναζητήσεις εισαγωγή στην n+1 θέση διαγραφή από τη θέση q: μετακίνηση από την q+1 ως την n Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Πίνακας συμβόλων V Σειριακή οργάνωση: αλφαβητικά πλήθος αναζητήσεων Μ.Ο. log2 n για ανεπιτυχείς και επιτυχείς αναζητήσεις εισαγωγή σημαντικό κόστος διαγραφή: απαιτείται μετατόπιση Δενδρικές δομές: δυαδικά δένδρα αναζήτησης Πιο διαδεδομένη οργάνωση: πίνακας κατακερματισμού (Hash): απαρτίζεται από ένα σύνολο θέσεων υποδοχής αριθμημένες από το 0 μέχρι το μέγεθος του πίνακα μείον ένα Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Πίνακας συμβόλων VΙ Πιο διαδεδομένη οργάνωση: πίνακας κατακερματισμού (Hash): μία συνάρτηση Hash μετατρέπει τη συμβολοσειρά του ονόματος σε μία ακέραιη τιμή που κυμαίνεται στα όρια του μεγέθους του πίνακα οι καταχωρήσεις θα πρέπει να κατανέμονται όσο το δυνατό περισσότερο ομοιόμορφα διαχείριση συγκρούσεων: 1. ανοικτό Hash 2. αλυσίδες συνδέσμων αν a= n/m όπου m ο αριθμός θέσεων του πίνακα τότε για την περίπτωση 2 ο μέσος αριθμός αναζητήσεων είναι 1 + a/2 για επιτυχείς αναζητήσεις a + e-a για ανεπιτυχείς αναζητήσεις Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Πίνακας συμβόλων VΙΙ Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017

Πίνακας συμβόλων VI Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017