Θέματα Μεταγλωττιστών

Σχετικά έγγραφα
Θέματα Μεταγλωττιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Κεφάλαιο 2: Τυπικές γλώσσες

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 5 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 7: Ασυμφραστικές Γλώσσες (Γλώσσες Ελεύθερες Συμφραζομένων)

Τεχνητή Νοημοσύνη. 21η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 4 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση Ι. Εαρινό Εξάμηνο Lec /03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

Ασκήσεις μελέτης της ενότητας «Συντακτική Ανάλυση»

Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την

«Τεχνογλωσσία VIII» Εξαγωγή πληροφοριών από κείμενα

Εισαγωγή στην Επιστήμη των Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Γλώσσες Χωρίς Συμφραζόμενα

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 3 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Ασκήσεις μελέτης της ενότητας «Συντακτική Ανάλυση»

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Λογισμικό Συστήματος. Κλειώ Σγουροπούλου

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών. Προδιαγραφές

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Επανάληψη Μαθήματος

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Γραµµατικές για Κανονικές Γλώσσες

Μηχανές Turing (T.M) I

Στοιχεία Θεωρίας Υπολογισµού (2): Πεπερασµένα Αυτόµατα, Κανονικές Εκφράσεις

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (1)

CSC 314: Switching Theory

Η δυαδική σχέση M ( «παράγει σε ένα βήμα» ) ορίζεται ως εξής: (q, w) M (q, w ), αν και μόνο αν w = σw, για κάποιο σ Σ

Φροντιστήριο 10 Λύσεις

Περιεχόμενα Τι περιγράφει ένα ΣΔ ΣΔ και παραγωγές Θεωρία Υπολογισμού Ενότητα 15: Συντακτικά Δέντρα Επ. Καθ. Π. Κατσαρός Τμήμα Πληροφορικής Επ. Καθ. Π.

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (3)

Κεφάλαιο 2: Τυπικές γλώσσες. Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος / 216

Σειρά Προβλημάτων 4 Λύσεις

Φροντιστήριο 9 Λύσεις

Γενικές Παρατηρήσεις. Μη Κανονικές Γλώσσες - Χωρίς Συµφραζόµενα (1) Το Λήµµα της Αντλησης. Χρήση του Λήµµατος Αντλησης.

Σειρά Προβλημάτων 4 Λύσεις

Μεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Σειρά Προβλημάτων 4 Λύσεις

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Δυαδικό Σύστημα Αρίθμησης

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Μάθημα 4 ο : Συντακτική ανάλυση. Γεώργιος Πετάσης. Ακαδημαϊκό Έτος:

Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι. Εαρινό Εξάμηνο Lec 05 & & 26 /02/2019 Διδάσκων: Γεώργιος Χρ.

HEAD INPUT. q0 q1 CONTROL UNIT

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (2)

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση II

Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές

Ποιές οι θεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιορισµοί των υπολογιστών ; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε (και γιατί);

Κεφάλαιο 4: Συντακτική ανάλυση

Κατηγορικές Γραµµατικές

Περιεχόμενα. Εισαγωγή του επιμελητή, Γιάννης Σταματίου 15 Πρόλογος 17 Εισαγωγή 23. Μέρος I. ΕΠΑΝΑΛΗΠΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΑΝΑΛΛΟΙΩΤΕΣ ΣΥΝΘΗΚΕΣ

Η NTM αποδέχεται αν µονοπάτι στο δέντρο που οδηγεί σε αποδοχή.

Μοντελοποίηση Υπολογισμού. Γραμματικές Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις

Σειρά Προβλημάτων 4 Λύσεις

Σειρά Προβλημάτων 5 Λύσεις

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΣΥΝΤΑΞΗ: ΟΡΘΟΛΟΓΙΚΗ ΠΡΟΣΕΓΓΙΣΗ (FORMAL SYNTAX)

Σειρά Προβλημάτων 5 Λύσεις

Κανονικές Γλώσσες. ιδάσκοντες: Φ. Αφράτη,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Απάντηση: (func endfunc)-([a-za-z])+

Γλώσσες Χωρίς Συμφραζόμενα

Αλγόριθμοι και Πολυπλοκότητα

HY Λογική Διδάσκων: Δ. Πλεξουσάκης Εαρινό Εξάμηνο. Φροντιστήριο 6

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 12: Μηχανές Turing

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση με το Εργαλείο BISON

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 11: Μη Ασυμφραστικές Γλώσσες

Σειρά Προβλημάτων 4 Λύσεις

Τυπικές Γραμματικές και Άλλα Αυτόματα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης

Επικοινωνία Ανθρώπου Υπολογιστή. Β3. Κατανόηση φυσικής γλώσσας

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

Θεωρία Υπολογισμού και Πολυπλοκότητα

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (1)

Θέματα Μεταγλωττιστών

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

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο

Σειρά Προβλημάτων 4 Λύσεις

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 14: Διαγνωσιμότητα (Επιλυσιμότητα)

Σειρά Προβλημάτων 4 Λύσεις

771 Η - Θεωρία Υπολογισμών και Αλγορίθμων

Ισοδυναμία Αιτ. Και μη Αιτ. Π.Α.

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

ΜΑΘΗΜΑ: Μεταγλωττιστές

Θέματα Μεταγλωττιστών

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2) Ισοδυναµία CFG και PDA. Σε αυτό το µάθηµα. Αυτόµατα Στοίβας Pushdown Automata

Σειρά Προβλημάτων 4 Λύσεις

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση

Transcript:

Γιώργος Δημητρίου Ενότητα 1 η : Parsers

Συντακτική Ανάλυση για ΓΧΣ Οι τεχνικές συντακτικής ανάλυσης κατηγοριοποιούνται με βάση διάφορα κριτήρια: Κατεύθυνση ανάλυσης μη τερματικών συμβόλων Σειρά επιλογής μη τερματικών συμβόλων Ντετερμινισμός Κατεύθυνση εισόδου Κανονικές και μη κανονικές Γραμμικές και μη γραμμικές

Ανάλυση Συμβόλων Από πάνω προς τα κάτω (top-down) Ξεκινά με το αρχικό σύμβολο προβλέποντας διαδοχικά νέες ακολουθίες συμβόλων. Από κάτω προς τα πάνω (bottom-up) Αναγνωρίζει σταδιακά συμβολοσειρές και ελαττώνει μέχρι το αρχικό σύμβολο.

Επιλογή Μη Τερματικών Συμβόλων Κατά βάθος Δημιουργούμε το συντακτικό δέντρο καθ ύψος Κατά πλάτος Δημιουργούμε το συντακτικό δέντρο κατά πλάτος

Ντετερμινισμός Ντετερμινιστική ανάλυση Πιο γρήγορη, αλλά πολύ περιοριστική Μη ντετερμινιστική ανάλυση Γενικευμένη συντακτική ανάλυση Καλύπτει διφορούμενες γραμματικές, αλλά πιο αργή

Κατεύθυνση Εισόδου Κατευθυνόμενη ανάλυση Συνήθως από αριστερά προς τα δεξιά Μη κατευθυνόμενη ανάλυση Ιδανική για διαίρεση και παράλληλη υλοποίηση

Κανονική ανάλυση Κανονική ονομάζουμε την ανάλυση που ακολουθεί συγκεκριμένο αλγόριθμο Μη κανονική ονομάζουμε την ανάλυση που μπορεί να τροποποιείται ανάλογα με την είσοδο και τις επιλογές που έχει Αναβολή αναγνώρισης συμβόλου Έξυπνοι συντακτικοί αναλυτές

Πολυπλοκότητα ΣΑ Γραμμικοί είναι οι αναλυτές με γραμμική πολυπλοκότητα ως προς το μήκος n της εισόδου Απλά γραμμικοί έναντι πραγματικού χρόνου Μη γραμμικοί αναλυτές είναι αυτοί με εκθετική πολυπλοκότητα Γενικευμένοι: γραμμικοί με κάποια στοιχεία μη γραμμικής ανάλυσης κάθε φορά που η είσοδος προκαλεί μη ντετερμινισμό

Κατηγοριοποίηση ΣΑ Springer 2008

Συντακτική Ανάλυση και Πολλαπλασιασμός Δυαδικών Πινάκων Αποδεικνύεται ότι η γενική μη κατευθυνόμενη ΣΑ των ΓΧΣ ανάγεται σε πολλαπλασιασμό δυαδικών πινάκων (Boolean Matrix Multiplication) Πολυπλοκότητα 0(n 2,376 ) Όμως η αναγωγή είναι πολύπλοκη και χρονοβόρα, αξίζει για τεράστια είσοδο που πρέπει να είναι στη μνήμη

Αλγόριθμος Unger Από επάνω προς τα κάτω Δημιουργεί όλες τις δυνατές κατανομές των συμβόλων της πρότασης σε τόσες υποσυμβολοσειρές όσα είναι τα σύμβολα του δεξιού μέλους που αναλύεται Επαναλαμβάνει αναδρομικά όσο υπάρχει κατανομή και ταιριάζουν τα τερματικά σύμβολα Επιτυχία αν ταιριάξουν όλα τα σύμβολα Βελτιστοποίηση κατανομών

Παράδειγμα Έστω η γραμματική εκφράσεων: Expr Expr + Term Term Term Term Factor Factor Factor ( Expr ) i Για την πρόταση (i+i) i δημιουργούμε τους πίνακες: ή, μετά, μετά κοκ

Δυσκολίες Κανένας περιορισμός στις ΓΧΣ: Αν υπάρχει ε-παραγωγή, επιτρέπουμε στις κατανομές και μηδέν τερματικά σύμβολα ανά σύμβολο ανάλυσης Αν υπάρχει κύκλος στους κανόνες παραγωγής, τότε θέτουμε έλεγχο επανεμφάνισης της ίδιας συμβολοσειράς για το ίδιο μη τερματικό σύμβολο απορρίπτουμε τη συγκεκριμένη κατανομή

Αλγόριθμος Cocke-Younger-Kasami (CYK ή λιγότερο συχνά CKY) Από κάτω προς τα επάνω Δημιουργεί όλους τους συνδυασμούς συμβόλων δεξιού μέλους που δημιουργούνται πηγαίνοντας από συμβολοσειρές μήκους 1 έως συμβολοσειρές μήκους n Επιτυχία αν φτάσουμε σε μήκος n με το αρχικό σύμβολο της γραμματικής

Περιορισμοί Για να επιτυγχάνεται η επιθυμητή πολυπλοκότητα 0(n 3 ): Η γραμματική δεν πρέπει να έχει ε-παραγωγές Τα δεξιά μέλη των κανόνων δεν μπορούν να έχουν μόνο ένα μη τερματικό σύμβολο (unit rules) Εν τέλει η γραμματική πρέπει να είναι σε κανονική μορφή Chomsky (CNF) Αλλιώς η πολυπλοκότητα γίνεται 0(n 4 )

Παράδειγμα Γενικής ΓΧΣ 1 ο βήμα 2 ο βήμα 3 ο βήμα 4 ο βήμα

ΓΧΣ σε CNF Μια ΓΧΣ είναι σε κανονική μορφή Chomsky αν οι κανόνες της έχουν τη μορφή A a, A BC, a T B,C N δηλαδή να παράγουν είτε απλό τερματικό είτε διπλό μη τερματικό σύμβολο.

Μετατροπή σε CNF Για να μετατρέψουμε μια γενική ΓΧΣ σε CNF, πρέπει να: Απαλείψουμε τις ε-παραγωγές Απαλείψουμε τις παραγωγές απλού μη τερματικού συμβόλου Απαλείψουμε τις παραγωγές τερματικών δίπλα σε μη τερματικά σύμβολα Χωρίσουμε τις παραγωγές πολλαπλών μη τερματικών συμβόλων σε πολλές παραγωγές ακριβώς δύο συμβόλων Τι δέντρο θα πάρουμε τελικά; Τι κάνουμε για να επανέλθουμε στην αρχική ΓΧΣ;

Παράδειγμα Γραμματικής CNF Ισοδύναμη της προηγούμενης ΓΧΣ Εφαρμογή αλγόριθμου CYK σε μορφή πίνακα

Αλγόριθμος CYK function CYKparse (in buf[ ], out table[ ]) for j = 1 to n table[1, j] = {A A buf[j] G} for i = 2 to j J = j - i + 1 for k = 1 to i table[i, J] = table[i, J] {A A BC G, B table[k, J], C table[i - k, J + k]}

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

Λειτουργία Αλγορίθμου Earley Με κάθε στοιχείο σημειώνουμε προπορευόμενα που βρίσκουμε όπως στο ΣΑ LR Επίσης σημειώνουμε ένα δείκτη στην είσοδο για το σύμβολο από το οποίο ξεκίνησε η παραγωγή Μεταβάσεις γίνονται μόνο με την είσοδο Σε μια ελάττωση κοιτάζουμε την κατάσταση που υποδεικνύεται και προσθέτουμε στοιχεία με αναγνωρισμένο το σύμβολο του αριστερού μέλους της ελάττωσης

Παράδειγμα Έστω η ΓΧΣ ΑΕ Με είσοδο a+a*a έχουμε:

Απόδοση Αλγόριθμου Earley Πολυπλοκότητα 0(n 3 ) για γενικές ΓΧΣ Πολυπλοκότητα 0(n 2 ) για μη διφορούμενες ΓΧΣ Πολυπλοκότητα 0(n) για τις περισσότερες μη διφορούμενες ΓΧΣ

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

Παράδειγμα Διφορούμενη ΓΧΣ: Λειτουργία αλγορίθμου: Καταστάσεις LR(0): GSS:

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

Παράδειγμα με κύκλο Διφορούμενη ΓΧΣ: Καταστάσεις LR(0): GSS:

Παράλληλος Αλγόριθμος Fischer Πολλαπλοί επιμέρους ΣΑ Χωρίζουμε αυθαίρετα την είσοδο σε τμήματα. Το πρώτο τμήμα ξεκινάει κανονικά με την αρχική κατάσταση Τα υπόλοιπα τμήματα ξεκινάνε με όλες τις καταστάσεις που δέχονται ολίσθηση με το πρώτο σύμβολο του τμήματος Οι ολισθήσεις γίνονται κανονικά Οι ελαττώσεις που μπορούν να γίνουν στην τοπική στοίβα γίνονται κανονικά Διαφορετικά περιμένουμε τον προηγούμενο ΣΑ

Παράδειγμα ΓΧΣ: Λειτουργία για είσοδο n-n-(n-n) : Πίνακας ΣΑ LR(0):

Άλλοι Παράλληλοι ΣΑ για ΓΧΣ GLR: Σε κάθε αντιγραφή στοίβας κάνε διακλάδωση σε άλλο επεξεργαστή Agent parsers: Ένας επεξεργαστής για κάθε σύμβολο εισόδου ή για κάθε κανόνα Parallel Earley: Όμοια λειτουργία με τον Fischer ΣΑ για Γραμματικές με Συμφραζόμενα?