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

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

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

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

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

Top Down Bottom Up. Συντακτική Ανάλυση. Συντακτική Ανάλυση για Γραµµατικές χωρίς Συµφραζόµενα (top-down - Earley)

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

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

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

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

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

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

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

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

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

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

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

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

Υλοποίηση ΣΑ με το bison

Εισαγωγή. Γλώσσες προγραμματισμού Μεταγλωττιστές Αναγκαιότητα και ιστορική αναδρομή

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

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

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

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

Υλοποίηση ΛΑ με το flex

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού»

Μεταγλωττιστές. μια φοιτητική προσέγγιση

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

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

Γλώσσες Προγραμματισμού Μεταγλωττιστές

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 10: Αυτόματα Στοίβας II

Ορισµοί. Τυπικές Γλώσσες Γραµµατικές και Μεταφραστές. Αλφάβητο: ένα οποιδήποτε µη κενό και πεπερασµένο σύνολο Σ αποτελούµενο από σύµβολα

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

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

ΚΕΦΑΛΑΙΟ 4 ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΥΝΤΑΚΤΙΚΗΣ ΑΝΑΛΥΣΗΣ

Πίνακας Περιεχοµένων Πρόλογος Κεφάλαιο Βασικές εισαγωγικές έννοιες

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

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

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

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

Μεταγλωττιστές. Εργαστήριο 5. Εισαγωγή στο BISON. Γεννήτρια Συντακτικών Αναλυτών. 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση

Σύνταξη & Συντακτική Ανάλυση

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

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

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

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

Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών (Κοζάνη) Χειμ. Εξ '15

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

Συντακτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Μεταγλωττιστές Βελτιστοποίηση

ΠΛΗ111. Ανοιξη Μάθηµα 4 ο. Στοίβα. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

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

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

Δομές Δεδομένων (Data Structures)

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

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

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

aab aabb aaabb aaaabb aaaabb aaaabb

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων

ιαφάνειες παρουσίασης #11

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

Παρουσίαση του εργαλείου BISON

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

ΘΕΜΑ 1 ο. β) 1. δυαδική 2. κατανόηση 3. τυπικοί 4. τεχνητής νοημοσύνης 5. ακέραιου

Προαιρετική Εργασία στο μάθημα Σχεδίαση Γλωσσών και Μεταγλωττιστών

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 2

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

Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής και Τηλεπικοινωνιών. Παραλληλία. Κ. Χαλάτσης, Εισαγωγή στην Επιστήµη της Πληροφορικής και των Τηλεπικοινωνιών

Σύνταξη & Συντακτική Ανάλυση

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

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

Κεφάλαιο 3 : Σύνταξη Γλωσσών Προγραμματισμού

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

Τι είναι το yacc. Δομή ενός αρχείου yacc. Πρόλογος. ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο. Ο yacc είναι ένας γενικού σκοπού parser generator.

Συντακτική ανάλυση. Μεταγλωττιστές. (μέρος 3ον) Νίκος Παπασπύου, Κωστής Σαγώνας

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

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

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

Δομές Δεδομένων και Αλγόριθμοι

Διδάσκων: Παναγιώτης Ανδρέου

Υλοποίηση ΣΑ με το bison

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

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

Λεκτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Ανάπτυξη και Σχεδίαση Λογισμικού

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Μεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

Transcript:

Βοηθητικές έννοιες (i) Σύνολα FIRST Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την Αν a τότε a FIRST Αν τότε FIRST Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 58 / 216

Βοηθητικές έννοιες (ii) Σύνολα FOLLOW Έστω μη τερματικό σύμβολο Το σύνολο FOLLOW EOF περιέχει τα τερματικά σύμβολα που μπορούν να ακολουθούν το στη διάρκεια μιας παραγωγής Αν το μπορεί να είναι το τελευταίο σύμβολο σε μια παραγωγή, τότε EOF FOLLOW Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 59 / 216

Βοηθητικές έννοιες (ii) Σύνολα FOLLOW Έστω μη τερματικό σύμβολο Το σύνολο FOLLOW EOF περιέχει τα τερματικά σύμβολα που μπορούν να ακολουθούν το στη διάρκεια μιας παραγωγής Αν το μπορεί να είναι το τελευταίο σύμβολο σε μια παραγωγή, τότε EOF FOLLOW Αν a τότε a FOLLOW Αν τότε EOF FOLLOW Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 59 / 216

Υπολογισμός FIRST (i) FIRST FIRST a a αν FIRST τότε FIRST FIRST αν FIRST τότε FIRST FIRST FIRST για κάθε κανόνα, πρέπει FIRST FIRST Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 60 / 216

Υπολογισμός FIRST (ii) Παράδειγμα FIRST E id ( FIRST T id ( FIRST F id ( FIRST E + FIRST T * E T E E E + T E T F T T T * F T F ( E ) F id Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 61 / 216

Υπολογισμός FOLLOW (i) EOF FOLLOW για κάθε κανόνα FIRST FOLLOW αν FIRST τότε FOLLOW FOLLOW Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 62 / 216

Υπολογισμός FOLLOW (ii) Παράδειγμα FOLLOW E ) EOF FOLLOW T + ) EOF FOLLOW F * + ) EOF FOLLOW E ) EOF FOLLOW T + ) EOF FIRST E + FIRST T * E T E E E + T E T F T T T * F T F ( E ) F id Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 63 / 216

ΣΑ top-down (i) Η συντακτική ανάλυση ξεκινά από τη ρίζα Κάθε φορά, αναζητά: το μη τερματικό σύμβολο που θα αντικατασταθεί συνήθως επιλέγεται το αριστερότερο τον κανόνα παραγωγής που θα εφαρμοστεί βάσει των επόμενων λεκτικών μονάδων στη συμβολοσειρά εισόδου: LL( ) Επαναλαμβάνεται μέχρι να εξαντληθούν τα μη τερματικά Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 86 / 216

Γραμματικές LL(1) Απαραίτητες προϋποθέσεις: Απουσία αριστερής αναδρομής (άμεσης ή έμμεσης) Απουσία κοινού προθέματος σε εναλλακτικούς κανόνες Μερικές φορές είναι δυνατός ο μετασχηματισμός μιας γραμματικής σε ισοδύναμη LL(1) απαλοιφή αριστερής αναδρομής αριστερή παραγοντοποίηση Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 87 / 216

Μετασχηματισμός σε LL(1) Αντικατάσταση A B A A B Αριστερή παραγοντοποίηση A A B B Απαλοιφή άμεσης αριστερής αναδρομής A A A A B B B B B Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 88 / 216

ΣΑ αναδρομικής κατάβασης A μετατρέπεται σε κώδικα της μορφής: if token FIRST then κώδικας για την αναγνώριση της else if token FIRST then κώδικας για την αναγνώριση της else if FIRST FIRST then συντακτικό σφάλμα else if token FOLLOW then συντακτικό σφάλμα end if Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 89 / 216

ΣΑ LL(1) (i) Χρησιμοποιούν μια στοίβα όπου τοποθετούν σύμβολα της γραμματικής αρχικά μόνο το Κάθε φορά εξετάζεται η κορυφή της στοίβας: Αν είναι τερματικό σύμβολο και είναι το ίδιο με το επόμενο της συμβολοσειράς εισόδου, τότε αφαιρούνται και τα δύο Αν είναι μη τερματικό σύμβολο, τότε ανάλογα με το επόμενο της συμβολοσειράς εισόδου εφαρμόζεται κάποιος κανόνας Επιτυχία: η στοίβα και η συμβολοσειρά εισόδου είναι άδειες Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 90 / 216

ΣΑ LL(1) (ii) συµβολοσειρά εισόδου a 1 a 2... a n EOF Ο αλγόριθμος κατασκευής του πίνακα ορίζει την οικογένεια των γλωσσών LL(1) x m... κορυφή επόµενο σύµβολο Πίνακας M συντακτικής ανάλυσης LL(1) x 2 x 1 στοίβα Συντακτικός Αναλυτής LL(1) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 91 / 216

Κατασκευή ΣΑ LL(1) E T E E + T E T F T T * F T F ( E ) id FIRST E FIRST T FIRST F id ( FIRST E + FIRST T * FOLLOW E FOLLOW E ) EOF FOLLOW T FOLLOW T + ) EOF FOLLOW F * + ) EOF id + * ( ) EOF E E TE E TE E E +TE E E T T FT T FT T T T *FT T T F F id F (E) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 92 / 216

Λειτουργία ΣΑ LL(1) E id + id * id EOF E T E E T id + id * id EOF T F T E T F id + id * id EOF F id E T id id + id * id EOF E T + id * id EOF T E + id * id EOF E + T E E T + + id * id EOF E T id * id EOF T F T E T F id * id EOF F id E T id id * id EOF E T * id EOF T * F T E T F * * id EOF E T F id EOF F id E T id id EOF E T EOF T E EOF E EOF αναγνώριση Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 93 / 216