£·¼±ƒ¹»³¹®...

Click here to load reader

download £·¼±ƒ¹»³¹® ±½¬»…ƒ· ™

of 39

  • date post

    14-Jan-2016
  • Category

    Documents

  • view

    46
  • download

    0

Embed Size (px)

description

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

Transcript of £·¼±ƒ¹»³¹®...

Διαφνειες στη Θεωρα ΑλγορθμωνΣημασιολογικ ανλυση Ι
Εκτς απ τη συντακτικ ορθτητα ενς προγρμματος μας ενδιαφρει και η εκτλεση κποιων λλων ελγχων, που δυστυχς δεν εναι δυνατ να περιγραφον απ μια γραμματικ χωρς συμφραζμενα:
fie(a,b,c,d)
{ … }
char *p;
k = f * i + j;
p = 10;
λθος αριθμς παραμτρων στη fie()
η παρμετρος “ab” δεν εναι int
λθος στη χρση της μεταβλητς f
δεν χει δηλωθε η q
το 10 δεν εναι συμβολοσειρ
λοι αυτο οι λεγχοι δεν μπορον να γνουν απ τη συντακτικ ανλυση.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Σημασιολογικ ανλυση ΙΙ
Γενικ για τη δημιουργα κδικα πρπει να απαντηθον τα ακλουθα:
Εναι το “x” βαθμωτο τπου, πνακας συνρτηση; χει δηλωθε η “x”;
Υπρχουν ονματα που χουν δηλωθε αλλ δεν χρησιμοποιονται;
Ποια απ τις δηλσεις του “x” χρησιμοποιεται ταν γνεται αναφορ σε αυτ;
Εναι η κφραση “x * y + z” σωστ σε τι αφορ τον λεγχο τπων των ονομτων;
Στην “a[i,j,k]”, χει πργματι δηλωθε το a ως πνακας τριν διαστσεων;
Τη μεταβλητ εναι η “z”; (ολικ, τοπικ, static)
Πσες παραμτρους δχεται η συνρτηση “fie()”;
Η “*p” αναφρεται πργματι στο αποτλεσμα μιας “malloc()”;
Αναφρονται οι “p” και “q” στην δια διεθυνση μνμης χι;
Η “x” χει δηλωθε πριν απ τη χρση της χι;
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Σημασιολογικ ανλυση ΙΙΙ
ταν οι προαναφερμενοι λεγχοι βασζονται σε πληροφορες που γνονται διαθσιμες κατ τη μεταγλττιση, ττε λμε τι σχετζονται με τη στατικ σημασα του προγρμματος.
ταν βασζονται σε πληροφορες που γνονται διαθσιμες κατ την εκτλεση, ττε λμε τι σχετζονται με τη δυναμικ σημασα του προγρμματος.
Γλσσες πως η Lisp και η Smalltalk διεξγουν σχεδν το σνολο της σημασιολογικς ανλυσης κατ την εκτλεση του προγρμματος. Γλσσες πως η Ada χουν ιδιατερα αυξημνες απαιτσεις στατικο σημασιολογικο ελγχου. Η Pascal και η C θα μποροσαν να ενταχθον κπου μεταξ των δο προαναφερμενων περιπτσεων.
Στη συνχεια θα ασχοληθομε με τεχνικς που χουν εφαρμοσθε με επιτυχα στον λεγχο της στατικς σημασας των γλωσσν.
Τα αποτελσματα των ελγχων αυτν εξαρτνται
απ συγκεκριμνες ιδιτητες των λεξικν μονδων, πως π.χ. ο τπος και η τιμ ενς ονματος κ.α.
απ πληροφορες που δε συνοδεουν τη λεξικ μονδα στο σημεο της εμφνισς της (π.χ. δηλσεις μεταβλητν, συναρτσεων κ.α.)
απ υπολογισμος που σως χρειζεται να γνουν
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Σημασιολογικ ανλυση ΙV
Για τη σημασιολογικ ανλυση δεν υπρχουν τυποποιημνες τεχνικς πως στη συντακτικ ανλυση που να εφαρμζονται σε λες τις περιπτσεις.
Εναλλακτικς προσεγγσεις:
Περιγραφ της σημασιολογικς ανλυσης με να σχμα μετφρασης
Απευθεας υλοποηση της σημασιολογικς ανλυσης με αξιοποηση των δυνατοττων του byacc (εκτλεση ενεργειν κθε φορ που γνεται απλοποηση σμφωνα με συγκεκριμνο καννα) και του πνακα συμβλων
Στην υλοποηση της γλσσας YAPL του βιβλου σας χρησιμοποισαμε την τελευταα προσγγιση και ορσαμε κποιες σνθετες δομς δεδομνων, που σε συνδυασμ με μα στοβα ανλυσης (που συντηρομε) και τον πνακα συμβλων διεξγουν τους επιθυμητος ελγχους.
λες οι προαναφερμενες τεχνικς λμε τι αποδδουν μα μετφραση με βση τη σνταξη.
ταν γνεται χρση γραμματικς ιδιοττων πρπει να υπολογισθε η σειρ εκτλεσης των ενεργειν της μετφρασης. Αυτ καθορζεται απ την τοπολογικ ταξινμηση ενς γρφου εξρτησης ιδιοττων.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Σημασιολογικ ανλυση V
Στη δετερη και στην τρτη προσγγιση η σειρ εκτλεσης των ενεργειν της μετφρασης καθορζεται αυστηρ απ τον αλγριθμο της συντακτικς ανλυσης που χρησιμοποιεται.
ταν ο μεταγλωττιστς εναι μιας μνο σρωσης, ττε η σημασιολογικ ανλυσης γνεται ταυτχρονα με τη συντακτικ ανλυση.
ταν χρειζεται να γνουν περπλοκοι σημασιολογικο λεγχοι ττε εναι δσκολη η κατασκευ μεταγλωττιστ μιας μνο σρωσης, λγω των σνθετων εξαρτσεων μεταξ των ιδιοττων.
τσι, οι μεταγλωττιστς πολλαπλς σρωσης αν και δε μπορον να αποδσουν το διο γργορη μεταγλττιση, χουν περιθρια διενργειας πιο περπλοκων σημασιολογικν ελγχων.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Γραμματικς ιδιοττων Ι
Γραμματικ ιδιοττων εναι μα γραμματικ χωρς συμφραζμενα, που συνοδεεται απ σημασιολογικος καννες αλλις εξισσεις ιδιοττων
Κθε σμβολο σε καννα παραγωγς συνοδεεται απ να σνολο τιμν, τις αποκαλομενες ιδιτητες.
Οι εξισσεις ιδιοττων περιγρφουν το πως υπολογζονται οι τιμς των ιδιοττων των συμβλων.
ΠΑΡΑΔΕΙΓΜΑ:
στω τι θλουμε να κατασκευσουμε να διερμηνευτ αριθμητικν εκφρσεων.
νας τρπος εναι να επισυνψουμε στη γραμματικ του σχματος εξισσεις ιδιοττων που περιγρφουν το πως γνεται ο υπολογισμς της τιμς των συντακτικ ορθν εκφρσεων.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Γραμματικς ιδιοττων ΙΙ
Παραγωγς Εξισσεις ιδιοττων
| E1 – T E0.val E1.val – T.val
  | T E0.val T.val
| T1 / F T0.val T1.val / F.val
| F T0.val F.val
Στη συγκεκριμνη γραμματικ ιδιοττων οι ιδιτητες των συμβλων του αριστερο
μρους υπολογζονται με βση τις ιδιτητες των συμβλων του δεξιο μρους
(ονομζονται συνθσιμες ιδιτητες)
Το τερματικ σμβολο num παρνει τιμ απ το λεξικ αναλυτ
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Γραμματικς ιδιοττων ΙΙΙ
S E – T
Γραμματικς ιδιοττων ΙV
Οι ιδιτητες «συνοδεουν» τους αντστοιχους κμβους στο παργωγο δνδρο (τερματικ και μη τερματικ)
Οι καννες παραγωγς συνοδεονται απ εξισσεις που καθορζουν τον τρπο υπολογισμο των τιμν των ιδιοττων
ταν σε να καννα το διο σμβολο εμφανζεται περισστερες απ μα φορς, ττε για να ξεχωρσουμε την κθε εμφνιση χρησιμοποιομε δεκτες, δηλ.
ο E E + T γνεται E0 E1 + T
Οι εξισσεις μαζ με το παργωγο δνδρο ορζουν να γρφο εξρτησης τιμν
Ο γρφος αυτς για να χει νημα πρπει να εναι μη κυκλικς
Συνθσιμες ιδιτητες
Κληρονομσιμες ιδιτητες
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Γραμματικς ιδιοττων 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 ]
παραγωγ
Γραμματικς ιδιοττων VΙ
Η γραμματικ αυτ περιγρφει τη σνταξη δυαδικν αριθμν με πρσημο
Θλουμε να ορσουμε τις κατλληλες εξισσεις ιδιοττων για τον υπολογισμ της δεκαδικς τιμς των συντακτικ ορθν συμβολοσειρν
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Γραμματικς ιδιοττων VΙΙ
Γραμματικς ιδιοττων VΙΙΙ
Παραγωγς
Καννες
Number
Γραμματικς ιδιοττων ΙΧ
List.pos
Sign.neg
Bit.pos
Bit.val
List.val
Number.val
χι εφικτς ο υπολογισμς με μα μνο δισχιση του δνδρου.
Θα μποροσαν να υπρξουν και λλες περιπτσεις εκτλεσης των υπολογισμν
Σειρ υπολογισμο τιμν:
Πρτα υπολογζονται αυτς που δεν εξαρτνται απ λλες
Υπολογζονται οι υπλοιπες με τη σειρ που οι τιμς απ τις οποες εξαρτνται γνονται διαθσιμες
Η σειρ εκτλεσης των υπολογισμν πρπει να εναι συμβατ με το γρφο εξρτησης
List
Bit
1
Number
Sign
Γραμματικς ιδιοττων Χ
Στο σχμα απεικονζεται ο γρφος εξρτησης τιμν για τη “-101”......
μαζ με το παργωγο δνδρο.
Μερικς εξαρτσεις χουν διεθυνση απ πνω προς τα κτω ( απ το πλ)
κληρονομσιμες ιδιτητες
συνθσιμες ιδιτητες
Γραμματικς ιδιοττων ΧI
ΜΕΘΟΔΟΙ ΣΗΜΑΣΙΟΛΟΓΙΚΟΥ ΕΛΕΓΧΟΥ:
Μθοδοι που βασζονται σε γρφο με κμβους που αντιστοιχον στα σμβολα του δνδρου
Κατασκευ παργωγου δνδρου
Τοπολογικ ταξινμηση των κορυφν του γρφου
Υπολογισμς των τιμν με τη σειρ της τοπολογικς ταξινμησης (που καθορζεται κατ τη μεταγλττιση)
Μθοδοι βασιζμενοι σε καννες
Ανλυση των σημασιολογικν καννων τη στιγμ της δημιουργας του μεταγλωττιστ
Καθορισμς μιας standard σειρς εκτλεσης των υπολογισμν
Υπολογισμς των τιμν σμφωνα με αυτ τη σειρ για λες τις συμβολοσειρς της γλσσας
Μθοδοι που η σειρ εκτλεσης των υπολογισμν καθορζεται χωρς να λαμβνονται υπψη οι εξαρτσεις ιδιοττων: συνθως η σειρ εκτλεσης εναι αυτ που υπαγορεεται απ τον αλγριθμο συντακτικς ανλυσης (byacc)
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Γραμματικς ιδιοττων ΧII
Number
Sign
List
Bit
List
Bit
List
Bit
Γραμματικς ιδιοττων ΧIIΙ
για την “-101”
Ο γρφος που προκπτει εκφρζει τις εξαρτσεις τιμν για τη συγκεκριμνη περπτωση συμβολοσειρς.
Η πρτη κατηγορα των μεθδων σημασιολογικο ελγχου εκτελε τους υπολογισμος αρχς γινομνης απ τις ανεξρτητες τιμς και προχωρει σμφωνα με τα τξα εξρτησης,
Οι μθοδοι που βασζονται σε καννες προσπαθον να ανιχνεσουν τη σειρ εκτλεσης των υπολογισμν τη στιγμ της δημιουργας του μεταγλωττιστ. Για το σκοπ αυτ αναλουν τους σημασιολογικος καννες.
λες οι λλες μθοδοι αγνοον τη δομ του γρφου.
Ο γρφος εξρτησης πρπει να εναι μη κυκλικς
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Γραμματικς ιδιοττων ΧΙV
νας γρφος εξρτησης τιμν λμε τι εναι κυκλικς αν περιχει κκλο.
Μα γραμματικ ιδιοττων λμε τι εναι μη κυκλικ αν δεν υπρχει παργωγο δνδρο με κκλο εξρτησης τιμν των ιδιοττων των κμβων του. Αν υπρχει κκλος, ττε δε μπορε να καθορισθε η σειρ υπολογισμο των τιμν.
Ο λεγχος του αν μα γραμματικ ιδιοττων εναι μη κυκλικ χαρακτηρζεται απ εκθετικ πολυπλοκτητα. Εναλλακτικ, ελγχεται αν η γραμματικ εναι “ισχυρ μη κυκλικ”, μα ιδιτητα λιγτερο γενικ απ τη μη κυκλικτητα.
Ο λεγχος του αν μα γραμματικ εναι ισχυρ μη κυκλικ μπορε να γνει σε πολυωνυμικ χρνο και αν αυτ ισχει, ττε μπορε να σχεδιασθε νας αναδρομικς αλγριθμος μετφρασης, δηλαδ υπολογισμο τιμν, κατ τη δημιουργα του μεταγλωττιστ.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
S-Γραμματικς ιδιοττων I
Μα γραμματικ που χρησιμοποιε αποκλειστικ συνθσιμες ιδιτητες ονομζεται S-γραμματικ ιδιοττων
Στις S-γραμματικς ιδιοττων μπορε να γνει ο υπολογισμς λων των τιμν σε να μνο ανοδικ πρασμα του δνδρου
ρα οι S-γραμματικς ιδιοττων μπορον εκολα να χρησιμοποιηθον με αλγορθμους ανλυσης LR ως εξς
Αποθηκεονται οι ιδιτητες των συμβλων στη στοβα της ανλυσης
ταν γνεται απλοποηση ττε
Τα σμβολα του δεξιο μρους της παραγωγς και οι ιδιτητς τους βρσκονται δη στη στοβα
Υπολογζονται οι συνθσιμες ιδιτητες του συμβλου του αριστερο μρους χρησιμοποιντας τις τιμς των συμβλων του δεξιο μρους
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
S-Γραμματικς ιδιοττων IΙ
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);
Τλος dfsvisit
Οι κμβοι που αναφρονται στον αλγριθμο εναι οι κμβοι του δνδρου
Η δισχιση ξεκιν με κλση της dfsvisit για τη ρζα του δνδρου
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
L-Γραμματικς ιδιοττων ΙΙ
Μπορομε να κνουμε μετφραση L-γραμματικν ιδιοττων με καθοδικ ανλυση αν η γραμματικ χωρς συμφραζμενα εναι LL(1)
Μπορομε να επεκτενουμε ναν αναλυτ προβλπουσας αναδρομικς κατβασης με σημασιολογικος καννες, τσι να υπολογζονται οι τιμς των ιδιοττων παρλληλα με την ανλυση της εισδου
Οι ανοδικο LR αναλυτς μπορον να εκτελσουν μετφραση L-γραμματικν ιδιοττων χρησιμοποιντας μη τερματικ σμβολα σμανσης (τα εισγουμε που εξυπηρετε ενδιμεσα, στο δεξ μρος των καννων), που εναι απαλεψιμα (χουν παραγωγ που οδηγε σε ε)
Τα μη τερματικ σμβολα σμανσης χρησιμοποιονται για την εκτλεση ενεργειν «περσματος» κληρονομσιμων τιμν στη στοβα της ανλυσης
Οι ανοδικο αναλυτς μπορον με ασφλεια να χρησιμοποισουν το προαναφερμενο τχνασμα για τη μετφραση L-γραμματικν ιδιοττων που η γραμματικ εναι LL(1)
Σε λες τις λλες περιπτσεις μπορε ο προαναφερμενος μετασχηματισμς της γραμματικς να προκαλσει συγκροσεις θησης – απλοποησης
Στο byacc το τχνασμα αυτ εφαρμζεται με χρση “embedded actions” (περισστερες λεπτομρειες στα manuals & σελ. 203 του βιβλου)
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Σχματα μετφρασης Ι
Στις γραμματικς ιδιοττων δε διατυπνεται η σειρ υπολογισμο τιμν ιδιοττων των συμβλων.
Οι εξισσεις ιδιοττων επισυνπτονται στα δεξι των καννων παραγωγς
Στην πιο γενικ περπτωση, για τον καθορισμ της σειρς υπολογισμο των τιμν απαιτεται η δημιουργα ενς γρφου εξρτησης τιμν
Σε να σχμα μετφρασης η σειρ υπολογισμο τιμν καθορζεται με την απευθεας τοποθτηση των ενεργειν στις επιλεγεσες θσεις του δεξιο μρους των καννων παραγωγς
Μα κληρονομσιμη ιδιτητα ενς συμβλου του δεξιο μρους πρπει να χει υπολογισθε σε ενργεια πριν απ αυτ το σμβολο
Μα ενργεια δεν πρπει να αναφρεται σε συνθσιμη ιδιτητα συμβλου που βρσκεται δεξι της ενργειας
Μα συνθσιμη ιδιτητα για το μη τερματικ σμβολο του αριστερο μρους μπορε να υπολογισθε μνο μετ τον υπολογισμ λων των ιδιοττων στις οποες αναφρεται (την τοποθετομε στο τλος του δεξιο μρους του καννα)
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Σχματα μετφρασης ΙΙ
T int T.type integer
| id enter(id.spelling, L.in)
Καταχρηση μεταβλητν στον
γραμματικ ιδιοττων. Μιλμε για
μα ad hoc μετφραση.
T int { T.type integer }
| id { enter(id.spelling, L.in) }
τοποθετονται στα δεξι μρη των παραγωγν
καθορζοντας τη σειρ εκτλεσς τους.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Σχματα μετφρασης ΙΙΙ
((a+b)*c)/(d-e*f)+3
δνει ως αποτλεσμα την
ab+c*def*-/3+
Γραμματικ ιδιοττων για την ανπτυξη του συντακτικο δνδρου των εκφρσεων.
ιδιτητα nptr δεκτης σε κμβο δνδρου
ιδιτητα ID.entry η εγγραφ ενς ονματος στον πνακα συμβλων
mknode δημιουργα νου κμβου
Ε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) ]
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Παρδειγμα γραμματικς ιδιοττων: λεγχος τπων I
βασικο τποι (λογικς τπος, ακραιοι, πραγματικο κ.α.) και οριζμενοι απ τον προγραμματιστ, που μπορον να χουν το δικ τους νομα
ο τπος ενς δομικο στοιχεου της γλσσας περιγρφεται απ μα κφραση τπων, που συνδυζονται νας περισστεροι απλο τποι με δομητς τπων
τπος πνακα: array(index_type, component_type)
δεκτης: pointer(type)
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Παρδειγμα γραμματικς ιδιοττων: λεγχος τπων II
λεγχος συνπειας τπων:
υλοποιεται με μα ανοδικ δισχιση του συντακτικο δνδρου που οι τποι των φλλων (ονματα, σταθερς) εξετζονται με βση τις αντστοιχες δηλσεις τους στον πνακα συμβλων
για κθε κμβο που αντιστοιχε σε τελεστ γνεται λεγχος αν οι τποι των υποδνδρων εναι επιτρεπτο για τη συγκεκριμνη πρξη
ονομαστικ ισοδυναμα τπων: πολ περιοριστικ
type my_int = integer;
var x: integer;
y: my_int;
x:=y;
δομικ ισοδναμες εκφρσεις: ανν εναι του διου βασικο τπου οι τποι τους προκπτουν μετ απ εφαρμογ του διου δομητ σε δομικ ισοδναμους τπους
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Παρδειγμα γραμματικς ιδιοττων: δηλσεις τπων
δηλσεις μεταβλητν – δεκτη και πινκων
decl = type varlist. [varlist.in = type.name ]
type = “INT”. [type.name = “integer” ]
type = “FLOAT”. [type.name = “float” ]
addtype(ID.entry, varlist.in) ]
addtype(ID.entry, array(0… “Num”.val –1,
varlist.in))]
addtype(ID.entry, pointer(varlist.in)) ]
varlist.in))]
Παρδειγμα σχματος μετφρασης: λεγχος τπων αριθμητικν εκφρσεων
Ε = “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”;
E1.type = = array(i_type,b_type)) ττε
E.type = b_type;
E.type = “boolean”;
Πνακας συμβλων Ι
Ο προγραμματιστς επιλγει ονματα για τις διφορες ονττητες, που πρκειται να επεξεργαστε ο μεταγλωττιστς:
- σταθερς
- τποι
- μεταβλητς (περιοχ δεδομνων που περιχει μα απλ δομημνη τιμ)
- αρχεα, συσκευς
- μακροεντολς
Οι ονττητες αυτς περιγρφονται απ να σνολο ιδιοττων, πως π.χ. Το νομα, η εμβλεια, ο τπος, η τιμ, το μγεθος (χρος μνμης) κ.α.
Ο μεταγλωττιστς συνδει τα ονματα των οντοττων με τις ιδιτητς τους μσω μιας δομς που ονομζεται κμβος συμβλου: εγγραφ που ως πεδα χει τις ιδιτητες της ονττητας.
Οι κμβοι συμβλων αποτελον μρος ενς πνακα συμβλων.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Πνακας συμβλων ΙΙ
Ο πνακας συμβλων σχηματζεται κατ τη συντακτικ ανλυση και χρησιμοποιεται ξαν κατ το στατικ σημασιολογικ λεγχο, τη δσμευση χρου μνμης και τη δημιουργα κδικα.
Παραμνει στην κρια μνμη για να χρησιμοποιηθε σε κθε μα απ τις προαναφερθεσες επεξεργασες.
Κθε αναφορ σε νομα του πηγαου κδικα χει ως αποτλεσμα την προσπλαση του πνακα συμβλων, για την ερεση του κμβου συμβλου που αντιστοιχε στο νομα με σκοπ την καταχρηση νας τιμς την ανκτηση μιας υπρχουσας.
Ο πνακας συμβλων πρπει να επιτρπει την ταχεα προσπλαση των καταχωρσεων.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Πνακας συμβλων ΙΙΙ
Δημιουργα πνακα
Εισαγωγ νου κμβου
Διαγραφ ενς κμβου
Καταστροφ του πνακα
Η δομ του πνακα συμβλων σχεδιζεται τσι στε να υπρχει η δυναττητα αποθκευσης των ιδιοττων, για κθε τπο καταχρησης:
δηλσεις σταθερν
δηλσεις τπων
δηλσεις μεταβλητν
δηλσεις συναρτσεων
Πιθαν να επιλγεται η χρση περισσοτρων του ενς πνακα συμβλων.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Πνακας συμβλων ΙV
Οργνωση πνακα συμβλων:
ταχτητα προσπλασης καταχωρσεων
διαχεριση επιπρσθετων απαιτσεων μνμης
πλθος αναζητσεων Μ.Ο. (n+1)/2 για επιτυχες
n για ανεπιτυχες αναζητσεις
εισαγωγ στην n+1 θση
διαγραφ απ τη θση q: μετακνηση απ την q+1 ως την n
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Πνακας συμβλων V
Σειριακ οργνωση: αλφαβητικ
πλθος αναζητσεων Μ.Ο. log2 n για ανεπιτυχες και επιτυχες αναζητσεις
εισαγωγ σημαντικ κστος
διαγραφ: απαιτεται μετατπιση
Πιο διαδεδομνη οργνωση: πνακας κατακερματισμο (Hash):
απαρτζεται απ να σνολο θσεων υποδοχς αριθμημνες
απ το 0 μχρι το μγεθος του πνακα μεον να
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Πνακας συμβλων VΙ
Πιο διαδεδομνη οργνωση: πνακας κατακερματισμο (Hash):
μα συνρτηση Hash μετατρπει τη συμβολοσειρ του ονματος σε μα ακραιη τιμ που κυμανεται στα ρια του μεγθους του πνακα
οι καταχωρσεις θα πρπει να κατανμονται σο το δυνατ περισστερο ομοιμορφα
διαχεριση συγκροσεων: 1. ανοικτ Hash
2. αλυσδες συνδσμων
αν a= n/m που m ο αριθμς θσεων του πνακα ττε για την περπτωση 2 ο μσος αριθμς αναζητσεων εναι
1 + a/2 για επιτυχες αναζητσεις
a + e-a για ανεπιτυχες αναζητσεις
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ
Πνακας συμβλων VΙΙ
Πνακας συμβλων VI