Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΕΑΠ – ΠΛΗ24 2η ΟΣΣ.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΕΑΠ – ΠΛΗ24 2η ΟΣΣ."— Μεταγράφημα παρουσίασης:

1 ΕΑΠ – ΠΛΗ24 2η ΟΣΣ

2 Συντακτική Ανάλυση Είσοδος: ακολουθία tokens από τον Λεκτικό Αναλυτή
Σκοπός: να ελεγχθεί οτι η ακολουθία αυτή είναι μια πρόταση της δοθείσας γραμματικής Βασικές Μέθοδοι: Bottom-up, Top-down Απαιτούνται κατάλληλες γραμματικές για διευκόλυνση της B-U ή T-D συντακτικής ανάλυσης ΕΑΠ – ΠΛΗ24

3 Bottom-up συντακτική ανάλυση Shift-reduce
Από μια συμβολοσειρά εισόδου w προχωράμε προς τη ρίζα. Παράδειγμα: S  aΑcBe A  Ab | b B  d w = abbcde abbcde  aAbcde  aAcde  aAcBe  S υλοποιείται με τη βοήθεια μιας στοίβας (stack) Operator Precedence: κατάλληλη για συντακτική ανάλυση αριθμητικών εκφράσεων ΕΑΠ – ΠΛΗ24

4 Τop-down συντακτική ανάλυση Recursive descent – Αναδρομική κατάβαση
Ξεκινώντας από την αρχική μεταβλητή της γραμματικής προσπαθούμε να δημιουργήσουμε τη συμβολοσειρά. Παράδειγμα: S  cΑd A  ab | a w = cad S  cAd  cabd : backtracking (1) (1)  cad Υλοποίηση: για κάθε τερματικό σύμβολο μπορούμε να δημιουργήσουμε μια ρουτίνα ΕΑΠ – ΠΛΗ24

5 Προβλήματα Top-down ανίχνευσης
Αριστερή Αναδρομή (left recursion) αν υπάρχει κανόνας της μορφής Α  Αα (οδηγεί σε ατελείωτη ανακύκλωση) Backtracking: χρονοβόρα διαδικασία Επηρεάζεται από τη σειρά εφαρμογής των κανόνων. ΕΑΠ – ΠΛΗ24

6 Όροι καταλληλότητας μιας γραμματικής για αναδρομική κατάβαση
Όροι καταλληλότητας μιας γραμματικής για αναδρομική κατάβαση Να μην είναι διφορούμενη Να μην υπάρχουν αριστερές αναδρομές Κάθε κανόνας που περιέχει Ν εναλλακτικά δεξιά μέρη να ξαναγραφεί έτσι ώστε τουλάχιστον τα Ν-1 να αρχίζουν με τερματικό σύμβολο Να είναι παραγοντοποιημένη ΕΑΠ – ΠΛΗ24

7 Απαλοιφή αριστερής αναδρομής
Α  Αα | β, όπου β δεν αρχίζει με Α: Α  βΑ’ Α’  αΑ’ | ε Παράδειγμα: S -> A | aS A -> Sb | Ab | c Έμμεση αναδρομή A -> Sb => A -> Ab | aSb | c Άμεση Αναδρομή A -> Ab A -> aSbB | cB B -> bB | ε ΕΑΠ – ΠΛΗ24

8 Αριστερά παραγοντοποίηση
Η απαλοιφή αριστερών αναδρομών δεν αρκεί: S  if C then S else S | if C then S Ο μεταγλωττιστής δεν θα ήξερε ποιός κανόνας είναι προτιμότερος: Γενική μορφή παραγοντοποίησης Α  αβ | αγ γίνεται Α  αΑ’ Α’  β | γ Παράδειγμα 4.7: S  iCtS | iCtSeS | a γίνεται S  iCtSS’ | a S’  eS | ε ΕΑΠ – ΠΛΗ24

9 Συντακτικά Κατευθυνόμενη Μετάφραση (Τετράδες)
PLACE:Θέση όπου βρίσκεται αποθηκευμένη η τιμή μιας l-value ή μιας r-value TYPE: Ο τύπος μιας l-value ή μιας r-value ΝΕΧΤ: Λίστα από ετικέτες τετράδων που περιέχουν άλματα στην επόμενη εντολή TRUE,FALSE:Λίστα από ετικέτες τετράδων που περιέχουν άλματα στον κώδικα που πρέπει να εκτελεστεί, αν μια συνθήκη είναι αληθής ή ψευδής NEXTQUAD():Επιστρέφει τον αριθμό της επόμενης τετράδας GENQUAD(op,x,y,z):Γεννά την επόμενη τετράδα op,x,y,z ΝΕWTEMP(t): Δημιουργεί μια νέα προσωρινή μεταβλητή τύπου t EMPTYLIST(): Δημιουργεί μια κενή λίστα ετικετών τετράδων ΕΑΠ – ΠΛΗ24

10 Εμβέλεια Μεταβλητών (1)
ΕΑΠ – ΠΛΗ24

11 Εμβέλεια μεταβλητών (2)
PROCEDURE main; TYPE t = FLOAT; VAR x,y,z:INTEGER; PROCEDURE sub1; TYPE t = STRING; VAR a,y,z : BOOLEAN; PROCEDURE sub2; VAR a,b,z: t; BEGIN (* body of sub2 *) END (* body of sub1 *) ΒEGIN (* body of main *) Ετικέτα Είδος Τύπος main Ρουτίνα x Μεταβλητή INTEGER sub1 Ρουτίνα t Τύπος (= STRING) y Μεταβλητή BOOLEAN sub2 Ρουτίνα a Μεταβλητή t (= STRING) b Μεταβλητή t (= STRING) z Μεταβλητή t (= STRING) ΕΑΠ – ΠΛΗ24


Κατέβασμα ppt "ΕΑΠ – ΠΛΗ24 2η ΟΣΣ."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google