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

39
Παρασκευή, 10 Ιουνίου 2022 Παρασκευή, 10 Ιουνίου 2022 Τμ. Πληροφορικής, Α.Π.Θ. Τμ. Πληροφορικής, Α.Π.Θ. 1 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Σημασιολογική ανάλυση Ι Εκτός από τη συντακτική ορθότητα ενός προγράμματος μας ενδιαφέρει και η εκτέλεση κάποιων άλλων ελέγχων, που δυστυχώς δεν είναι δυνατό να περιγραφούν από μια γραμματική χωρίς συμφραζόμενα: 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 δεν είναι συμβολοσειρά Όλοι αυτοί οι έλεγχοι δεν

description

Σημασιολογική ανάλυση Ι. Εκτός από τη συντακτική ορθότητα ενός προγράμματος μας ενδιαφέρει και η εκτέλεση κάποιων άλλων ελέγχων, που δυστυχώς δεν είναι δυνατό να περιγραφούν από μια γραμματική χωρίς συμφραζόμενα:. fie(a,b,c,d) int a, b, c, d; { … } fee() { - PowerPoint PPT Presentation

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

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 11

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Σημασιολογική ανάλυση ΙΕκτός από τη συντακτική ορθότητα ενός προγράμματος μας ενδιαφέρει και η εκτέλεση κάποιων άλλων ελέγχων, που δυστυχώς δεν είναι δυνατό να περιγραφούν από μια γραμματική χωρίς συμφραζόμενα:

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 δεν είναι συμβολοσειρά

Όλοι αυτοί οι έλεγχοι δεν μπορούν να γίνουν από τη συντακτική ανάλυση.

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 22

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Σημασιολογική ανάλυση ΙΙΓενικά για τη δημιουργία κώδικα πρέπει να απαντηθούν τα ακόλουθα: Είναι το “x” βαθμωτού τύπου, πίνακας ή συνάρτηση; Έχει δηλωθεί η “x”; Υπάρχουν ονόματα που έχουν δηλωθεί αλλά δεν χρησιμοποιούνται; Ποια από τις δηλώσεις του “x” χρησιμοποιείται όταν γίνεται αναφορά σε

αυτό; Είναι η έκφραση “x * y + z” σωστή σε ότι αφορά τον έλεγχο τύπων των

ονομάτων; Στην “a[i,j,k]”, έχει πράγματι δηλωθεί το a ως πίνακας τριών

διαστάσεων; Τη μεταβλητή είναι η “z”; (ολική, τοπική, static) Πόσες παραμέτρους δέχεται η συνάρτηση “fie()”; Η “*p” αναφέρεται πράγματι στο αποτέλεσμα μιας “malloc()”; Αναφέρονται οι “p” και “q” στην ίδια διεύθυνση μνήμης ή όχι; Η “x” έχει δηλωθεί πριν από τη χρήση της ή όχι;

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 33

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Σημασιολογική ανάλυση ΙΙΙ Όταν οι προαναφερόμενοι έλεγχοι βασίζονται σε πληροφορίες που

γίνονται διαθέσιμες κατά τη μεταγλώττιση, τότε λέμε ότι σχετίζονται με τη στατική σημασία του προγράμματος.

Όταν βασίζονται σε πληροφορίες που γίνονται διαθέσιμες κατά την εκτέλεση, τότε λέμε ότι σχετίζονται με τη δυναμική σημασία του προγράμματος.

Γλώσσες όπως η Lisp και η Smalltalk διεξάγουν σχεδόν το σύνολο της σημασιολογικής ανάλυσης κατά την εκτέλεση του προγράμματος. Γλώσσες όπως η Ada έχουν ιδιαίτερα αυξημένες απαιτήσεις στατικού σημασιολογικού ελέγχου. Η Pascal και η C θα μπορούσαν να ενταχθούν κάπου μεταξύ των δύο προαναφερόμενων περιπτώσεων.

Στη συνέχεια θα ασχοληθούμε με τεχνικές που έχουν εφαρμοσθεί με επιτυχία στον έλεγχο της στατικής σημασίας των γλωσσών.

Τα αποτελέσματα των ελέγχων αυτών εξαρτώνται από συγκεκριμένες ιδιότητες των λεξικών μονάδων, όπως π.χ. ο τύπος

και η τιμή ενός ονόματος κ.α. από πληροφορίες που δε συνοδεύουν τη λεξική μονάδα στο σημείο της

εμφάνισής της (π.χ. δηλώσεις μεταβλητών, συναρτήσεων κ.α.) από υπολογισμούς που ίσως χρειάζεται να γίνουν

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 44

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Σημασιολογική ανάλυση ΙV Για τη σημασιολογική ανάλυση δεν υπάρχουν τυποποιημένες τεχνικές

όπως στη συντακτική ανάλυση που να εφαρμόζονται σε όλες τις περιπτώσεις.

Εναλλακτικές προσεγγίσεις: Περιγραφή της σημασιολογικής ανάλυσης με γραμματική ιδιοτήτων Περιγραφή της σημασιολογικής ανάλυσης με ένα σχήμα μετάφρασης Απευθείας υλοποίηση της σημασιολογικής ανάλυσης με αξιοποίηση των

δυνατοτήτων του byacc (εκτέλεση ενεργειών κάθε φορά που γίνεται απλοποίηση σύμφωνα με συγκεκριμένο κανόνα) και του πίνακα συμβόλων

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

Όλες οι προαναφερόμενες τεχνικές λέμε ότι αποδίδουν μία μετάφραση με βάση τη σύνταξη.

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

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 55

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

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

Στη δεύτερη και στην τρίτη προσέγγιση η σειρά εκτέλεσης των ενεργειών της μετάφρασης καθορίζεται αυστηρά από τον αλγόριθμο της συντακτικής ανάλυσης που χρησιμοποιείται.

Όταν ο μεταγλωττιστής είναι μιας μόνο σάρωσης, τότε η σημασιολογική ανάλυσης γίνεται ταυτόχρονα με τη συντακτική ανάλυση.

Όταν χρειάζεται να γίνουν περίπλοκοι σημασιολογικοί έλεγχοι τότε είναι δύσκολη η κατασκευή μεταγλωττιστή μιας μόνο σάρωσης, λόγω των σύνθετων εξαρτήσεων μεταξύ των ιδιοτήτων.

Έτσι, οι μεταγλωττιστές πολλαπλής σάρωσης αν και δε μπορούν να αποδώσουν το ίδιο γρήγορη μεταγλώττιση, έχουν περιθώρια διενέργειας πιο περίπλοκων σημασιολογικών ελέγχων.

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 66

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Γραμματικές ιδιοτήτων ΙΤι είναι μία γραμματική ιδιοτήτων; Γραμματική ιδιοτήτων είναι μία γραμματική χωρίς συμφραζόμενα,

που συνοδεύεται από σημασιολογικούς κανόνες ή αλλιώς εξισώσεις ιδιοτήτων

Κάθε σύμβολο σε κανόνα παραγωγής συνοδεύεται από ένα σύνολο τιμών, τις αποκαλούμενες ιδιότητες.

Οι εξισώσεις ιδιοτήτων περιγράφουν το πως υπολογίζονται οι τιμές των ιδιοτήτων των συμβόλων.

ΠΑΡΑΔΕΙΓΜΑ:S EE E + T

| E – T  | TT T * F

| T / F| F

F num

Έστω ότι θέλουμε να κατασκευάσουμε ένα διερμηνευτή αριθμητικών εκφράσεων.

Ένας τρόπος είναι να επισυνάψουμε στη γραμματική του σχήματος εξισώσεις ιδιοτήτων που περιγράφουν το πως γίνεται ο υπολογισμός της τιμής των συντακτικά ορθών εκφράσεων.

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 77

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Γραμματικές ιδιοτήτων ΙΙΠαραγωγές Εξισώσεις ιδιοτήτων

S E S.val E.valE0 E1 + T E0.val E1.val + T.val

| E1 – T E0.val E1.val – T.val  | T E0.val T.valT0 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 παίρνει τιμή από το λεξικό αναλυτή

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 88

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Γραμματικές ιδιοτήτων ΙΙΙ

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

TE -

F

num

T

FF

T

ΣΥΜΒΟΛΟΣΕΙΡΑ: “10 – 2 * 3”

S

*

numnum val = 2

val = 3

val = 10

val = 10

val = 10

val = 10

val = 2

val = 3

val = 2

val = 2 * 3 = 6

val = 10 – 4 = 4

Παράγωγο δένδρο με σχόλια(υπολογισμός τιμών ιδιοτήτων)

τόξα εξάρτησης

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 99

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Γραμματικές ιδιοτήτων ΙV Οι ιδιότητες «συνοδεύουν» τους αντίστοιχους κόμβους στο παράγωγο

δένδρο (τερματικά και μη τερματικά) Οι κανόνες παραγωγής συνοδεύονται από εξισώσεις που καθορίζουν

τον τρόπο υπολογισμού των τιμών των ιδιοτήτων Όταν σε ένα κανόνα το ίδιο σύμβολο εμφανίζεται περισσότερες από

μία φορές, τότε για να ξεχωρίσουμε την κάθε εμφάνιση χρησιμοποιούμε δείκτες, δηλ.

ο E E + T γίνεται E0 E1 + T

Οι εξισώσεις μαζί με το παράγωγο δένδρο ορίζουν ένα γράφο εξάρτησης τιμών

Ο γράφος αυτός για να έχει νόημα πρέπει να είναι μη κυκλικός

Συνθέσιμες ιδιότητες Η τιμή τους εξαρτάται μόνο από απογόνους

Κληρονομήσιμες ιδιότητες Η τιμή τους εξαρτάται από αδελφούς κόμβους ή προγόνους

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1010

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Γραμματικές ιδιοτήτων 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 ]

παραγωγή εξίσωση ιδιοτήτων

παραγωγή

παραγωγή

εξίσωση ιδιοτήτων

εξίσωση ιδιοτήτων

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1111

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Γραμματικές ιδιοτήτων VΙΠΑΡΑΔΕΙΓΜΑ:

Number Sign ListSign + 

| -List List Bit 

| BitBit 0 

| 1

Η γραμματική αυτή περιγράφει τη σύνταξη δυαδικών αριθμών με πρόσημο

Θέλουμε να ορίσουμε τις κατάλληλες εξισώσεις ιδιοτήτων για τον υπολογισμό της δεκαδικής τιμής των συντακτικά ορθών συμβολοσειρών

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1212

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Γραμματικές ιδιοτήτων VΙΙ

Number Sign List

Sign Bit

Sign 1

- 1

Number

List

Bit

1

Sign

-

για τη “-1”

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

ListSign

- Bit

1

List

Bit

0

List

Bit

1

για τη “-101”

ΠΑΡΑΔΕΙΓΜΑΤΑ ΑΝΑΛΥΣΗΣ:

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1313

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Γραμματικές ιδιοτήτων VΙΙΙ

Σημασιολογικοί κανόνες (εξισώσεις ιδιοτήτων) για τον υπολογισμό της δεκαδικής τιμής ενός δυαδικού αριθμού με πρόσημο

Παραγωγές Κανόνες Number Sign List List.pos 0

If Sign.neg then Number.val - List.val else Number.val List.val

Sign + Sign.neg false | - Sign.neg true List0

List1 Bit List1.pos List0.pos + 1 Bit.pos List0.pos List0.val List1.val + Bit.val

| Bit Bit.pos List.pos List.val Bit.val

Bit 0 Bit.val 0 | 1 Bit.val 2Bit.pοs

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1414

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Γραμματικές ιδιοτήτων ΙΧ

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για τη “-1”

Μία πιθανή σειρά εκτέλεσης των υπολογισμών:

1 List.pos

2 Sign.neg

3 Bit.pos

4 Bit.val

5 List.val

6 Number.val

Όχι εφικτός ο υπολογισμός με μία μόνο διάσχιση του δένδρου.

Θα μπορούσαν να υπάρξουν και άλλες περιπτώσεις εκτέλεσης των υπολογισμών

Σειρά υπολογισμού τιμών:

• Πρώτα υπολογίζονται αυτές που δεν εξαρτώνται από άλλες

• Υπολογίζονται οι υπόλοιπες με τη σειρά που οι τιμές από τις οποίες εξαρτώνται γίνονται διαθέσιμες

Η σειρά εκτέλεσης των υπολογισμών πρέπει να είναι συμβατή με το γράφο εξάρτησης

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1515

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Γραμματικές ιδιοτήτων Χ

Στο σχήμα απεικονίζεται ο γράφος εξάρτησης τιμών για τη “-101”......

μαζί με το παράγωγο δένδρο.

Μερικές εξαρτήσεις έχουν διεύθυνση από πάνω προς τα κάτω (ή από το πλάϊ) κληρονομήσιμες ιδιότητες

Μερικές εξαρτήσεις έχουν διεύθυνση από κάτω προς τα πάνω συνθέσιμες ιδιότητες

Number

Sign

-

List

Bit

1

List

Bit

0

List

Bit

1

pos: 0val: 1

pos: 2val: 4

pos: 1val: 0

pos: 2val: 4

pos: 1val: 4

pos: 0val: 5

val: -5

neg: true

για τη “-101”

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1616

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Γραμματικές ιδιοτήτων ΧIΜΕΘΟΔΟΙ ΣΗΜΑΣΙΟΛΟΓΙΚΟΥ ΕΛΕΓΧΟΥ:

Μέθοδοι που βασίζονται σε γράφο με κόμβους που αντιστοιχούν στα σύμβολα του δένδρου

• Κατασκευή παράγωγου δένδρου

• Κατασκευή γράφου εξάρτησης τιμών

• Τοπολογική ταξινόμηση των κορυφών του γράφου

• Υπολογισμός των τιμών με τη σειρά της τοπολογικής ταξινόμησης (που καθορίζεται κατά τη μεταγλώττιση)

Μέθοδοι βασιζόμενοι σε κανόνες

• Ανάλυση των σημασιολογικών κανόνων τη στιγμή της δημιουργίας του μεταγλωττιστή

• Καθορισμός μιας standard σειράς εκτέλεσης των υπολογισμών

• Υπολογισμός των τιμών σύμφωνα με αυτή τη σειρά για όλες τις συμβολοσειρές της γλώσσας

Μέθοδοι που η σειρά εκτέλεσης των υπολογισμών καθορίζεται χωρίς να λαμβάνονται υπόψη οι εξαρτήσεις ιδιοτήτων: συνήθως η σειρά εκτέλεσης είναι αυτή που υπαγορεύεται από τον αλγόριθμο συντακτικής ανάλυσης (byacc)

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1717

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Γραμματικές ιδιοτήτων ΧII

Number

Sign List

BitList

BitList

Bit

-

1

0

1

pos: 1val: 0

pos: 0val: 1

pos: 2val: 4

pos: 2val: 4

pos: 1val: 4

pos: 0val: 5

val: -5

neg: true

για “-101”

αφαιρέσουμε το παράγωγο δένδρο ...

Αν από το προηγούμενο παράδειγμα

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1818

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Γραμματικές ιδιοτήτων ΧIIΙ

pos: 1val: 0

pos: 0val: 1

pos: 2val: 4

pos: 2val: 4

pos: 1val: 4

pos: 0val: 5

val: -5

neg: true

για την “-101”

Ο γράφος που προκύπτει εκφράζει τις εξαρτήσεις τιμών για τη συγκεκριμένη περίπτωση συμβολοσειράς.

Η πρώτη κατηγορία των μεθόδων σημασιολογικού ελέγχου εκτελεί τους υπολογισμούς αρχής γινομένης από τις ανεξάρτητες τιμές και προχωράει σύμφωνα με τα τόξα εξάρτησης,

Οι μέθοδοι που βασίζονται σε κανόνες προσπαθούν να ανιχνεύσουν τη σειρά εκτέλεσης των υπολογισμών τη στιγμή της δημιουργίας του μεταγλωττιστή. Για το σκοπό αυτό αναλύουν τους σημασιολογικούς κανόνες.

Όλες οι άλλες μέθοδοι αγνοούν τη δομή του γράφου.

Ο γράφος εξάρτησης πρέπει να είναι μη κυκλικός

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1919

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Γραμματικές ιδιοτήτων ΧΙV

• Ένας γράφος εξάρτησης τιμών λέμε ότι είναι κυκλικός αν περιέχει κύκλο.

• Μία γραμματική ιδιοτήτων λέμε ότι είναι μη κυκλική αν δεν υπάρχει παράγωγο δένδρο με κύκλο εξάρτησης τιμών των ιδιοτήτων των κόμβων του. Αν υπάρχει κύκλος, τότε δε μπορεί να καθορισθεί η σειρά υπολογισμού των τιμών.

• Ο έλεγχος του αν μία γραμματική ιδιοτήτων είναι μη κυκλική χαρακτηρίζεται από εκθετική πολυπλοκότητα. Εναλλακτικά, ελέγχεται αν η γραμματική είναι “ισχυρά μη κυκλική”, μία ιδιότητα λιγότερο γενική από τη μη κυκλικότητα.

• Ο έλεγχος του αν μία γραμματική είναι ισχυρά μη κυκλική μπορεί να γίνει σε πολυωνυμικό χρόνο και αν αυτό ισχύει, τότε μπορεί να σχεδιασθεί ένας αναδρομικός αλγόριθμος μετάφρασης, δηλαδή υπολογισμού τιμών, κατά τη δημιουργία του μεταγλωττιστή.

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 2020

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

S-Γραμματικές ιδιοτήτων I

Μία γραμματική που χρησιμοποιεί αποκλειστικά συνθέσιμες ιδιότητες ονομάζεται S-γραμματική ιδιοτήτων

Στις S-γραμματικές ιδιοτήτων μπορεί να γίνει ο υπολογισμός όλων των τιμών σε ένα μόνο ανοδικό πέρασμα του δένδρου

Άρα οι S-γραμματικές ιδιοτήτων μπορούν εύκολα να χρησιμοποιηθούν με αλγορίθμους ανάλυσης LR ως εξής

Αποθηκεύονται οι ιδιότητες των συμβόλων στη στοίβα της ανάλυσης

Όταν γίνεται απλοποίηση τότε Τα σύμβολα του δεξιού μέρους της παραγωγής και οι ιδιότητές τους

βρίσκονται ήδη στη στοίβα Υπολογίζονται οι συνθέσιμες ιδιότητες του συμβόλου του αριστερού

μέρους χρησιμοποιώντας τις τιμές των συμβόλων του δεξιού μέρους

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 2121

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

S-Γραμματικές ιδιοτήτων IΙ

Παραγωγή

E0 E1 + T

Σημασιολογικός κανόνας

E0.val E1.val + T.val

E1

+

T T.val

E1.val

κορυφή στοίβας ανάλυσης

E0 E0.val

μετά από την απλοποίηση

κορυφή στοίβας ανάλυσης

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 2222

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

L-Γραμματικές ιδιοτήτων Ι Αν η κληρονομήσιμη ιδιότητα ενός συμβόλου υπολογίζεται με βάση

τιμές από πρόγονο ή/και από σύμβολα που βρίσκονται στον κανόνα αριστερά του, τότε η γραμματική αυτή ονομάζεται 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 για τη ρίζα του δένδρου

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 2323

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

L-Γραμματικές ιδιοτήτων ΙΙ Μπορούμε να κάνουμε μετάφραση L-γραμματικών ιδιοτήτων με

καθοδική ανάλυση αν η γραμματική χωρίς συμφραζόμενα είναι LL(1) Μπορούμε να επεκτείνουμε έναν αναλυτή προβλέπουσας αναδρομικής

κατάβασης με σημασιολογικούς κανόνες, έτσι να υπολογίζονται οι τιμές των ιδιοτήτων παράλληλα με την ανάλυση της εισόδου

Οι ανοδικοί LR αναλυτές μπορούν να εκτελέσουν μετάφραση L-γραμματικών ιδιοτήτων χρησιμοποιώντας μη τερματικά σύμβολα σήμανσης (τα εισάγουμε όπου εξυπηρετεί ενδιάμεσα, στο δεξί μέρος των κανόνων), που είναι απαλείψιμα (έχουν παραγωγή που οδηγεί σε ε)

Τα μη τερματικά σύμβολα σήμανσης χρησιμοποιούνται για την εκτέλεση ενεργειών «περάσματος» κληρονομήσιμων τιμών στη στοίβα της ανάλυσης

Οι ανοδικοί αναλυτές μπορούν με ασφάλεια να χρησιμοποιήσουν το προαναφερόμενο τέχνασμα για τη μετάφραση L-γραμματικών ιδιοτήτων όπου η γραμματική είναι LL(1)

Σε όλες τις άλλες περιπτώσεις μπορεί ο προαναφερόμενος μετασχηματισμός της γραμματικής να προκαλέσει συγκρούσεις ώθησης – απλοποίησης

Στο byacc το τέχνασμα αυτό εφαρμόζεται με χρήση “embedded actions” (περισσότερες λεπτομέρειες στα manuals & σελ. 203 του βιβλίου)

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 2424

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Σχήματα μετάφρασης Ι Στις γραμματικές ιδιοτήτων δε διατυπώνεται η σειρά

υπολογισμού τιμών ιδιοτήτων των συμβόλων. Οι εξισώσεις ιδιοτήτων επισυνάπτονται στα δεξιά των κανόνων

παραγωγής Στην πιο γενική περίπτωση, για τον καθορισμό της σειράς

υπολογισμού των τιμών απαιτείται η δημιουργία ενός γράφου εξάρτησης τιμών

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

Μία κληρονομήσιμη ιδιότητα ενός συμβόλου του δεξιού μέρους πρέπει να έχει υπολογισθεί σε ενέργεια πριν από αυτό το σύμβολο

Μία ενέργεια δεν πρέπει να αναφέρεται σε συνθέσιμη ιδιότητα συμβόλου που βρίσκεται δεξιά της ενέργειας

Μία συνθέσιμη ιδιότητα για το μη τερματικό σύμβολο του αριστερού μέρους μπορεί να υπολογισθεί μόνο μετά τον υπολογισμό όλων των ιδιοτήτων στις οποίες αναφέρεται (την τοποθετούμε στο τέλος του δεξιού μέρους του κανόνα)

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 2525

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Σχήματα μετάφρασης ΙΙ

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)

Καταχώρηση μεταβλητών στον πίνακα συμβόλων.Από θεωρητικής απόψεως αυτός ο κανόνας δεν επιτρέπεται σε μία γραμματική ιδιοτήτων. Μιλάμε για μία ad hoc μετάφραση.

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) }

Παραγωγές Σημασιολογικοί κανόνες

Σχήμα μετάφρασης: Οι σημασιολογικές ενέργειες τοποθετούνται στα δεξιά μέρη των παραγωγώνκαθορίζοντας τη σειρά εκτέλεσής τους.

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 2626

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Σχήματα μετάφρασης ΙΙΙΠΑΡΑΔΕΙΓΜΑ:

Το σχήμα μετάφρασης, που ακολουθεί, μετατρέπει αριθμητικές εκφράσεις ένθετης μορφής στην αντίστοιχη επιθεματική μορφή. Έτσι, η μετάφραση της έκφρασης,

((a+b)*c)/(d-e*f)+3

δίνει ως αποτέλεσμα την ab+c*def*-/3+

έκφραση = όρος υπ_όροι.υπ_όροι = “+” όρος {print(“+”.λεξ_μονάδα)} υπ_όροιR

| “-” όρος {print(“-”.λεξ_μονάδα)} υπ_όροιR

| ε.όρος = παράγοντας υπ_παραγ.υπ_παραγ = “*” παράγοντας {print(“*”.λεξ_μονάδα)} υπ_παραγR

| “/” παράγοντας {print(“/”.λεξ_μονάδα)} υπ_παραγR

| ε.παράγοντας = “(” έκφραση “)”

| “αριθμός” {print(“αριθμός ”.τιμή)}.

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 2727

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Παράδειγμα γραμματικής ιδιοτήτων: συντακτικό δένδρο

Γραμματική ιδιοτήτων για την ανάπτυξη του συντακτικού δένδρου των εκφράσεων.

ιδιότητα 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) ]

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 2828

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Παράδειγμα γραμματικής ιδιοτήτων: έλεγχος τύπων I βασικοί τύποι (λογικός τύπος, ακέραιοι, πραγματικοί κ.α.)

και οριζόμενοι από τον προγραμματιστή, που μπορούν να έχουν το δικό τους όνομα

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

τύπος πίνακα: array(index_type, component_type) εγγραφή από δύο πεδία: type1 x type2

δείκτης: pointer(type) συνάρτηση πρόσθεσης δύο αριθμών: int x int

int

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 2929

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Παράδειγμα γραμματικής ιδιοτήτων: έλεγχος τύπων II έλεγχος συνέπειας τύπων:

υλοποιείται με μία ανοδική διάσχιση του συντακτικού δένδρου όπου οι τύποι των φύλλων (ονόματα, σταθερές) εξετάζονται με βάση τις αντίστοιχες δηλώσεις τους στον πίνακα συμβόλωνγια κάθε κόμβο που αντιστοιχεί σε τελεστή γίνεται έλεγχος αν οι τύποι των υποδένδρων είναι επιτρεπτοί για τη συγκεκριμένη πράξη

ονομαστική ισοδυναμία τύπων: πολύ περιοριστικήtype my_int = integer;

var x: integer;

y: my_int;

x:=y; δομικά ισοδύναμες εκφράσεις: ανν είναι του ίδιου βασικού

τύπου ή οι τύποι τους προκύπτουν μετά από εφαρμογή του ίδιου δομητή σε δομικά ισοδύναμους τύπους

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 3030

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Παράδειγμα γραμματικής ιδιοτήτων: δηλώσεις τύπωνδηλώσεις μεταβλητών – δείκτη και πινάκων

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.in))]varlist = “*” “ID”. [ addtype(ID.entry, pointer(varlist.in)) ]

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 3131

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Παράδειγμα σχήματος μετάφρασης: έλεγχος τύπων αριθμητικών εκφράσεων

Ε = “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.type = “type error”; }

E = “*” ER. {αν (ER.type = = pointer(b_type)) τότεE.type = b_type;

αλλιώςE.type = “type error”; }

E = E1 “= =” E2 . {αν (E1.type = = E2.type) τότεE.type = “boolean”;

αλλιώςE.type = “type error”; }

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 3232

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

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

- αρχεία, συσκευές- μακροεντολές

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

Ο μεταγλωττιστής συνδέει τα ονόματα των οντοτήτων με τις ιδιότητές τους μέσω μιας δομής που ονομάζεται κόμβος συμβόλου: εγγραφή που ως πεδία έχει τις ιδιότητες της οντότητας.

Οι κόμβοι συμβόλων αποτελούν μέρος ενός πίνακα συμβόλων.

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 3333

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Πίνακας συμβόλων ΙΙ Ο πίνακας συμβόλων σχηματίζεται κατά τη συντακτική

ανάλυση και χρησιμοποιείται ξανά κατά το στατικό σημασιολογικό έλεγχο, τη δέσμευση χώρου μνήμης και τη δημιουργία κώδικα.

Παραμένει στην κύρια μνήμη για να χρησιμοποιηθεί σε κάθε μία από τις προαναφερθείσες επεξεργασίες.

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

Ο πίνακας συμβόλων πρέπει να επιτρέπει την ταχεία προσπέλαση των καταχωρήσεων.

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 3434

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Πίνακας συμβόλων ΙΙΙΛειτουργίες που πρέπει να υποστηρίζει ένας πίνακας συμβόλων: Δημιουργία πίνακα Αναζήτηση κάποιου κόμβου συμβόλου στον πίνακα Εισαγωγή νέου κόμβου Διαγραφή ενός κόμβου Καταστροφή του πίνακα

Η δομή του πίνακα συμβόλων σχεδιάζεται έτσι ώστε να υπάρχει η δυνατότητα αποθήκευσης των ιδιοτήτων, για κάθε τύπο καταχώρησης:

δηλώσεις σταθερών δηλώσεις τύπων δηλώσεις μεταβλητών δηλώσεις συναρτήσεων

Πιθανό να επιλέγεται η χρήση περισσοτέρων του ενός πίνακα συμβόλων.

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 3535

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Πίνακας συμβόλων ΙVΟργάνωση πίνακα συμβόλων: ταχύτητα προσπέλασης καταχωρήσεων ευκολία εισαγωγής ή διαγραφής κόμβου συμβόλου διαχείριση επιπρόσθετων απαιτήσεων μνήμης

Οργάνωση ακολουθίας: σύμφωνα με χρονική σειρά αφίξεως κόμβων

πλήθος αναζητήσεων Μ.Ο. (n+1)/2 για επιτυχείς

n για ανεπιτυχείς αναζητήσεις

εισαγωγή στην n+1 θέσηδιαγραφή από τη θέση q: μετακίνηση από την q+1 ως

την n

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 3636

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Πίνακας συμβόλων V

Σειριακή οργάνωση: αλφαβητικά

πλήθος αναζητήσεων Μ.Ο. log2 n για ανεπιτυχείς και επιτυχείς αναζητήσεις

εισαγωγή σημαντικό κόστος

διαγραφή: απαιτείται μετατόπιση

Δενδρικές δομές: δυαδικά δένδρα αναζήτησης

Πιο διαδεδομένη οργάνωση: πίνακας κατακερματισμού (Hash):

απαρτίζεται από ένα σύνολο θέσεων υποδοχής αριθμημένες

από το 0 μέχρι το μέγεθος του πίνακα μείον ένα

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 3737

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Πίνακας συμβόλων VΙ

Πιο διαδεδομένη οργάνωση: πίνακας κατακερματισμού (Hash):μία συνάρτηση Hash μετατρέπει τη συμβολοσειρά του ονόματος σε μία ακέραιη τιμή που κυμαίνεται στα όρια του μεγέθους του πίνακαοι καταχωρήσεις θα πρέπει να κατανέμονται όσο το δυνατό περισσότερο ομοιόμορφαδιαχείριση συγκρούσεων: 1. ανοικτό Hash2. αλυσίδες συνδέσμων

αν a= n/m όπου m ο αριθμός θέσεων του πίνακα τότε για την περίπτωση 2 ο μέσος αριθμός αναζητήσεων είναι1 + a/2 για επιτυχείς αναζητήσειςa + e-a για ανεπιτυχείς αναζητήσεις

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 3838

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Πίνακας συμβόλων VΙΙ

0

1

2

3

4

5

6

7

8

9

1 0

11

i

tem p

j

k

s ize

θ έσ εις υ π ο δ ο χή ς α λ υ σ ίδ ες σ υ νδ έσ μ ω ν

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

Παρασκευή, 21 Απριλίου 2023Παρασκευή, 21 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 3939

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Πίνακας συμβόλων VI