Τυπικές Γλώσσες. και Μεταφραστές. Γιώργος Μανής

Σχετικά έγγραφα
Κατηγορικές Γραµµατικές

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Περιεχόμενα Ορισμός και λειτουργία των μηχανών Turing Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Επ. Καθ. Π. Κατσαρός Τμήμ

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

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

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

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

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

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

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

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

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

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

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

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

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

num(m(w 1 ;... ; w k )) = f(num(w 1 ),..., num(w k ))

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

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

Σε αυτό το µάθηµα. Εισαγωγή στις Μηχανές Turing. Μηχανή Turing (Turing Machine - TM) Μηχανές Turing. Παραδείγµατα Μηχανών Turing

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

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

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

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

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

Κανονικές Γλώσσες. Κανονικές Γλώσσες. Κανονικές Γλώσσες και Αυτόματα. Κανονικές Γλώσσες και Αυτόματα

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CSC 314: Switching Theory

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

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

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

aab aabb aaabb aaaabb aaaabb aaaabb

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

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

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

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

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

ΠΛΗ30 ΕΝΟΤΗΤΑ 3: ΚΑΝΟΝΙΚΕΣ ΓΛΩΣΣΕΣ. Μάθηµα 3.2: ηµήτρης Ψούνης

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

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

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 9: Αυτόματα Στοίβας (Pushdown Automata - PDA)

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

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

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

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

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

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

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

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

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

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

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

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

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

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

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

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

Γλώσσες που περιγράφονται από Κανονικές Εκφράσεις

HEAD INPUT. q0 q1 CONTROL UNIT

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

Περιεχόμενα. 1 Υπολογισιμότητα. Ιστορία - Εισαγωγή. Μαθηματικό Υπόβαθρο. LOOP: Μια απλή γλώσσα προγραμματισμού

επιµέλεια Θοδωρής Πιερράτος

Transcript:

Τυπικές Γλώσσες Γραµµατικές και Μεταφραστές Γιώργος Μανής

Ορισµοί Αλφάβητο: ένα οποιδήποτε µη κενό και πεπερασµένοσύνολοσ αποτελούµενο από σύµβολα { 0, 1 } δυαδικό αλφάβητο { Α, Β, Γ,, Ω } κεφαλαία ελληνικά γράµµατα Κάθε στοιχείο ενός αλφαβήτου Σ ονοµάζεται σύµβολο του αλφαβήτου

Ορισµοί Συµβολοσειρά: µία πεπερασµένη σειρά από σύµβολα του αλφαβήτου 01100110 ΑΒΓΑΑΒΒΓ Οι συµβολοσειρές θα παριστάνονται µε µικρά ελληνικά γράµµατα Ησυµβολοσειρά που δεν περιέχει κανένα σύµβολο ονοµάζεται κενή συµβολοσειρά και παριστάνεται µε τοσύµβολο ε Μήκος συµβολοσειράς είναι ο αριθµός των συµβόλων που την αποτελούν και συµβολίζεται µε α = ΑΒΒΒΑ = 5

Ορισµοί Το σύνολο των συµβολοσειρών µήκους n ενός αλφαβήτου συµβολίζεται µε Σ n Το σύνολο όλων των συµβολοσειρών ενός αλφαβήτου συµβολίζεται µε Σ* (περιλαµβανοµένης της κενής συµβολοσειράς) Σ* είναι η ένωση όλων των Σ n Το σύνολο όλων των συµβολοσειρών ενός αλφαβήτου µη περιλαµβανοµένης της κενής συµβολοσειράς συµβολίζεται µε Σ +

Ορισµοί Παράθεση δύο συµβολοσειρών αβ όλατασύµβολα της α ακολουθούµενα από όλα τα σύµβολα της β Παράθεση n φορές α n = ααα α ήπιοαυστηρά: α 0 = { ε }, α n+1 = α α n

Ορισµοί Πρόθεµα: ηαονοµάζεται πρόθεµα της β εάν όλα τα στοιχεία της α εµφανίζονται µε τη σειρά στην αρχή της β Επίθεµα: ηαονοµάζεται επίθεµα τηςβεάνόλαταστοιχείατηςα εµφανίζονται µε τη σειρά στο τέλος της β Υποσυµβολοσειρά: ηαονοµάζεται υποσυµβολοσειρά της β εάν όλα τα στοιχεία της α εµφανίζονται µε τη σειρά στο εσωτερικό της β

Γλώσσες Γλώσσα επί αλφάβητου Σ ονοµάζουµε κάθεσύνολοσυµβολοσειρών του Σ, δηλαδή κάθε υποσύνολο του Σ*, π.χ. L 1 = { a n b2 n n N } L 2 = { abba } L 3 = { x x: τα έγκυρα προγράµµατα Pascal }

Γλώσσες Ένωση L 1 L 2 = { α α L 1 ήα L 2 } Παράθεση L 1 L 2 = { αβ α L 1, β L 2 } Ουδέτερο στοιχείο η γλώσσα { ε } για την οποία L{ε }={ε }L=L Παράθεση µε τονεαυτότηςn φορές L 0 = { ε }, L n+1 = L L n Κλείσιµο τουkleene L * = U n=0 n L

Γραµµατικές Γραµµατική ονοµάζεται µία ένα σύστηµα παραγωγήςσυµβολοσειρών G που ορίζεται από µία διατεταγµένη τετράδα της µορφής (T,N,P,S) όπου: Τ: αλφάβητο τερµατικών συµβόλων Ν: αλφάβητο µητερµατικών συµβόλων T N = P: πεπερασµένο σύνολο κανόνων παραγωγής P ( T N ) * x ( T N ) * συµβολισµός: α -> β S: αρχικό σύµβολο

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

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

Τυπικές Γλώσσες Κάθε γραµµατική G=(T,N,P,S) ορίζει µία γλώσσα L(G) T * Λέµε ότιηγραµµατική παράγει τη γλώσσα και ορίζεται ως L(G) = { α T * S + α } το σύµβολο + σηµαίνει ότι η συµβολοσειρά παράγεται σε ένα ή περισσότερα βήµατα παραγωγή σε µηδέν βήµατα α βσηµαίνει α=β Μία γλώσσα λέγεται τυπική όταν υπάρχει γραµµατική που την παράγει

Ιεραρχία Chomsky Γραµµατικές Γραµµατικές Χωρίς Περιορισµούς Γραµµατικές Με Συµφραζόµενα Γραµµατικές Χωρίς Συµφραζόµενα Κανονικές Γραµµατικές

Γραµµατικές χωρίς Περιορισµούς Γραµµατικές χωρίς περιορισµούς τύπου 0 προτασιακής σύνταξης κανόνες της µορφής σ -> τ σ V +, V = T N τ V *

Γραµµατικές µε Συµφραζόµενα Γραµµατικές µε συµφραζόµενα τύπου 1 κανόνες της µορφής ααβ -> αxβ Α Ν x V + α,β V * κατ εξαίρεση: επιτρέπεται το S -> ε ώστε να παράγεται η κενή συµβολοσειρά αρκεί το S να µην υπάρχει σε δεξί µέλος κανόνα

Γραµµατικές µε Συµφραζόµενα Ισοδύναµη µορφή γραµµατικών µε συµφραζόµενα, καλούνται µονότονες γραµµατικές κανόνες της µορφής α -> β α,β V + η α περιέχει τουλάχιστόν ένα µητερµατικό σύµβολο α β κατ εξαίρεση: επιτρέπεται το S -> ε ώστε να παράγεται η κενή συµβολοσειρά αρκεί το S να υπάρχει µόνο σε δεξί µέλος κανόνα

Γραµµατικές µε Συµφραζόµενα θα κατασκευάσουµε γραµµατική για τη γλώσσα: α n b n c n αρχίζοντας από την απλή περίπτωση S -> abc αν προσθέσουµε έναa στην αρχή θα πρέπει να προσθέσουµε κάτι και στο τέλος S -> asq στο τέλος πρέπει να υπάρχει κάτι µε b και c αλλά όχι απλά να προσθέσουµε bc αφού όλα τα b πρέπει να βρίσκονται πριν τα c κάτι τέτοιο επιτρέπει το b να είναι πάντα πριν το c bqc -> bbcc πάλι δεν τελειώσαµε αφού τα Q βρίσκονται δεξιά από τα c, αυτό µπορεί να διορθωθεί µε τον κανόνα cq -> Qc

Γραµµατικές µε Συµφραζόµενα - Παράδειγµα S ::= assignments assignments ::= assign ; assignments assignments ::=. \%variable is set assign ::= x := exp (setx) assign ::= y := exp (sety) \% rules for an expression exp ::= [exp] exp ::= exp op exp

Γραµµατικές µε Συµφραζόµενα - Παράδειγµα \% marks can move at the end (setx) ; ::= ; (setx) (sety) ; ::= ; (sety) (setx) exp ::= exp (setx) (sety) exp ::= exp (sety) (setx) op ::= op (setx) (sety) op ::= op( sety) (setx) [ ::= [ (setx) (sety) [ ::= [ (sety) (setx) ] ::= ] (setx) (sety) ] ::= ] (sety)

Γραµµατικές µε Συµφραζόµενα - Παράδειγµα (setx) y ::= y (setx) (sety) x ::= x (sety) (setx) x ::= x (setx) (sety) y ::= y (sety) (setx) num ::= num (setx) (sety) num ::= num (sety) (setx) := ::= := (setx) (sety) := ::= := (sety)

Γραµµατικές µε Συµφραζόµενα - Παράδειγµα \% marks can change positions (setx) (sety) ::= (sety) (setx) (sety) (setx) ::= (setx) (sety) \%use a variable, move at the end exp (setx) ::= x (setx) exp (sety) ::= y (sety)

Γραµµατικές µε Συµφραζόµενα - Παράδειγµα \% marks can move after the dot (setx). ::=. @ (sety). ::=. @ \% terminal symbols exp ::= num op ::= + - * /

Γραµµατικές χωρίς Συµφραζόµενα Γραµµατικές χωρίς συµφραζόµενα - τύπου 2 κανόνες της µορφής Α -> α Α Ν α V * Παράδειγµα <name> ::= tom john harry <sentence> ::= name <list> and <name> <list> ::= <name>, <list> name

Κανονικές Γραµµατικές Κανονικές γραµµατικές τύπου 3 γραµµατικές πεπερασµένων καταστάσεων κανόνες της µορφής Α -> α Α -> ββ Α,Β Ν α Τ {ε} β Τ

Κανονικές Γραµµατικές Παράδειγµα S -> a A A -> a A A -> d A A -> ε Παραγωγή: σειρές από α και d που ξεκινούν υποχρεωτικά από α

Γραµµατικές Πεπερασµένων Επιλογών Γραµµατικές πεπερασµένων επιλογών ή τύπου 4 κανόνες της µορφής Α -> α Α Ν α Τ {ε}

Αναγνωριστές Μηχανές Πεπερασµένα αυτόµατα Αυτόµατα Στοίβας Γραµµικά Περιορισµένες Μηχανές Turing Μηχανή Turing

Μηχανή Turing διαθέτει µία ταινία άπειρου µήκους διαθέτει µία κεφαλή ανάγνωσης-εγγραφής που µπορεί νακινείταιστην ταινία σε διακριτές θέσεις στην ταινία µπορούν να γράφονται σύµβολα που ανήκουν σε ένα πεπερασµένο αλφάβητο κάθε στιγµή ηµηχανή βρίσκεται σε µία κατάσταση που ανήκει σε ένα πεπερασµένοσύνολοκαταστάσεων αρχικά η µηχανή βρίσκεται σε κάποια αρχική κατάσταση, ηταινία περιέχει µία συµβολοσειρά και η κεφαλή βρίσκεται στην αρχή της συµβολοσειράς

Μηχανή Turing ανάλογα µε το χαρακτήρα στην κεφαλή της ταινίας και την τρέχουσα κατάσταση η µηχανή µεταφέρεται σε µία νέα κατάσταση ή τερµατίζει ένας νεός χαρακτήρας γράφεται στη θέση που βρίσκεται η κεφαλή η κεφαλή κινείται αριστερά ή δεξιά ή παραµένει στάσιµη η µηχανή Turing µπορεί να υπολογίσει ο,τιδήποτε είναι υπολογίσιµο

Άλλοι Αναγνωριστές Γραµµικά Περιορισµένη Μηχανή Turing: είναι µία µηχανή Turing της οποίας η ταινία έχει µήκος Ο(n) όπου n το µήκος της συµβολοσειράς εισόδου αυτόµατο στοίβας πεπερασµένο αυτόµατο

Κανονικές Εκφράσεις Παραδοσιακά χρησιµοποιούνται για την περιγραφή των λεκτικών µονάδων µιας γλώσσας προγραµµατισµού Κάθε κανονική έκφαση r ορίζει µία γλώσσα L(r) Έστω ένα αλφάβητο Σ ηκενήσυµβολοσειρά είναι µία κανονική έκφραση L(ε)={ε} κάθε σύµβολο α του Σ είναι µία κανονική έκφραση L(α)={α} αν r και s κανονικές εκφράσεις τοτε η (rs) είναι κανονική έκφραση και αντιστοιχεί στην παράθεση των r και s, δηλ. L(rs)=L(r)L(s) αν r και s κανονικές εκφράσεις τοτε η (r s) είναι κανονική έκφραση και αντιστοιχεί στην διάζευξη των r και s, δηλ. L(r s)=l(r)ul(s) αν r κανονική έκφραση τοτε η (r*) είναι κανονική έκφραση και αντιστοιχεί στο κλείσιµο Kleene της r, δηλ. L(r*)=L(r)*

Κανονικές Εκφράσεις Συντοµογραφίες οι παρενθέσεις συνήθως παραλείπονται. Μεγαλύτερη προτεραιότητα έχει ο τελεστής * µετά της παράθεσης και µετά της διάζευξης οσυµβολισµός r + χρησιµοποιείται για το θετικό κλείσιµο τουkleene, δηλαδή r + = rr* οσυµβολισµός [a,b,c,d] χρησιµοποιείταιαντίτου α b c d οσυµβολισµός r? χρησιµοποιείται για να δείξει ότι η έκφραση είναι προαιρετική η τελεία χρησιµοποιείται για να παραστήσει κάποιο σύµβολο του αλφαβήτου το σύµβολο / υποδηλώνει ότι ο επόµενος χαρακτήρας που ακολουθεί είναι σύµβολο του αλφαβήτου και όχι κάποιος ειδικός χαρακτήρας. π.χ. η έκφραση /( /) µας περιγράφει την συµβολοσειρά ( )

Κανονικές Εκφράσεις Παράδειγµα [1-9][0-9]* 0] (/.[0-9] + )? ((E e)(+ -)?[0-9] + )? περιγράφει τις σταθερές κινητής υποδιαστολής χωρίς πρόσηµο της γλώσσας C

Ντετερµινιστικά Πεπερασµένα Αυτόµατα Ένα ντετερµινιστικό πεπερασµένο αυτόµατο είναι µία διατεταγµένη πεντάδα M=(A,Q,δ,q 0,F) όπου Ατοαλφάβητοτουαυτοµάτου Q ένα µη κενό πεπερασµένοσύνολοκαταστάσεων δ: Q x A -> Q η συνάρτηση µετάβασης q 0 єq η αρχική κατάσταση F Q οι τελικές καταστάσεις

Ντετερµινιστικά Πεπερασµένα Αυτόµατα Αρχικά το αυτόµατο βρίσκεται στην κατάσταση q o από τη συµβολοσειρά εισόδου διαβάζεται ένα σύµβολο κάθε φορά αν το αυτόµατο βρίσκεται στην κατάσταση q και διαβαστεί το σύµβολο α τότε το αυτόµατο µεταβαίνει στην κατάσταση δ(q,α) η διαδικασία συνεχίζεται µέχρι να εξαντληθεί η συµβολοσειρά είσόδου τότε, αν η κατάσταση στην οποία έχει µεταβεί το αυτόµατο είναι µία από τις καταστάσεις του συνόλου F ησυµβολοσειρά έχει αναγνωριστεί επιτυχώς, αλλιώς οδηγούµαστε σε αποτυχία

Πεπερασµένα Αυτόµατα ντετερµινιστικά περασµένα αυτόµατα (ΝΠΑ) µη ντετερµινιστικά περασµένα αυτόµατα (ΜΠΑ) ορίζεται όπως ένα ΝΠΑ µόνο που η συνάρτηση µετάβασης δ δεν επιστρέφει µόνο µία κατάσταση αλλά ένα σύνολο πιθανών επόµενων καταστάσεων µη ντετερµινιστικά περασµένα αυτόµατα µε µηδενικές µεταβάσεις (ΜΠΑ) ορίζεται όπως ένα ΜΠΑ µε τη διαφορά ότι επιτρέπονται µεταβάσεις από κατάσταση σε κατάσταση χωρίς να διαβαστεί χαρακτήρες από τη συµβολοσειρά είσόδου Τα τρία αυτά ήδη αυτοµάτων είναι ισοδύναµα µεταξύ τους

Παράδειγµα ΜετατροπήςΜΠΑσεΝΠΑ 1 0/1 a 1 b 1 0/1 a 1 ab 0 b

Παράδειγµα ΜετατροπήςΜΠΑσεΝΠΑ 0 1 eof a a,b b b b ok 0 1 eof {a} {ab} {b} {b} {b} ok {ab} {b} {ab} ok

ΜΠΑ σε Πίνακα Μετάβασης 1 0/1 a 1 b 0 1 eof a a,b b b b ok

ΝΠΑ σε Πίνακα Μετάβασης 1 0/1 a 1 ab 0 b 0 1 eof a ab b b b ok ab b ab ok

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

Γραµµατικές χωρίς Συµφραζόµενα ονοµάζουµε αριστερότερη παραγωγή µιας συµβολοσειράς την παραγωγή εκείνη στην οποία σε κάθε βήµα αντικαθίσταται το αριστερότερο µη τερµατικό σύµβολο. Συµβολίζεται ως εξής: α L β ονοµάζουµε δεξιότερη παραγωγή µιας συµβολοσειράς την παραγωγή εκείνη στην οποία σε κάθε βήµα αντικαθίσταται το δεξιότερο µη τερµατικό σύµβολο. Συµβολίζεται ως εξής: α R β

Συντακτικό έντρο Η ρίζα του δέντρου περιέχει το αρχικό µη τερµατικό σύµβολο κάθε κόµβος του δέντρου που δεν είναι φύλλο περιέχει ένα µη τερµατικό σύµβολο της γραµµατικής κάθε φύλλο του δέντρου περιέχει ένα τερµατικό σύµβολο της γραµµατικής οι απόγονοι κάθε κόµβου του δέντρου που δεν είναι φύλλο υπακούουν στους κανόνες της γραµµατικής

Συντακτικό έντρο S -> aabc A -> Ab A-> csb B -> bb B -> a S -> ε S a A B c A b a c S B ε a

Γραµµατική Tύπου LL(1) L: Left to right - αναφέρεται στον τρόπο που σαρώνεται η συµβολοσειρά εισόδου, από τα αριστερά στα δεξιά L: Left most derivation η διαδικασία κατασκευής του συντακτικού δέντρου αντιστοιχεί στην αριστερότερη παραγωγή (1): one look ahead symbol γιαναεπιλέξουµε ανάµεσα σε πιθανούς κανόνες ποιος είναι ο επόµενος κανόνας που πρέπει να εφαρµοσθεί αρκεί να γνωρίζουµε τοεπόµενο σύµβολο της συµβολοσειράς εισόδου

Γραµµατική Tύπου LL(1) Παράδειγµα γραµµατικής τύπου LL(1) Ε -> ΤΕ Ε -> +ΤΕ ε Τ -> FT T -> x FT ε F -> (E) id id -> a b c d Παραγωγή: (a+bxc+bx(a+c))xd

Ισοδύναµες Γραµµατικές ύο γραµµατικές είναι ισοδύναµες όταν παράγουν την ίδια γλώσσα Το πρόβληµα αν δύο γραµµατικές είναι ισοδύναµο είναι µη υπολογίσιµο

ιφορούµενες Γραµµατικές Μία γράµµατική λέγεται διφορούµενη αν υπάρχουν δύο ή περισσότερα συντακτικά δέντρα για την ίδια παραγόµενη συµβολοσειρά Στην παρακάτω γραµµατική το else δεν µπορεί να αποφασιστεί σε πιο if ανήκει stmt -> if cond stmt else stmt if cond stmt s1 s2 cond -> c1 c2 Οι διφορούµενες γραµµατικές πρέπει να αποφεύγονται στην κατασκευή των µεταγλωττιστών

Αυτόµατα Στοίβας Ένα αυτόµατο στοίβας είναι µία διατεταγµένη επτάδα M=(A,Q,Η,δ, q 0, h 0,F) όπου Ατοαλφάβητοτηςσυµβολοσειράς εισόδου Q ένα µη κενό πεπερασµένοσύνολοκαταστάσεων Ητοαλφάβητοτηςστοίβας δ: Q x Η x (A U {ε}) -> Ρ(Η* x Q) η συνάρτηση µετάβασης q 0 є Q η αρχική κατάσταση h 0 є H το αρχικό σύµβολο της στοίβας F Q οι τελικές καταστάσεις

Αυτόµατα Στοίβας αρχικά το αυτόµατο βρίσκεται στην κατάσταση q 0 και στη στοίβα βρίσκεται το σύµβολο h 0 στη συνέχεια και ανάλογα µε την τρέχουσα κατάσταση q το σύµβολο h που υπάρχει στην κορυφή της στοίβας, το αυτόµατο αφαιρεί το h από τη στοίβα και ακολουθεί έναν από τους εξής δρόµους: αν το τρέχον σύµβολο της συµβολοσειράς εισόδου είναι το α και το σύνολο κινήσεων δ(q,h,a) δεν είναι κενό τότε επιλέγεται µία κίνηση από αυτό το σύνολο και εκτελείται. Στηνπερίπτωσηαυτήλέµε ότι το αυτόµατο πραγµατοποιεί µετάβαση ανάγνωσης και το α καταναλώνεται αν το σύνολο κινήσεων δ(q,h,ε) δεν είναι κενό τότε επιλέγεται µία κίνηση απόαυτότοσύνολοκαιεκτελείται. Στηνπερίπτωσηαυτήλέµε ότι το αυτόµατο πραγµατοποιεί ε-µετάβαση ανάγνωσης και δεν καταναλώνεται κάποιο σύµβολο από τη συµβολοσειρά εισόδου

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

Αυτόµατα Στοίβας ηαφαίρεσητουσυµβόλου h από την κορυφή της στοίβας η οποία και γίνεται αυτόµατα σεκάθεβήµατηςεκτέλεσηςσυµβολίζεται µε pop η προσθήκη συµβόλων στη στοίβα συµβολίζεται µε push η µετάβαση στην κατάσταση q συµβολίζεται µε move(q ) µία ακολουθία της µορφής pop, push(hc) απλοποιείται σε push(c) η push(ε) παραλείπεται η move(q) παραλείπεται αν η τρέχουσα κατάσταση είναι η q

Αυτόµατα Στοίβας σαν Πίνακας Μετάβασης ηπρώτηγραµµή περιέχει το αλφάβητο της στοίβας επαυξηµένο µε το σύµβολο ~ η πρώτη στήλη το σύνολο των καταστάσεων το αρχικό σύµβολο της στοίβας και η αρχική κατάσταση εµφανίζονται πρώτα στη σειρά οσυµβολισµός read(a) αντιστοιχεί σε µετάβαση ανάγνωσης του α οσυµβολισµός keep αντιστοιχεί σε ε-µετάβαση

Αυτόµατα Στοίβας σαν Πίνακας Μετάβασης Α = { [, ] } Q = { S, T } H = { X, I } δ = δ( S,X,[ ) = { (XI, S) } δ( S, I, [ ) = { (II, S) } δ( S, X, ε ) = { (Χ, Τ) } δ( S, I, ] ) = { (ε, S) } q 0 = S h 0 = X F = { T }

Αυτόµατα Στοίβας σαν Πίνακας Μετάβασης X I ~ S read( [ ) push(i) keep move(t) read( [ ) push(i) read( ] ) pop T OK

Είδη Αυτοµάτων Στοίβας πραγµατικού χρόνου: αν δεν έχει ε-µεταβάσεις ντετερµινιστικό: για µία δεδοµένη συµβολοσειρά εισόδου µπορεί να ακολουθήσει µία και µοναδική εκτέλεση µη-ντετερµινιστικό: για µία δεδοµένη συµβολοσειρά εισόδου µπορεί να ακολουθήσει περισσότερες από µία εκτελέσεις

Ισοδυναµία Γλωσσών, Γραµµατικών, Μηχανών Γλώσσες Γραµµατικές Μηχανές Κανονικές Γλώσσες Κανονικές Γραµµατικές Πεπερασµένα αυτόµατα Γλώσσες Χωρίς Συµφραζόµενα Γραµµατικές Χωρίς Συµφραζόµενα Αυτόµατα Στοίβας Γλώσσες Με Συµφραζόµενα Γραµµατικές Με Συµφραζόµενα Γραµµικά Περιορισµένες Μηχανές Turing Υπολογίσιµες γλώσσες Γραµµατικές χωρίς περιορισµούς Μηχανή Turing

Κατηγορικές Γραµµατικές µία κατηγορική γραµµατική ορίζεται σαν µία διατεταγµένη τριάδα Κ=(G,V,F) όπου G=(T,N,P,S) µία γραµµατική χωρίς συµφραζόµενα V ένα πεπερασµένο σύνολοσυµβόλων που ονοµάζονται κατηγορήµατα F ένα σύνολο δηλώσεων

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

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

Κατηγορικές Γραµµατικές E -> E + T { E 1.val = E 2.val + T.val } E -> T { E.val = T.val } T -> T * F { T 1.val = T 2.val + F.val } T -> F { T.val = F.val } F -> ( E ) { F.val = E.val } F -> num { F.val = num.val }

Κατηγορικές Γραµµατικές και Μεταφραστές η προηγούµενη γραµµατική είχε µόνο συνθετικά κατηγορήµατα τέτοιες γραµµατικές καλούνται S-κατηγορικές γραµµατικές οι γραµµατικές αυτές είναι πολύ ευκολότερο να χρησιµοποιηθούν στους µεταγλωττιστές χρησιµοποιούνται αποκλειστικά αυτές οι γραµµατικές συνήθως στους µεταγλωττιστές χρησιµοποιείται µία γενικότερη µορφή σηµασιολογικών κανόνων που εκτός από τον υπολογισµό τωντιµών των κατηγορηµάτων εκτελούν και κώδικα (π.χ. ενηµερώνουν τον πίνακα συµβόλων, εµφανίζουν µηνύµατα σφάλµατος κλπ.). Οι κανόνες αυτοί ονοµάζονται σηµασιολογικές ρουτίνες.

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

Ένα πιο Σύνθετο Παράδειγµα υπολογισµός ενός δεκαδικού αριθµού εκφρασµένου σε δυαδική µορφή η ακόλουθη γραµµατική χωρίς συµφραζόµενα περιγράφει έναν δυαδικό αριθµό µε τερµατικά σύµβολα τα 0, 1 και. p1: Z::=L p2: Z::=L.L p3: L::=LB p4: L::=B p5: B::=1 p6: B::=0

Το Κατηγόρηµα v κατηγόρηµα v (value): ηδεκαδικήτιµή της υποσυµβολοσειράς που αναγνωρίζεται από ένα µη τερµατικό σύµβολο. Είναι πραγµατικός αριθµός και αφορά τα µη τερµατικά σύµβολα Z, L, B p1: Z::=L p2: Z::=L.L p3: L::=LB p4: L::=B p5: B::=1 p6: B::=0

Σηµασιολογικοί Κανόνες για το v p1: Z::=L Z.v = L.v p2: Z::=L 1.L 2 Z.v = L 1.ν + L 2.v p3: L 0 ::=L 1 B L o.v = L 1.v + B.v p4: L::=B L.v = B.v p5: B::=1 B.v = 2 B.s p6: B::=0 B.v = 0

Το Κατηγόρηµα s αναπαριστά τη θέση του ψηφίου στον αριθµό πρέπει να είναι µηδέν αµέσως αριστερά από την τελεία, ένα για το αµέσως αριστερά ψηφίο, δύο για το επόµενο κ.ο.κ αντίστοιχα πρέπει να είναι -1 για το ψηφίο αµέσως δεξιά από την τελεία, -2 για το πιο δεξία, κ.ο.κ το πρόβληµα µετατίθεται στη σωστή εκχώρηση τιµής στο s

Σηµασιολογικοί Κανόνες για το s Bήµα 1 p1: Z::=L p2: Z::=L 1.L 2 p3: L 0 ::=L 1 B B.s = L 0.s L 1.s = L 0 s + 1 p4: L::=B B.s = L.s p5: B::=1 p6: B::=0

Σηµασιολογικοί Κανόνες για το s Bήµα 2 p1: Z::=L L.s = 0 p2: Z::=L 1.L 2 L 1.s =0 p3: L 0 ::=L 1 B B.s = L 0.s L 1.s = L 0 s + 1 p4: L::=B B.s = L.s p5: B::=1 p6: B::=0

Σηµασιολογικοί Κανόνες για το s Bήµα 3 p1: Z::=L L.s = 0 p2: Z::=L 1.L 2 L 1.s =0 L 2.s=-L 2.l p3: L 0 ::=L 1 B B.s = L 0.s L 1.s = L 0 s + 1 p4: L::=B B.s = L.s p5: B::=1 p6: B::=0

Το Κατηγόρηµα l αναπαριστά το µήκος της συµβολοσειράς του κατηγορήµατος χρησιµοποιείται για να δώσει τιµή στο κατηγόρηµα s

Σηµασιολογικοί Κανόνες για το l p1: Z::=L p2: Z::=L 1.L 2 L 2.s = -L 2.l p3: L 0 ::=L 1 B L o.l = L 1.l + 1 p4: L::=B L.l = 1 p5: B::=1 p6: B::=0

Η Πλήρης Κατηγορική Γραµµατική

Ένα Παράδειγµα Εκτέλεσης

Γραµµατικές Ενεργοποίησης υποπερίπτωση των κατηγορικών γραµµατικών αποδεικνύεται ότι ό,τι µπορεί να περιγράψει µία γραµµατική ενεργοποίησης περιγράφεται και από µία κατηγορική γραµµατική κώδικας ενεργοποιείται καθώς αναγνωρίζεται η συµβολοσειρά εισόδου

Ένα Παράδειγµα p1: S ::= Z. D p2: Z ::= n B p3: Z ::= ε p4: D ::= n D p5: D ::= ε

Ένα Παράδειγµα int value,dlen; p1: S ::= value=0; dlen=0; Z. D p2: Z ::= n value=value*10+n B p3: Z ::= ε p4: D ::= n dlen++; value=value+n/10 dlen ; D p5: D ::= ε

υναµικότητα Γραµµατικών και Μεταφραστές Το σύνολο όλων των λεκτικά ορθών προγραµµάτων µπορεί να περιγραφεί από µία κανονική γραµµατική δεν υπάρχουν λευκοί χαρακτήρες ανάµεσα σε δεσµευµένες λέξεις δε συναντάµε end-of-file ενώ έχουν ανοίξει σχόλια και δεν έχουν κλείσει τα αναγνωριστικά ξεκινούν από γράµµα και ακολουθεί µία σειρά γραµµάτων και αριθµών κλπ

υναµικότητα Γραµµατικών και Μεταφραστές Το σύνολο των συντακτικά ορθών προγραµµάτων περιγράφεται από µία γραµµατική χωρίς συµφραζόµενα βρέθηκε else χωρίς if εκχώρηση σε αριθµητική σταθερά κλπ. Το σύνολο των σηµασιολογικά ορθών προγραµµάτων περιγράφεται από µία γραµµατική µε συµφραζόµενα η µεταβλητή αυτή έχει δηλωθεί; πρόκειται για απλή µεταβλητή ή πίνακα; γράφουµε µήπως έξω από τα όρια ενός πίνακα;

υναµικότητα Γραµµατικών και Μεταφραστές Το σύνολο των προγραµµάτων που τερµατίζουν σε πεπερασµένο χρόνο µε συγκεκριµένη είσοδο µπορεί να περιγραφεί από µία (πολύ πολύπλοκη) γραµµατική χωρίς περιορισµούς Το σύνολο των προγραµµάτων που λύνουν ένα συγκεκριµένο πρόβληµα δε µπορείναπεριγραφείαπόκαµία γραµµατική