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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

1 Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Παραδείγματα Ενοτήτων 1-2 Ενότητα 1: Εισαγωγή Άσκηση 1-1: Θεωρήστε μια υποθετική γλώσσα προγραμματισμού και την παρακάτω γραμματική (χωρίς συμφραζόμενα): assign var = expr var ID paren paren ( expr ) expr expr + term expr term term term term * var CONST / term var CONST ( expr ) η οποία περιγράφει τις αναθέσεις τιμών σε μεταβλητές σε αυτήν τη γλώσσα. Α. Χρησιμοποιώντας κάποιο γενικό σχήμα μετάφρασης οδηγούμενης από τη σύνταξη, δώστε μια παραγωγή και ένα δέντρο συντακτικής ανάλυσης για την παρακάτω συμβολοσειρά: y2(i+1) = 101 / (x-33*j) + 2 υποδεικνύοντας παράλληλα τις λεκτικές μονάδες που κάποιος λεκτικός αναλυτής επιστρέφει στο συντακτικό, όταν αυτές ζητηθούν. Β. Δώστε ένα πιθανό αφηρημένο συντακτικό δέντρο για την ίδια εντολή, καθώς και έναν πιθανό τελικό κώδικα MIPS που να μπορεί να προκύψει από το δέντρο αυτό. Απάντηση Α. Όπως έχουμε δει, η μετάφραση κάποιου προγράμματος της αρχικής γλώσσας σε κώδικα τελικής γλώσσας περνάει από διαδοχικές φάσεις. Κάθε φάση όμως δεν είναι απαραίτητο να έχει ολοκληρωθεί, πριν ξεκινήσει η επόμενη, αλλά μπορεί να επικαλύπτεται με αυτήν. Αυτό σημαίνει ότι κάποια φάση μπορεί να διακοπεί προσωρινά μετά την εφαρμογή της σε τμήμα του προγράμματος, επιτρέποντας την επόμενη φάση να εφαρμοστεί στο ίδιο τμήμα, πριν η ίδια φάση προχωρήσει σε επόμενο τμήμα. Στα σχήματα μετάφρασης οδηγούμενης από τη σύνταξη, κεντρική φάση της μετάφρασης είναι η συντακτική ανάλυση. Ο συντακτικός αναλυτής (ΣΑ) αναλύει το αρχικό πρόγραμμα, καλώντας το λεκτικό αναλυτή (ΛΑ) όποτε χρειάζεται κάποια λεκτική μονάδα, και κατά διαστήματα εκτελεί και σημασιολογικές ρουτίνες για σημασιολογική ανάλυση και παραγωγή ενδιάμεσου κώδικα. Έτσι, οι φάσεις μετάφρασης που καταλήγουν στην παραγωγή ενδιάμεσου κώδικα επικαλύπτονται, με το ΛΑ να διακόπτεται μετά την αναγνώριση μιας λεκτικής μονάδας, και το ΣΑ να διακόπτεται σε επιλεγμένα σημεία των συντακτικών κανόνων που εφαρμόζει. Στα σημεία αυτά γίνεται σημασιολογική ανάλυση και παραγωγή ενδιάμεσου κώδικα για το νέο τμήμα του προγράμματος που αναλύθηκε από τις δύο προηγούμενες φάσεις. Οι δύο επόμενες φάσεις, η βελτιστοποίηση και η παραγωγή τελικού κώδικα, μπορούν να γίνουν είτε σε τμήματα είτε στο σύνολο του ενδιάμεσου κώδικα. Για απλούστευση, θεωρούμε ότι ο ΣΑ λειτουργεί με βάση τη διαδικασία παραγωγής του προγράμματος εισόδου από επάνω προς τα κάτω, ξεκινώντας με το αρχικό σύμβολο της γραμματικής assign, και επιλέγοντας κανόνες με ιδανικό τρόπο. Όπως θα δούμε σε επόμενο κεφάλαιο, η συντακτική ανάλυση μπορεί να γίνεται και από κάτω προς τα επάνω, ελαττώνοντας το

2 2 πρόγραμμα εισόδου στο αρχικό σύμβολο της γραμματικής. Στην πραγματικότητα, η δεδομένη γραμματική δεν αντιμετωπίζεται με τον πρώτο τρόπο, θα χρησιμοποιήσουμε όμως μια α- πλοϊκή παραλλαγή «ιδανικής επιλογής» του τρόπου αυτού, η οποία δίνει καλύτερα τη γενική ιδέα της μετάφρασης, χωρίς να προχωρήσουμε σε λεπτομέρειες. Για να βρούμε μια παραγωγή για τον δεδομένο κώδικα, θα προχωρήσουμε χωρίς αυτό να είναι απαραίτητο αντικαθιστώντας το αριστερότερο κάθε φορά μη τερματικό σύμβολο στους προτασιακούς τύπους που θα συναντάμε. Έτσι, ξεκινώντας με το σύμβολο assign, έ- χουμε τις εξής κινήσεις: assign var = expr ID paren = expr που είναι αναγκαστικές, εφ όσον δεν έχουμε επιλογές στους δύο συντακτικούς κανόνες που χρησιμοποιούμε. Στο σημείο αυτό, κι έχοντας φτάσει σε τερματικό σύμβολο, ο ΣΑ καλεί το ΛΑ, ώστε να πάρει την επόμενη λεκτική μονάδα και να διαπιστώσει αν αυτή αντιστοιχεί στο σύμβολο αυτό. Αν δεν αντιστοιχεί στο σύμβολο αυτό και αν βέβαια δεν έχουμε λεκτικό σφάλμα, θα έχουμε συντακτικό σφάλμα. Έτσι, για το συγκεκριμένο πρόγραμμα που έχουμε, ο ΛΑ αναγνωρίζει τη συμβολοσειρά y2 ως αναγνωριστικό (όνομα μεταβλητής) και επιστρέφει στο ΣΑ το α- ναμενόμενο σύμβολο ID, επιτρέποντας σε αυτόν να συνεχίσει. Η ίδια η συμβολοσειρά y2 διατηρείται στον πίνακα συμβόλων (ΠΣ), ώστε οι επόμενες φάσεις της μετάφρασης να γνωρίζουν το πραγματικό όνομα της μεταβλητής. Για τους σκοπούς του ΣΑ, το σύμβολο ID είναι αρκετό, καθώς μόνο αυτό εμφανίζεται στους συντακτικούς κανόνες της γλώσσας, και όχι το πραγματικό όνομα της μεταβλητής. Επειδή όμως η μετάφραση είναι οδηγούμενη από τη σύνταξη, ο ΛΑ επιστρέφει στο ΣΑ και τον αντίστοιχο δείκτη στον ΠΣ, ώστε αυτός να χρησιμοποιηθεί από τις επόμενες φάσεις που θα μεσολαβήσουν αργότερα. Η παραγωγή τώρα μπορεί να συνεχιστεί για το σύμβολο paren, όπου όμως υπάρχουν δύο επιλογές. Ο ΣΑ καλεί το ΛΑ, ώστε με την επόμενη λεκτική μονάδα να μπορέσει να αποφασίσει ποια κίνηση θα κάνει. Έτσι, για την πρώτη επιλογή απαιτείται το σύμβολο (, ενώ για τη δεύτερη επιλογή απαιτείται το =, το οποίο είναι αυτό που ακολουθεί στην παραγωγή, αν το paren παράγει την κενή συμβολοσειρά. Ο ΛΑ επιστρέφει τη λεκτική μονάδα που αντιστοιχεί στο σύμβολο (, κι επομένως η παραγωγή μας γίνεται: assign + ID ( expr ) = expr όπου τα ενδιάμεσα βήματα παραγωγής που παραλείψαμε είναι αυτά που περιγράψαμε πιο πάνω. Αν ο ΛΑ επέστρεφε λεκτική μονάδα που δεν αντιστοιχούσε ούτε στο σύμβολο ( ούτε στο σύμβολο =, θα είχαμε συντακτικό σφάλμα. Για το σύμβολο expr υπάρχουν τρεις επιλογές. Όμως, ο ΣΑ δε μπορεί να αποφασίσει με μία μόνο λεκτική μονάδα στη διάθεσή του, επειδή οι αντίστοιχοι κανόνες εμφανίζουν αναδρομή, και πρέπει να καλέσει το ΛΑ διαδοχικά, μέχρι να μπορεί να επιλέξει κάποιον κανόνα 1. Εδώ οι διαδοχικές κλήσεις σταματάνε όταν εμφανιστεί το σύμβολο ), και λόγω της παρουσίας του + ο ΣΑ καταλήγει στην παραγωγή: assign + ID ( expr + term ) = expr Οι ενδιάμεσες λεκτικές μονάδες που επέστρεψε ο ΛΑ, και οι οποίες αντιστοιχούν στα σύμβολα ID, +, CONST και ), αποθηκεύονται για μετέπειτα χρήση. Η συμβολοσειρά i εισάγεται στον ΠΣ. Ο αντίστοιχος δείκτης στον ΠΣ, αλλά και η τιμή της σταθεράς που αντιστοιχεί 1 Στην πραγματικότητα αυτός είναι ο λόγος που το μοντέλο ανάλυσης από πάνω προ τα κάτω δε μπορεί να χρησιμοποιηθεί για τη συγκεκριμένη γραμματική, μια που επιθυμούμε να μπορούμε να αποφασίζουμε ντετερμινιστικά την κίνηση του ΣΑ με πεπερασμένο πλήθος ιδανικά μίας λεκτικών μονάδων. Πιο σύνθετα μοντέλα συντακτικής ανάλυσης αντιμετωπίζουν επιτυχώς το πρόβλημα της αναδρομής με ντετερμινιστικό τρόπο. Εναλλακτικά, με μη ντετερμινιστική ανάλυση, επιλέγουμε κάποιον κανόνα στην τύχη, και μόλις καταλήξουμε σε συντακτικό σφάλμα, επιστρέφουμε στο ίδιο σημείο και επιλέγουμε άλλον κανόνα. Μια τέτοια ανάλυση όμως αυξάνει την πολυπλοκότητα του ΣΑ εκθετικά με τον αριθμό των διαθέσιμων κινήσεων.

3 3 στη συμβολοσειρά 1 επιστρέφονται επίσης στο ΣΑ και αποθηκεύονται μαζί με τις αντίστοιχες λεκτικές μονάδες. Στη συνέχεια, κι επειδή μέχρι το σύμβολο + δε μεσολαβεί άλλο + ή -, επιλέγουμε τον τρίτο εναλλακτικό κανόνα για το σύμβολο expr, και η παραγωγή γίνεται: assign + ID ( term + term ) = expr Τώρα ο ΣΑ πρέπει να επιλέξει κανόνα για το πρώτο από τα δύο σύμβολα term. Με διαθέσιμη επόμενη λεκτική μονάδα αυτή που αντιστοιχεί στο σύμβολο ID, αποκλείονται οι κανόνες που αρχίζουν με τα σύμβολα CONST και (. Παραμένουν έτσι δύο κανόνες, αλλά για άλλη μια φορά δε μπορούμε να επιλέξουμε με μία μόνο λεκτική μονάδα, λόγω της αναδρομής που έχει το term. Μπορούμε εύκολα να διαπιστώσουμε ότι για να επιλέξουμε τον πρώτο κανόνα απαιτείται η παρουσία του συμβόλου * πριν το +, που όμως δεν υπάρχει. Ο ΣΑ επιλέγει τον τρίτο κανόνα για το σύμβολο term, και στη συνέχεια το μοναδικό κανόνα για το var, οπότε η παραγωγή γίνεται: assign + ID ( var + term ) = expr ID ( ID paren + term ) = expr Το νέο τερματικό σύμβολο ID που εμφανίστηκε στην παραγωγή αναμενόταν, αφού ταυτίζεται με την επόμενη λεκτική μονάδα που ο ΣΑ έχει αποθηκεύσει και χρησιμοποιήσει για τις παραπάνω επιλογές. Ο ΣΑ μπορεί να συνεχίσει με το σύμβολο paren, για το οποίο επιλέγει το δεύτερο κανόνα, εφ όσον δεν υπάρχει ( πριν το + : assign + ID ( ID + term ) = expr Μετά το + που επαληθεύει τη μέχρι τώρα ανάλυση, αφού αντιστοιχεί στην επόμενη αποθηκευμένη λεκτική μονάδα, ο ΣΑ πρέπει για άλλη μια φορά να επιλέξει κανόνα για το term. Λόγω απουσίας του συμβόλου * πριν το ) αποκλείεται ο πρώτος κανόνας. Παρόμοια, λόγω απουσίας του συμβόλου / πριν το ) αποκλείεται ο δεύτερος κανόνας, παρ όλο που η παρουσία του CONST θα μπορούσε να τον δικαιολογήσει. Ο τρίτος κανόνας απαιτεί την παρουσία του συμβόλου ID, ενώ ο πέμπτος κανόνας απαιτεί την παρουσία του ( ως επόμενη λεκτική μονάδα, κι επομένως και οι δύο αποκλείονται. Έτσι, ο τέταρτος κανόνας θα δώσει: assign + ID ( ID + CONST ) = expr Με το σύμβολο CONST που εμφανίστηκε επαληθεύεται η ανάλυση. Στο σημείο αυτό πρέπει να κληθεί ο σημασιολογικός αναλυτής, για να επαληθεύσει τη σημασιολογική ορθότητα της έκφρασης i+1 που μόλις αναγνωρίστηκε συντακτικά, για παράδειγμα την ορθότητα της εφαρμογής του τελεστή της πρόσθεσης στη μεταβλητή i και στη σταθερά 1. Επίσης μπορεί να γίνει παραγωγή ενδιάμεσου κώδικα για τον υπολογισμό της τιμής της έκφρασης αυτής. Η συντακτική ανάλυση επαληθεύεται περαιτέρω με το σύμβολο ). Και στο σημείο αυτό ο σημασιολογικός αναλυτής είναι απαραίτητος, για να επαληθεύσει την ορθότητα της δεικτοδότησης της μεταβλητής y2. Όπως και προηγουμένως, μπορεί να παραχθεί ενδιάμεσος κώδικας για τον υπολογισμό της διεύθυνσης του στοιχείου της διανυσματικής μεταβλητής y2 που δεικτοδοτείται από την παραπάνω έκφραση. Τώρα έχουμε φτάσει σε σημείο που απαιτείται ξανά η κλήση του ΛΑ. Αυτός επιστρέφει τη λεκτική μονάδα που αντιστοιχεί στο σύμβολο =, όπως και αναμενόταν για αποφυγή συντακτικού σφάλματος. Στη συνέχεια, και για επιλογή κανόνα για το expr, καλούμε διαδοχικά το ΛΑ μέχρι το τέλος του αρχικού προγράμματος, ώστε να έχουμε στη διάθεσή μας όλες τις εμφανίσεις των συμβόλων + και -, αν υπάρχουν, κάτι που είναι αναγκαίο για αντιμετώπιση της αναδρομής που έχει το expr. Έτσι, ο ΣΑ αποθηκεύει για μετέπειτα ανάλυση τις λεκτικές μονάδες που αντιστοιχούν στα σύμβολα CONST, /, (, ID, -, CONST, *, ID, ), + και CONST, αποθηκεύοντας παράλληλα και τους όποιους δείκτες στον ΠΣ ή τις όποιες τιμές σταθερών. Το σύμβολο + που συναντάμε μας οδηγεί στην επιλογή του αντίστοιχου κανόνα για το expr: assign + ID ( ID + CONST ) = expr + term Επειδή δε μεσολαβεί άλλο σύμβολο + ή -, επιλέγουμε στη συνέχεια τον τελευταίο κανόνα για το expr, και παίρνουμε την παραγωγή: assign + ID ( ID + CONST ) = term + term

4 4 Παραβλέποντας τα σύμβολα μεταξύ των παρενθέσεων ( και ) που ο ΣΑ έχει αποθηκεύσει, και τα οποία δε μπορούν να χρησιμοποιηθούν πριν η παραγωγή συναντήσει την αριστερή παρένθεση, η παρουσία των συμβόλων CONST και / και η ταυτόχρονη απουσία του * πριν το σύμβολο + μας οδηγεί στην επιλογή του δεύτερου κανόνα για το πρώτο από τα δύο term, επαληθεύοντας ταυτόχρονα τη συντακτική ορθότητα μέχρι και το σύμβολο / : assign + ID ( ID + CONST ) = CONST / term + term Η απουσία του συμβόλου * μεταξύ των ) και + αποκλείει την επιλογή του πρώτου κανόνα για το πρώτο από τα δύο term, οπότε η παρουσία του συμβόλου ( ως επόμενη λεκτική μονάδα μας αφήνει μόνο μία επιλογή, αυτή του τελευταίου κανόνα για το term: assign + ID ( ID + CONST ) = CONST / ( expr ) + term Αφού επαληθεύσουμε τη συντακτική ορθότητα με το σύμβολο (, μπορούμε να προχωρήσουμε στην ανάλυση της έκφρασης που είναι μέσα στις παρενθέσεις. Έτσι, επιλέγουμε το δεύτερο κανόνα για το σύμβολο expr, εξαιτίας της παρουσίας του - πριν το ) : assign + ID ( ID + CONST ) = CONST / ( expr - term ) + term Επειδή δεν υπάρχει άλλο + ή - πριν το -, επιλέγουμε τον τελευταίο κανόνα για το expr, και στη συνέχεια, επειδή δεν υπάρχει * ή /, αλλά και επειδή επόμενο σύμβολο είναι το ID, επιλέγουμε τον τρίτο κανόνα για το πρώτο από τα τρία τώρα σύμβολα term, και το μοναδικό κανόνα για το var: assign + ID ( ID + CONST ) = CONST / ( term - term ) + term ID ( ID + CONST ) = CONST / ( var - term ) + term ID ( ID + CONST ) = CONST / ( ID paren - term ) + term Τώρα ο ΣΑ μπορεί να επαληθεύσει την ορθότητα της παρουσίας του συμβόλου ID, και να επιλέξει το δεύτερο κανόνα για το σύμβολο paren, αφού δεν ακολουθεί ( : assign + ID ( ID + CONST ) = CONST / ( ID - term ) + term Στη συνέχεια επαληθεύει το σύμβολο - και επιλέγει τον πρώτο κανόνα για το πρώτο από τα δύο term, λόγω της παρουσίας του * πριν το ) : assign + ID ( ID + CONST ) = CONST / ( ID - term * var ) + term Το επόμενο σύμβολο είναι το CONST, χωρίς να ακολουθεί /, οπότε επιλέγεται ο τέταρτος κανόνας για το πρώτο term: assign + ID ( ID + CONST ) = CONST / ( ID - CONST * var ) + term Το πρόγραμμα είναι συντακτικά ορθό για τα δύο επόμενα σύμβολα, και ο ΣΑ εφαρμόζει το μοναδικό κανόνα για το var, ενώ στη συνέχεια επιλέγει το δεύτερο κανόνα για το paren, εφ όσον ακολουθεί το σύμβολο ) : assign + ID ( ID + CONST ) = CONST / ( ID - CONST * ID paren ) + term ID ( ID + CONST ) = CONST / ( ID - CONST * ID ) + term Με την επαλήθευση των συμβόλων ID και ), ο ΣΑ καλεί το σημασιολογικό αναλυτή για έ- λεγχο της έκφρασης του πολλαπλασιασμού και της αφαίρεσης. Τώρα μπορεί να παραχθεί ο ενδιάμεσος κώδικας για τον υπολογισμό της τιμής της έκφρασης x-33*j. Στη συνέχεια, με την επαλήθευση του +, καλείται πάλι ο σημασιολογικός αναλυτής για έλεγχο της έκφρασης της διαίρεσης, και μπορεί να παραχθεί ο αντίστοιχος ενδιάμεσος κώδικας. Για την υπόλοιπη παραγωγή, επιλέγεται ο τέταρτος κανόνας για το σύμβολο term, εφ όσον το επόμενο σύμβολο από το πρόγραμμα είναι το CONST, ενώ δεν ακολουθεί άλλο: assign + ID ( ID + CONST ) = CONST / ( ID - CONST * ID ) + CONST Εδώ ολοκληρώνεται η επαλήθευση της συντακτικής ορθότητας του προγράμματος με το σύμβολο CONST, καλείται ο σημασιολογικός αναλυτής για έλεγχο της έκφρασης της πρόσθεσης, αλλά και της ανάθεσης, και μπορεί να παραχθεί ο ενδιάμεσος κώδικας για το υπόλοιπο πρόγραμμα. Το δέντρο συντακτικής ανάλυσης (ΔΣΑ) που αντιστοιχεί στην πιο πάνω παραγωγή φαίνεται στην επόμενη σελίδα, όπου κάτω από τα τερματικά σύμβολα ID και CONST γράφονται οι πληροφορίες που ο ΛΑ παρέχει για σημασιολογική ανάλυση. Στην πραγματικότητα, αντί για τα ονόματα των μεταβλητών που εδώ γράφονται για απλούστευση, παρέχονται οι αντίστοιχοι δείκτες στον ΠΣ. Το ΔΣΑ αποτελεί μια εναλλακτική απεικόνιση της παραγωγής, με τη διαδι-

5 5 assign var = expr ID paren expr + term y2 ( expr ) term CONST expr + term CONST / term 2 term CONST 101 ( expr ) var 1 expr - term ID paren term term * var i var CONST ID paren ID paren 33 j x Δέντρο συντακτικής ανάλυσης για την έκφραση y2(i+1) = 101 / (x-33*j) + 2 κασία παραγωγής να προκύπτει από το ΔΣΑ με διαπέραση αυτού από πάνω προς τα κάτω και από αριστερά προς τα δεξιά. B. Ένα αφηρημένο συντακτικό δέντρο (ΑΣΔ) μπορεί να προκύψει από το ΔΣΑ, με όσο το δυνατό περισσότερες αφαιρέσεις μη τερματικών συμβόλων, και προωθήσεις στη θέση αυτών τερματικών συμβόλων τελεστών από το επόμενο επίπεδο, καθώς και με αφαιρέσεις άλλων τερματικών συμβόλων που δεν παρέχουν καμία πληροφορία για το σημασιολογικό αναλυτή ή για την παραγωγή ενδιάμεσου κώδικα. Εναλλακτικά, το ΑΣΔ μπορεί να κατασκευαστεί κατ ευθείαν μέσα από το ΣΑ, μια που οι παραπάνω απλοποιήσεις μπορούν να ενσωματωθούν στην κατασκευή του, ενώ από την άλλη μεριά το ΔΣΑ δε χρειάζεται στην πραγματικότητα να κατασκευαστεί. Έτσι για παράδειγμα, ο ΣΑ μπορεί να κατασκευάσει κόμβους τελεστών με παιδιά τα τελούμενα αυτών, ή ακόμα μπορεί να αποφύγει την κατασκευή κόμβου όταν κάτι τέτοιο δεν είναι απαραίτητο. Το ΑΣΔ που αντιστοιχεί στο παραπάνω ΔΣΑ δίνεται στην επόμενη σελίδα. Παρατηρούμε ότι: 1. Από το αρχικό δέντρο διατηρήσαμε τα τερματικά σύμβολα ID, CONST και όλους τους τελεστές, συμπεριλαμβανομένου του τελεστή ανάθεσης. Ακόμα, αφαιρέσαμε τις παρενθέσεις που αντιστοιχούν στον κανόνα term ( expr ), επειδή δε χρειάζονται στη συνέχεια. Πράγματι, η προτεραιότητα που σημασιολογικά δίνουν στην εκτέλεση κάποιων πράξεων παραμένει στη δομή του δέντρου και μετά την αφαίρεσή τους από αυτό, δεδομένου ότι ο τελικός κώδικας που εκτελεί τις πράξεις παράγεται με διαπέραση του ΑΣΔ από κάτω προς τα πάνω. 2. Από τα μη τερματικά σύμβολα, αφαιρέσαμε τα assign, expr και term, επειδή προωθήσαμε τα αντίστοιχα σύμβολα τελεστών στη θέση αυτών. Ειδικότερα για παραγωγές όπου δε

6 6 = ( ) + ID + / CONST y2 ( ) CONST CONST - 2 ID ( ) * i ID 0 CONST ( ) x 33 ID 0 Ένα αφηρημένο συντακτικό δέντρο για την έκφραση y2(i+1) = 101 / (x-33*j) + συμμετέχουν τελεστές (όπως για παράδειγμα από τον κανόνα expr term ) το μη τερματικό σύμβολο του αριστερού μέλους αφαιρέθηκε εντελώς από το δέντρο, και στη θέση του ανέβηκε το σύμβολο του δεξιού μέλους, που πιθανά αφαιρέθηκε κι αυτό με τη σειρά του. 3. Το μη τερματικό σύμβολο var αφαιρέθηκε και αντικαταστάθηκε με το σύμβολο ( ), το οποίο λειτουργεί ως τελεστής αναφοράς σε πίνακα με τη σημασιολογία που περιγράφει τον υπολογισμό μιας διεύθυνσης μνήμης από την πρόσθεση της αρχικής διεύθυνσης μιας μεταβλητής και της τιμής ενός δείκτη. Ας σημειωθεί ότι το σύμβολο αυτό παριστάνει μια διεύθυνση, και όχι απαραίτητα την τιμή της αντίστοιχης μεταβλητής. 4. Το μη τερματικό σύμβολο paren αφαιρείται, με την προώθηση του αντίστοιχου κόμβου προς τα επάνω. Ειδικότερα, η κενή συμβολοσειρά αντικαθίσταται με το 0 σαν τιμή του αντίστοιχου δείκτη. Με τον τρόπο αυτό χειριζόμαστε βαθμωτές μεταβλητές ως πίνακες με δείκτη 0. Όπως αναφέραμε παραπάνω, ο τελικός κώδικας μπορεί να παραχθεί με διαπέραση του ΑΣΔ από κάτω προς τα πάνω και από αριστερά προς τα δεξιά. Πριν όμως ο μεταγλωττιστής μπορέσει να παράγει τελικό κώδικα, θα πρέπει να γνωρίζει την οργάνωση του χώρου δεδομένων που απαιτεί η γλώσσα που μεταφράζεται, και τον τρόπο με τον οποίο η οργάνωση αυτή θα υποστηριχτεί στην τελική γλώσσα. Επίσης, θα πρέπει να γνωρίζει το μοντέλο συνόλου εντολών της τελικής γλώσσας, ώστε να ξέρει πού ο τελικός κώδικας θα μπορεί να αποθηκεύει ενδιάμεσα αποτελέσματα κάποιων πράξεων, και φυσικά τις ίδιες τις διαθέσιμες εντολές της τελικής γλώσσας. Κάνοντας κάποιες συγκεκριμένες υποθέσεις για την οργάνωση του χώρου δεδομένων, τις οποίες θα αποφύγουμε να αναλύσουμε εδώ, αλλά και θεωρώντας το μοντέλο συνόλου εντολών και τις εντολές MIPS, ένας τελικός κώδικας που θα μπορούσε να παραχθεί από το παραπάνω ΑΣΔ δίνεται στη συνέχεια: Κώδικας Σχόλια addiu $10,$gp,192 Αρχική διεύθυνση διανύσματος y2 lw $11,20($sp) Φόρτωση τιμής μεταβλητής i addiu $11,$11,1 Αύξηση κατά 1 sll $11,$11,2 Υπολογισμός διεύθυνσης του στοιχείου y2(i+1) j

7 7 addu $10,$10,$11 ori $11,$0,101 Σταθερά 101 lw $12,180($gp) Φόρτωση τιμής μεταβλητής x ori $13,$0,33 Σταθερά 33 lw $14,36($sp) Φόρτωση τιμής μεταβλητής j multu $13,$14 mflo $13 Πολλαπλασιασμός subu $12,$12,$13 Αφαίρεση divu $11,$12 mflo $11 Διαίρεση addiu $11,$11,2 Αύξηση κατά 2 sw $11,0($10) Αποθήκευση του στοιχείου y2(i+1) Οι υποθέσεις που οδήγησαν στον παραπάνω κώδικα ξεφεύγουν από τους εισαγωγικούς σκοπούς της άσκησης, αλλά αναλύονται εκτενώς σε επόμενα κεφάλαια του μαθήματος.

8 8 Ενότητα 2: Γλώσσες, γραμματικές και αυτόματα Άσκηση 2-1: Να αποδείξετε την ισοδυναμία ενός ΜΠΑ-ε με το ΝΠΑ που κατασκευάζεται από αυτό με τη μέθοδο κατασκευής του δυναμοσυνόλου των καταστάσεων του πρώτου. Απάντηση Δύο ΠΑ είναι ισοδύναμα, όταν αναγνωρίζουν την ίδια γλώσσα. Άρα, για να αποδείξουμε το ζητούμενο, αρκεί να αποδείξουμε ότι κάθε συμβολοσειρά που αναγνωρίζεται από το ένα ΠΑ αναγνωρίζεται και από το άλλο. Έστω λοιπόν τυχαία συμβολοσειρά α x 1 x 2 x n, με x 1,x 2,,x n σύμβολα του αλφαβήτου των δύο ΠΑ. Έστω κατ αρχήν ότι η α αναγνωρίζεται από το αρχικό ΜΠΑ-ε. Αφού η συμβολοσειρά αυτή αναγνωρίζεται από το ΜΠΑ-ε, θα υπάρχει κάποια ακολουθία S 0,1, S 0,2,, S 0,m0, S 1,1, S 1,2,, S 1,m1,, S n,1, S n,2,, S n,mn διαδοχικών καταστάσεών του, όχι αναγκαστικά διαφορετικών μεταξύ τους, με S 0,1 την αρχική κατάσταση και S n,mn μια τελική κατάστασή του, και με m0, m1,, mn 1, τέτοιων ώστε οι μεταβάσεις S 0,1 S 0,2 S 0,m0, S 1,1 S 1,2 S 1,m1,..., S n,1 S n,2 S n,mn να είναι ε-μεταβάσεις, και οι μεταβάσεις S 0,m0 S 1,1, S 1,m1 S 2,1,..., S n-1,m(n-1) S n,1 να είναι μεταβάσεις για τα σύμβολα x 1, x 2,, x n αντίστοιχα. Τότε μπορούμε εύκολα να βρούμε την ακολουθία S 0 ', S 1 ',, S n ' διαδοχικών καταστάσεων του ΝΠΑ, η οποία να αναγνωρίζει την α, ως εξής: S 0 ' = ε-κλείσιμο({s 0,1 }). H S 0 ' είναι η αρχική κατάσταση του ΝΠΑ, όπως αυτή ορίζεται από τον αλγόριθμο μετατροπής. S 1 ' = ε-κλείσιμο( (S 0 ', x 1 )). Η S 1 ' προκύπτει άμεσα από τον αλγόριθμο μετατροπής, και επομένως ακολουθεί την S 0 ' στο ΝΠΑ με είσοδο x 1, ενώ περιέχει την S 1,1, αφού η S 0 ' περιέχει την S 0,m0 και η S 1,1 ακολουθεί την S 0,m0 στο αρχικό ΠΑ με είσοδο x 1. Όμοια συνεχίζοντας βρίσκουμε τις καταστάσεις S i ', με 2 i n. Για τον ίδιο λόγο όπως προηγουμένως, η S n ' περιέχει την κατάσταση S n,1. Η S n ' περιέχει τότε και την S n,mn ως εφαρμογή της συνάρτησης ε-κλείσιμο. Αφού η S n,mn είναι τελική κατάσταση στο ΜΠΑ-ε, η S n ' θα είναι τελική κατάσταση στο ΝΠΑ, κι επομένως η α θα αναγνωρίζεται στο ΝΠΑ. Έστω τώρα ότι η συμβολοσειρά α αναγνωρίζεται από το ΝΠΑ. Αυτό σημαίνει ότι υπάρχει μια ακολουθία S 0 ', S 1 ',, S n ' διαδοχικών καταστάσεων του ΝΠΑ, όχι αναγκαστικά διαφορετικών μεταξύ τους, με S 0 ' την αρχική κατάσταση και S n ' μια τελική κατάστασή του, τέτοιων ώστε οι μεταβάσεις S 0 ' S 1 ', S 1 ' S 2 ',..., S n-1 ' S n ' να είναι μεταβάσεις για τα σύμβολα x 1, x 2,, x n αντίστοιχα. Η κατασκευή του ΝΠΑ μας λέει ότι κάθε μία από τις μεταβάσεις αυτές είναι μεταβάσεις μεταξύ συνόλων καταστάσεων του αρχικού ΜΠΑ-ε. Έτσι, η μετάβαση S i-1 ' S i ' που γίνεται για το σύμβολο x i (1 i n) υποδηλώνει ότι υπάρχει τουλάχιστον μία μετάβαση μεταξύ δύο καταστάσεων του ΜΠΑ-ε, μία από το σύνολο S i-1 ' και μία από το σύνολο S i ', που γίνεται για το x i, και όλες οι καταστάσεις του S i ' που δεν είναι άμεσα προσιτές από καταστάσεις του S i-1 ' είναι αναγκαστικά προσιτές από άλλες καταστάσεις του S i ' μέσω ε- μεταβάσεων. Με βάση την παρατήρηση αυτή μπορούμε να βρούμε μια ακολουθία S 0,1, S 0,2,, S 0,m0, S 1,1, S 1,2,, S 1,m1,, S n,1, S n,2,, S n,mn διαδοχικών καταστάσεων του αρχικού ΠΑ, με m0, m1,, mn 1, η οποία να αναγνωρίζει την α, δουλεύοντας από το τέλος της συμβολοσειράς προς την αρχή, ως εξής: Εφόσον η S n ' είναι τελική κατάσταση του ΝΠΑ, θα περιέχει τουλάχιστον μία τελική κατάσταση του αρχικού ΜΠΑ-ε. Θεωρούμε μία τέτοια τελική κατάσταση ως την κατάσταση S n,mn. Σύμφωνα με την παραπάνω παρατήρηση, υπάρχει ένα ζεύγος καταστάσεων S n-1,m(n-1) και S n,1 του αρχικού ΠΑ, με την πρώτη να ανήκει στο σύνολο S n-1 ' και τη δεύτερη να ανήκει στο σύνολο S n ', με μετάβαση από την πρώτη στη δεύτερη με το σύμβολο x n, τέτοιων ώ-

9 9 στε, αν η S n,1 δεν ταυτίζεται με την S n,mn, τότε να υπάρχει ακολουθία S n,1, S n,2,, S n,mn διαδοχικών καταστάσεων του ΜΠΑ-ε που να ανήκουν στο σύνολο S n ', με τις μεταβάσεις S n,1 S n,2 S n,mn να είναι όλες ε-μεταβάσεις. Επαναλαμβάνουμε τα παραπάνω ξεκινώντας με την S n-1,m(n-1) και για όλα τα προηγούμενα σύμβολα της α, μέχρι να καταλήξουμε σε κάποια κατάσταση S 0,m0 του αρχικού ΠΑ, η οποία να περιέχεται στην αρχική κατάσταση S 0 ' του ΝΠΑ. Από την κατασκευή της κατάστασης S 0 ' γνωρίζουμε ότι αν η S 0,m0 δεν ταυτίζεται με την αρχική κατάσταση S 0,1 του αρχικού ΠΑ, τότε θα υπάρχει ακολουθία S 0,1, S 0,2,, S 0,m0 διαδοχικών καταστάσεών του που να ανήκουν στο σύνολο S 0 ', με τις μεταβάσεις S 0,1 S 0,2 S 0,m0 να είναι όλες ε-μεταβάσεις. Έχοντας καταλήξει στην αρχική κατάσταση του ΜΠΑ-ε, έχουμε βρει την ακολουθία καταστάσεών του που αναγνωρίζει την α. Για την ειδική περίπτωση που η α είναι η κενή συμβολοσειρά, η απόδειξη δεν αλλάζει, αρκεί να μη θεωρήσουμε καθόλου μεταβάσεις για σύμβολα του αλφαβήτου των δύο ΠΑ. Τότε η S 0,m0 θα είναι τελική κατάσταση του αρχικού ΜΠΑ-ε, ενώ η S 0 ' θα είναι αναγκαστικά και τελική κατάσταση του ΝΠΑ. Άσκηση 2-2: Θεωρήστε τη γλώσσα των συμβολοσειρών ψηφίων 0 και 1, στις οποίες υπάρχουν τουλάχιστον δύο 1 πριν από κάθε 0, εκτός αν το 0 είναι το πρώτο ψηφίο, και τουλάχιστον δύο 1 μετά από κάθε 0, εκτός αν το 0 είναι το τελευταίο ψηφίο. Α. Να δώσετε ένα ΠΑ που να αναγνωρίζει τις συμβολοσειρές της γλώσσας. Αν δεν είναι ήδη ΝΠΑ, να το μετατρέψετε σε ΝΠΑ, και αν δεν είναι ήδη ελάχιστο, να το ελαχιστοποιήσετε. Στη συνέχεια να ανάγετε το τελικό ΝΠΑ σε ΚΕ. Β. Να δώσετε μια άλλη ΚΕ που να περιγράφει τις συμβολοσειρές της γλώσσας. Χρησιμοποιήστε την κατασκευή Thompson για να ανάγετε την ΚΕ σε ΜΠΑ-ε. Να μετατρέψετε το ΜΠΑ-ε σε ΝΠΑ και να το ελαχιστοποιήσετε. Επαληθεύστε ότι προέκυψε το ίδιο ελάχιστο ΝΠΑ με προηγουμένως! Απάντηση Α. Σύμφωνα με την περιγραφή των συμβολοσειρών που πρέπει να αναγνωρίζονται από αυτό, το ζητούμενο ΠΑ θα πρέπει να περιέχει υποχρεωτικά το πιο κάτω τμήμα: Α Β C D E F ώστε να αναγνωρίζει μια συμβολοσειρά από δύο 1 ακολουθούμενα από 0 και πάλι από δύο 1. Για τις συμβολοσειρές που δεν ξεκινάνε με 0 ούτε τελειώνουν σε 0, η κατάσταση Α θα αποτελεί αρχική κατάσταση, ενώ η κατάσταση F θα αποτελεί τελική κατάσταση. Επίσης, η Α μπορεί να είναι και τελική κατάσταση, ώστε να αναγνωρίζονται συμβολοσειρές χωρίς κανένα ψηφίο 0, συμπεριλαμβανομένης και της κενής συμβολοσειράς. Μετάβαση από την Α στον εαυτό της με το ψηφίο 1 επιτρέπει την αναγνώριση συμβολοσειράς με περισσότερα από δύο συνεχόμενα 1 πριν το 0, ενώ μετάβαση με 1 από την F στον ε- αυτό της επιτρέπει πρόσθετα ψηφία 1 μετά τα δύο 1 που υποχρεωτικά ακολουθούν ένα 0. Ακόμα, μια ε-μετάβαση από την κατάσταση F πίσω στην C εξασφαλίζει την αναγνώριση συμβολοσειρών με περισσότερα από ένα ψηφία 0 που να συμφωνούν με τη δεδομένη περιγραφή. Για να συμπεριλάβουμε την περίπτωση η συμβολοσειρά να αρχίζει με 0, εισάγουμε μια νέα αρχική κατάσταση, έστω S, από την οποία να μεταβαίνουμε αυθόρμητα είτε στην Α είτε στην

10 10 C. Τέλος, για να συμπεριλάβουμε την περίπτωση η συμβολοσειρά να τελειώνει σε 0, αρκεί να προσθέσουμε μια ακόμα τελική κατάσταση, έστω G, στην οποία να μεταβαίνουμε με 0 είτε από την C είτε από την F. Κατασκευάσαμε έτσι το πιο κάτω ΠΑ, το οποίο είναι ΜΠΑ-ε: 1 0 S ε Α Β C D E F ε ε 1 G Για να μετατρέψουμε το αυτόματο αυτό σε ΝΠΑ, εφαρμόζουμε τον αλγόριθμο μετατροπής, δημιουργώντας μία-μία τις καταστάσεις του νέου αυτόματου, εξετάζοντας στη συνέχεια τις μεταβάσεις της. Έτσι, η αρχική κατάσταση του νέου αυτόματου, έστω A, θα είναι το ε-κλείσιμο του συνόλου {S}: A ε-κλείσιμο({s}) = {S,A,C} Οι υπόλοιπες καταστάσεις και οι μεταβάσεις μεταξύ αυτών για το νέο αυτόματο βρίσκονται ως εξής: B δ(a, 1) = ε-κλείσιμο({a,b}) = {A,B} D δ(a, 0) = ε-κλείσιμο({d,g}) = {D,G} C δ(b, 1) = ε-κλείσιμο({a,β,c}) = {A,B,C} E δ(d, 1) = ε-κλείσιμο({e}) = {E} δ(c, 1) = ε-κλείσιμο({a,b,c}) = C δ(c, 0) = ε-κλείσιμο({d,g}) = D F δ(e, 1) = ε-κλείσιμο({f}) = {F,C} δ(f, 1) = ε-κλείσιμο({f}) = F δ(f, 0) = ε-κλείσιμο({d,g}) = D ενώ άλλες μεταβάσεις δεν ορίζονται, ή αλλιώς θεωρούμε ότι οδηγούν σε μια υπονοούμενη κατάσταση παγίδευσης, κάτι που ισοδυναμεί με απόρριψη. Οι τελικές καταστάσεις του νέου αυτόματου είναι οι A, B, C, D και F, εφ όσον περιέχουν μία τουλάχιστον από τις τελικές καταστάσεις του αρχικού αυτόματου A, F και G. Το ισοδύναμο ΝΠΑ είναι επομένως το εξής: A B C D Ε F 0 0 Για να ελαχιστοποιήσουμε το παραπάνω ΝΠΑ, εφαρμόζουμε τον αλγόριθμο ελαχιστοποίησης, που εξετάζει επαναληπτικά όλα τα δυνατά ζεύγη πιθανά ισοδύναμων καταστάσεων. Έτσι, διαχωρίζοντας τις τελικές από τις μη τελικές καταστάσεις, και συνυπολογίζοντας την υπονοούμενη κατάσταση παγίδευσης, έστω Π, στην οποία καταλήγουν όλες οι μη ορισμένες μεταβάσεις, λαμβάνουμε το ακόλουθο αρχικό σύνολο ζευγών πιθανά ισοδύναμων καταστάσεων S: S = {(Ε,Π), (A,B ), (A,C ), (A,D ), (A,F ), (B,C ), (B,D ), (B,F ), (C,D ), (C,F ), (D,F )} Στη συνέχεια θα εξετάσουμε το S όσες φορές χρειάζεται, διαγράφοντας ζεύγη καταστάσεων που προκύπτουν μη ισοδύναμες.

11 11 Κατ αρχήν παρατηρούμε ότι η Ε δε μπορεί να είναι ισοδύναμη με την Π, εφ όσον έχει μετάβαση προς τελική κατάσταση και επομένως δεν είναι κατάσταση παγίδευσης. Άρα το ζεύγος (Ε,Π) διαγράφεται από το σύνολο S. Μια ικανή αλλά όχι και αναγκαία συνθήκη διαγραφής ζεύγους καταστάσεων που είναι εύκολο να ελεγχθεί όταν στο ΝΠΑ δεν απεικονίζονται καταστάσεις παγίδευσης, είναι αν για κάποιο σύμβολο η μια κατάσταση από το ζεύγος δεν ορίζει μετάβαση, ενώ η άλλη ορίζει. Το ζεύγος τότε διαγράφεται, αφού οι δύο καταστάσεις διακρίνονται για τουλάχιστον μία συμβολοσειρά, αυτή που με το σύμβολο αυτό οδηγεί σε αναγνώριση μέσω της μετάβασης που είναι ορισμένη. Τέτοια συμβολοσειρά πρέπει να υπάρχει, αλλιώς η κατάσταση στην οποία γίνεται μετάβαση θα έπρεπε να είναι κατάσταση παγίδευσης. Τα ζεύγη που διαγράφονται με βάση την παραπάνω συνθήκη, και από τη στιγμή που η Ε δεν είναι κατάσταση παγίδευσης, είναι τα (A,B ), (A,D ), (B,C ), (B,F ), (C,D ) και (D,F ), επειδή οι καταστάσεις B και D δεν ορίζουν μετάβαση για το ψηφίο 0. Έτσι, καταλήγουμε στο ακόλουθο σύνολο S: S = { (A,C ), (A,F ), (B,D ), (C,F )} Οι καταστάσεις του πρώτου ζεύγους δε διακρίνονται για το ψηφίο 0, αφού και οι δύο με αυτό οδηγούν στην ίδια κατάσταση D. Διακρίνονται όμως για το ψηφίο 1, αφού με αυτό οδηγούν στις καταστάσεις B και C, και το ζεύγος (B,C ) δεν ανήκει στο S. Επομένως, το πρώτο ζεύγος διαγράφεται από το S. Για τον ίδιο λόγο, οι καταστάσεις του δεύτερου ζεύγους διακρίνονται για το ψηφίο 1, και επομένως, και το δεύτερο ζεύγος διαγράφεται από το S. Το τρίτο ζεύγος επίσης διαγράφεται από το S, αφού οι καταστάσεις του διακρίνονται για το ψηφίο 1, με το οποίο η μία οδηγεί σε τελική και η άλλη σε μη τελική κατάσταση. Το τελευταίο ζεύγος (C,F ) είναι το μόνο που θα παραμείνει στο S, επειδή οι καταστάσεις του οδηγούν για 0 στην ίδια κατάσταση και για 1 στον εαυτό τους. Πιο συγκεκριμένα, οι καταστάσεις του ζεύγους δε διακρίνονται ούτε για το ψηφίο 0, αφού αυτό οδηγεί και τις δύο στην D, αλλά ούτε και για το ψηφίο 1, αφού αυτό τις οδηγεί στο ζεύγος (C,F ) που είναι αυτό που εξετάζουμε και ακόμα ανήκει στο S. Έτσι, το S θα γίνει: S = {(C,F )} Εξετάζοντας το S για άλλη μια φορά, θα δούμε ότι το ζεύγος (C,F ) δε διαγράφεται, κι επομένως θα μας δώσει και τις μοναδικές ισοδύναμες καταστάσεις του αυτόματου. Μετά από σύμπτυξη των ισοδύναμων καταστάσεων, το ζητούμενο ΝΠΑ θα προκύψει ως ε- ξής: Α Β CF D E 0 όπου οι δύο ισοδύναμες καταστάσεις έχουν αντικατασταθεί από την κατάσταση CF. Για να βρούμε την κανονική έκφραση (ΚΕ) που αντιστοιχεί στο παραπάνω ελαχιστοποιημένο ΝΠΑ, θα χρησιμοποιήσουμε τον αλγόριθμο που περιγράφεται στη συνέχεια. Ο αλγόριθμος αυτός βασίζεται σε δύο ορισμούς: (α) Το γενικευμένο πεπερασμένο αυτόματο είναι το ΠΑ, το οποίο αντί για μεμονωμένα σύμβολα, έχει ως ετικέτες ΚΕ πάνω στο αλφάβητό του, έτσι ώστε μια μετάβαση να μπορεί να γίνει, εάν και μόνο εάν η αντίστοιχη ΚΕ αναγνωρίζεται στη συμβολοσειρά εισόδου, και (β) Η κενή ΚΕ, που συμβολίζουμε ως, είναι η ΚΕ που περιγράφει την κενή γλώσσα, με ιδιότητες: A = A, A =, * = ε, όπου Α άλλη ΚΕ. Έτσι, για κάθε τελική κατάσταση του αυτόματου: 1. Θεωρούμε το αυτόματο που προκύπτει από το αρχικό αν διατηρηθεί μόνο αυτή η τελική κατάσταση και οι υπόλοιπες μετατραπούν σε μη τελικές. Απαλείφουμε όσες καταστάσεις γί-

12 12 νονται ή προκύπτουν ισοδύναμες με καταστάσεις παγίδευσης. Γενικεύουμε το αυτόματο, θεωρώντας τα σύμβολα μετάβασης ως ΚΕ. 2. Αφαιρούμε διαδοχικά από το αυτόματο καταστάσεις και τις αντίστοιχες συνδέσεις γύρω από αυτές, δημιουργώντας νέες συνδέσεις με ετικέτες κατάλληλες ΚΕ. Έστω το πιο κάτω τμήμα ενός γενικευμένου ΝΠΑ: R 1m q 1 R 11 p 1 S. Q 1 P 1.. s... Q k P m q k R km p m R k1 Το σχήμα αυτό παρουσιάζει όλες τις μεταβάσεις που θα μπορούσαν να σχετίζονται με κάποια τυχαία μη τελική κατάσταση s. Οι υπόλοιπες καταστάσεις μπορούν να είναι και τελικές. Μια κατάσταση p i είναι δυνατό να ταυτίζεται με μια κατάσταση q j. Αν η απ ευθείας μετάβαση μεταξύ των p i και q j δεν ορίζεται, ο όρος R ij γίνεται. Παρόμοια για τον όρο S, αν δεν υπάρχει κυκλική μετάβαση στην s. Η αφαίρεση της κατάστασης s από το αυτόματο αυτό οδηγεί σε ένα αυτόματο όπου κάθε κατάσταση q i συνδέεται απ ευθείας με κάθε κατάσταση p j με ετικέτα την ΚΕ: R ij Q i S*P j Η αφαίρεση καταστάσεων γίνεται για όλες τις καταστάσεις πλην της αρχικής και της τελικής. 3. Όταν δε μπορούν να αφαιρεθούν άλλες καταστάσεις, υπάρχουν δύο δυνατές περιπτώσεις. Είτε έχουμε ένα αυτόματο της μορφής: R S U r u T όπου R, S, Τ και U είναι επιμέρους ΚΕ (πιθανά όλες εκτός της S), οπότε μια ΚΕ που δίνει τις συμβολοσειρές που αναγνωρίζονται από το αυτόματο μπορεί να είναι η: (R SU*T)*SU* είτε έχουμε ένα αυτόματο της μορφής: r R όπου R είναι επιμέρους ΚΕ (πιθανά ), οπότε η ΚΕ των συμβολοσειρών του αυτόματου είναι η: R* Η ζητούμενη ΚΕ είναι η διάζευξη όλων των ΚΕ που βρίσκονται για κάθε τελική κατάσταση του ΝΠΑ ξεχωριστά.

13 13 Για το ΝΠΑ που μας δίνεται, μπορούμε εύκολα να πάρουμε 4 επιμέρους αυτόματα, ένα για κάθε μία από τις 4 τελικές του καταστάσεις. Έτσι, για τις τελικές καταστάσεις Α και Β παίρνουμε τα αυτόματα: Α Α 1 Β τα οποία αναγνωρίζουν τις συμβολοσειρές ε και 1 αντίστοιχα. Παρατηρήστε ότι στα δύο πιο πάνω αυτόματα όλες οι υπόλοιπες καταστάσεις έχουν αφαιρεθεί, επειδή ισοδυναμούν με καταστάσεις παγίδευσης, καθώς δε μπορούν να οδηγήσουν στην Α ή στη Β, αντίστοιχα. Για την τελική κατάσταση CF παίρνουμε το αυτόματο: Α Β CF D E 0 στο οποίο μπορούμε να εφαρμόσουμε τον πιο πάνω αλγόριθμο, κατ αρχήν αφαιρώντας την κατάσταση Β, ώστε να πάρουμε μετάβαση από την Α στη CF με ετικέτα 11, καθώς και την κατάσταση E, ώστε να πάρουμε μια νέα μετάβαση από την D στη CF με ετικέτα 11. Έτσι, προκύπτει το ακόλουθο γενικευμένο αυτόματο: Α CF D 0 Η κατάσταση D αφαιρείται με ταυτόχρονη δημιουργία μιας εναλλακτικής μετάβασης από την Α στη CF με ετικέτα 011 και μιας εναλλακτικής κυκλικής μετάβασης από την CF στον εαυτό της, επίσης με ετικέτα 011. Οι δύο μεταβάσεις από την Α στη CF συμπτύσσονται σε μία, με ετικέτα τη διάζευξη των ετικετών των αρχικών μεταβάσεων, δηλαδή την Παρόμοια, οι δύο εναλλακτικές κυκλικές μεταβάσεις της CF συμπτύσσονται σε μία, με ετικέτα Έτσι προκύπτει το ακόλουθο αυτόματο: Α CF οπότε η ΚΕ που αντιστοιχεί στο αυτόματο αυτό είναι η (11 011)(1 011)*. Τέλος, για την τελική κατάσταση D το αντίστοιχο αυτόματο θα είναι: Α Β CF D 1 E

14 14 Αφαιρώντας όπως παραπάνω τις καταστάσεις Β και Ε προκύπτει το γενικευμένο αυτόματο: 11 0 Α CF 1 11 D 0 Τώρα αφαιρούμε την CF, οπότε δημιουργείται εναλλακτική μετάβαση από την Α στην D με ετικέτα 111*0, και κυκλική μετάβαση από την D στον εαυτό της, επίσης με ετικέτα 111*0. Οι δύο μεταβάσεις από την Α στην D συμπτύσσονται σε μία, με ετικέτα 0 111*0. Καταλήγουμε έτσι στο αυτόματο: Α D 0 111*0 111*0 με αντίστοιχη ΚΕ την (0 111*0)(111*0)*. Συνολικά, η ζητούμενη ΚΕ για το ΝΠΑ που βρήκαμε θα είναι η: ε 1 (11 011)(1 011)* (0 111*0)(111*0)* Παρατηρήστε ότι: (1) Το ΜΠΑ που κατασκευάσαμε αρχικά δεν είναι το μοναδικό για την περιγραφή που μας δίνεται στην άσκηση. Για παράδειγμα, η δεύτερη κυκλική μετάβαση θα μπορούσε να ή- ταν σε μια από τις καταστάσεις D, Ε, αντί στην F. (2) Η πιο πάνω μέθοδος εύρεσης της ΚΕ μπορεί να εφαρμοστεί απ ευθείας σε ένα ΜΠΑ, μια που σε κανένα στάδιο της κατασκευής αυτής δε χρησιμοποιήσαμε το γεγονός ότι το αυτόματο είναι ντετερμινιστικό. (3) Στη μέθοδο αναγωγής ΠΑ σε ΚΕ που είδαμε, θεωρήσαμε ξεχωριστά κάθε τελική κατάσταση. Θα μπορούσαμε εναλλακτικά να μετατρέψουμε όλες τις τελικές καταστάσεις σε μη τελικές, εισάγοντας παράλληλα ε-μεταβάσεις από αυτές προς μια νέα μοναδική τελική κατάσταση. Έτσι δεν χρειάζεται να δουλεύουμε ξεχωριστά για κάθε τελική κατάσταση. (4) Η ΚΕ που περιγράφει μια κανονική γλώσσα δεν είναι μοναδική. Αν για παράδειγμα ε- φαρμόσουμε τον ίδιο αλγόριθμο στο μη ελαχιστοποιημένο ΝΠΑ, θα καταλήξουμε στην ΚΕ: ε 1 111* (0 111*0)(111*0)* (0 111*0)11(1 011)* Β. Επειδή η ΚΕ περιγραφής της γλώσσας δεν είναι μοναδική, μπορούμε να βρούμε κάποια άλλη ΚΕ, η οποία όμως να προκύπτει με φυσικό τρόπο από την περιγραφή της γλώσσας, α- κριβώς όπως κάναμε στο προηγούμενο ερώτημα για να βρούμε το αρχικό ΜΠΑ-ε. Έτσι, μια επιμέρους ΚΕ που να επιβάλλει τουλάχιστον δύο 1 πριν και μετά από κάθε 0 είναι η εξής: 1*110111* η οποία για να επιτρέπει πολλαπλά 0, διαμορφώνεται με τον τελεστή * στην ΚΕ: 1*11(0111*)* Για να επιτρέψουμε πιθανό αρχικό και τελικό 0, τροποποιούμε την ΚΕ με τον τελεστή? σε: (1*11)?(0111*)*0? όπου αντί να βάλουμε όρο 0? στην αρχή, κάναμε τα αρχικά 1 προαιρετικά, ώστε να συμπεριλαμβάνεται και η κενή συμβολοσειρά. Τέλος, παρατηρώντας ότι η πιο πάνω έκφραση δεν καλύπτει την περίπτωση της συμβολοσειράς "1", την επεκτείνουμε σε: (1*11)?(0111*)*0? 1

15 15 που είναι και η τελική μας ΚΕ. Στη συνέχεια εφαρμόζουμε την κατασκευή Thompson στην ΚΕ που βρήκαμε χωρίς να κάνουμε απλοποιήσεις, και λαμβάνουμε το πιο κάτω ΜΠΑ-ε: Η μετατροπή αυτού σε ΝΠΑ γίνεται με το γνωστό τρόπο, για αρχική κατάσταση S: S ε-κλείσιμο({0}) = {0,1,2,3,5,6,10,11,12,22,23,24,26,27,29} A δ(s, 1) = ε-κλείσιμο({4,7,28}) = {3,4,5,6,7,8,28,29} C δ(s, 0) = ε-κλείσιμο({13,25}) = {13,14,25,26,29} B δ(a, 1) = ε-κλείσιμο({4,7,9}) = {3,4,5,6,7,8,9,10,11,12,22,23,24,26,29} D δ(c, 1) = ε-κλείσιμο({15}) = {15,16} δ(b, 0) = ε-κλείσιμο({13,25}) = C δ(b, 1) = ε-κλείσιμο({4,7,9}) = B E δ(d, 1) = ε-κλείσιμο({17}) = {12,17,18,19,21,22,23,24,26,29} δ(e, 0) = ε-κλείσιμο({13,25}) = C F δ(e, 1) = ε-κλείσιμο({20}) = {12,19,20,21,22,23,24,26,29} δ(f, 0) = ε-κλείσιμο({13,25}) = C δ(f, 1) = ε-κλείσιμο({20}) = F Οι τελικές καταστάσεις του ΝΠΑ είναι οι S, A, B, D, E και F, εφ όσον περιέχουν την τελική κατάσταση 29 του αρχικού ΜΠΑ-ε. Το ΝΠΑ που προέκυψε είναι: S A B C D E F 0 0 Μπορούμε εύκολα να δούμε ότι οι καταστάσεις E και F του ΝΠΑ που βρήκαμε είναι ισοδύναμες, οπότε το ΝΠΑ ελαχιστοποιείται στο ίδιο ΝΠΑ που βρήκαμε και νωρίτερα. Άσκηση 2-3: Δίνεται η παρακάτω διφορούμενη γραμματική χωρίς συμφραζόμενα: E E + E E E E * E E / E + E E * E ( E ) ID που αντιστοιχεί σε αριθμητικές παραστάσεις μεταξύ αναγνωριστικών μιας γλώσσας προγραμματισμού. Οι τελεστές έχουν τη συνήθη προτεραιότητα και προσεταιριστικότητα, ενώ ειδικά ο τελεστής * όταν εφαρμόζεται σε μοναδικό τελούμενο εκτελεί αποδεικτοδότηση και έχει την υψηλότερη προτεραιότητα. Α. Να δείξετε πώς με εφαρμογή κανόνων προτεραιότητας και προσεταιριστικότητας μπορεί να παραχθεί μονοσήμαντο δέντρο συντακτικής ανάλυσης για τη συμβολοσειρά: ID (ID*ID/*ID/ID ID)*(*ID ID**ID ID)*ID (ID+*ID)

16 16 Β. Να δώσετε μια ισοδύναμη μη διφορούμενη της παραπάνω γραμματικής, η οποία να είναι σύμφωνη με τις προτεραιότητες και προσεταιριστικότητες των τελεστών της. Απάντηση Μια διφορούμενη γραμματική μπορεί να παράγει την ίδια συμβολοσειρά με περισσότερους από έναν τρόπους, είτε με αριστερότερη, είτε με δεξιότερη παραγωγή. Για παράδειγμα, η συμβολοσειρά ID+ID*ID μπορεί να παραχθεί από την παραπάνω γραμματική με αριστερότερη παραγωγή με τους εξής δύο τρόπους: E E+E L ID+E ID+E*E L ID+ID*E ID+ID*ID E E*E L E+E*E L ID+E*E L ID+ID*E ID+ID*ID Στους δύο αυτούς τρόπους αντιστοιχούν δύο διαφορετικά δέντρα συντακτικής ανάλυσης, τα εξής: E E E + E E * E ID E * E E + E ID ID ID ID ID Παρόλο που και τα δύο αυτά δέντρα είναι συντακτικά αποδεκτά, δηλαδή κατασκευάζονται από δύο ορθές παραγωγές, στο βήμα παραγωγής τελικού κώδικα θα δούμε ότι το δεύτερο παράγει λάθος κώδικα, με την έννοια ότι αυτός δεν εκτελεί τον επιθυμητό αλγεβρικό υπολογισμό. Πράγματι, ο κώδικας του δεύτερου δέντρου εκτελεί πρώτα την πρόσθεση και μετά τον πολλαπλασιασμό, όπως ακριβώς θα γινόταν αν η παράσταση είχε παρενθέσεις, ως (ID+ID)*ID. Αυτό το λάθος δεν είναι συντακτικό, αλλά σημασιολογικό, δηλαδή δίνεται λάθος ερμηνεία στην εφαρμογή των τελεστών πρόσθεσης και πολλαπλασιασμού, και ειδικότερα, λάθος προτεραιότητα μεταξύ των δύο τελεστών. Για να αποφύγουμε τη λάθος ερμηνεία στην εφαρμογή των τελεστών της γραμματικής μας, πρέπει να βρούμε τρόπο, ώστε χρησιμοποιώντας τις ιδιότητές τους, να κατασκευάζουμε πάντα ένα μοναδικό, και μάλιστα το σωστό δέντρο, για οποιαδήποτε τυχαία συμβολοσειρά της γλώσσας. Αυτό ισοδυναμεί με μετασχηματισμό της διφορούμενης γραμματικής σε μη διφορούμενη, στην ουσία ενσωματώνοντας τις σημασιολογικές ιδιότητες των τελεστών στη σύνταξη της γλώσσας. Κάτι τέτοιο είναι εφικτό για γραμματικές αριθμητικών παραστάσεων, οι οποίες δεν είναι εγγενώς διφορούμενες. Α. Οι ιδιότητες τελεστών που μας ενδιαφέρουν για την αντιμετώπιση του παραπάνω προβλήματος και τη μετατροπή της διφορούμενης γραμματικής σε μη διφορούμενη είναι η προτεραιότητα και η προσεταιριστικότητα. Οι δύο αυτές ιδιότητες μας λένε ποιος από δύο διαδοχικούς τελεστές θα εφαρμοστεί πρώτος. Για παράδειγμα, με τον πολλαπλασιασμό να έχει υψηλότερη προτεραιότητα από την πρόσθεση, η παραπάνω συμβολοσειρά παράγεται με τον πρώτο από τους δύο τρόπους που δίνονται, ώστε στον τελικό κώδικα η δεύτερη πράξη να γίνει πριν από την πρώτη. Επίσης, με την πράξη της αφαίρεσης να έχει αριστερή προσεταιριστικότητα, η συμβολοσειρά ID ID ID μπορεί να αντιστοιχηθεί στην αριστερότερη παραγωγή E E E L E-E-E L ID-E-E L ID-ID-E ID-ID-ID και όχι στην E E E L ID-E ID-E-E L ID-ID-E ID-ID-ID

17 17 που θα προέκυπτε αν η πράξη της αφαίρεσης είχε δεξιά προσεταιριστικότητα. Παρατηρήστε ότι κώδικας που παράγεται με δεξιά προσεταιριστικότητα για τη συμβολοσειρά αυτή οδηγεί στον υπολογισμό του αριθμού ID (ID ID) και όχι του (ID ID) ID που εννοείται με αυτήν. Γενικά, η προσεταιριστικότητα έχει νόημα μόνο μεταξύ τελεστών ίσης προτεραιότητας. Επομένως, ακόμα και χωρίς άμεσο μετασχηματισμό της διφορούμενης γραμματικής σε μη διφορούμενη, μπορούμε να βρίσκουμε το επιθυμητό δέντρο συντακτικής ανάλυσης, τοποθετώντας ψηλότερα σε αυτό τελεστές χαμηλότερης προτεραιότητας, κατεβαίνοντας προς τα αριστερά για αριστερή προσεταιριστικότητα και προς τα δεξιά για δεξιά προσεταιριστικότητα. Και αντίστοιχα σκεφτόμαστε για να βρούμε τη μοναδική αριστερότερη (ή δεξιότερη) παραγωγή που οδηγεί σε αυτό το δέντρο. Αξίζει να σημειωθεί πως αν σε μια παράσταση συμμετέχουν παρενθέσεις, το γεγονός ότι αυτές επιβάλλουν υψηλότερη προτεραιότητα σε τελεστές που περικλείουν είναι ιδιότητα που είναι ήδη ενσωματωμένη στη γραμματική, για όλα τα πιθανά φωλιάσματα παρενθέσεων. Έ- τσι, ψηλότερα στο δέντρο θα βρίσκονται εφαρμογές τελεστών σε εξωτερικά ζευγάρια ή εκτός παρενθέσεων, και χαμηλότερα θα βρίσκονται τελεστές σε φωλιασμένες παρενθέσεις μεγαλύτερου βάθους φωλιάσματος. Έτσι λοιπόν, για τη γραμματική που μας δίνεται, η προτεραιότητα των τελεστών ορίζεται με την ακόλουθη αύξουσα σειρά: +,- (πρόσημο, πρόσθεση, αφαίρεση) *,/ (πολλαπλασιασμός, διαίρεση) * (αποδεικτοδότηση) ενώ για όλους τους τελεστές ορίζουμε αριστερή προσεταιριστικότητα. Παρατηρήστε ότι η προσεταιριστικότητα δεν επηρεάζει το αποτέλεσμα του κώδικα που πιθανά παράγεται για τις πράξεις της πρόσθεσης και του πολλαπλασιασμού 2, παρά μόνο για τις πράξεις της αφαίρεσης (όπως και του αρνητικού προσήμου) και της διαίρεσης. Με προτεραιότητα και προσεταιριστικότητα τελεστών όπως παραπάνω, η αριστερότερη παραγωγή που αντιστοιχεί στη συμβολοσειρά που μας δίνεται είναι η ακόλουθη: E E-E L L E-E-E L L -E-E-E L L -ID-E-E L L -ID-E*E-E L L ID-E*E*E-E L L -ID-(E)*E*E-E L L -ID-(E-E)*E*E-E L L -ID-(E/E-E)*E*E-E L L -ID-(E/E/E-E)*E*E-E L L -ID-(E*E/E/E-E)*E*E-E L L -ID-(ID*E/E/E-E)*E*E-E L L -ID-(ID*ID/E/E-E)*E*E-E L L -ID-(ID*ID/*E/E-E)*E*E-E L L -ID-(ID*ID/*ID/E-E)*E*E-E L L -ID-(ID*ID/*ID/ID-E)*E*E-E L L -ID-(ID*ID/*ID/ID-ID)*E*E-E L L -ID-(ID*ID/*ID/ID-ID)*(E)*E-E L L -ID-(ID*ID/*ID/ID-ID)*(E-E)*E-E L L -ID-(ID*ID/*ID/ID-ID)*(E-E-E)*E-E L L -ID-(ID*ID/*ID/ID-ID)*(*E-E-E)*E-E L 2 Αγνοώντας τις συνέπειες της πεπερασμένης ακρίβειας των αναπαραστάσεων που χρησιμοποιούνται.

18 18 L -ID-(ID*ID/*ID/ID-ID)*(*ID-E-E)*E-E L L -ID-(ID*ID/*ID/ID-ID)*(*ID-E*E-E)*E-E L L -ID-(ID*ID/*ID/ID-ID)*(*ID-ID*E-E)*E-E L L -ID-(ID*ID/*ID/ID-ID)*(*ID-ID**E-E)*E-E L L -ID-(ID*ID/*ID/ID-ID)*(*ID-ID**ID-E)*E-E L L -ID-(ID*ID/*ID/ID-ID)*(*ID-ID**ID-ID)*E-E L L -ID-(ID*ID/*ID/ID-ID)*(*ID-ID**ID-ID)*ID-E -ID-(ID*ID/*ID/ID-ID)*(*ID-ID**ID-ID)*ID-(E) -ID-(ID*ID/*ID/ID-ID)*(*ID-ID**ID-ID)*ID-(E+E) L L -ID-(ID*ID/*ID/ID-ID)*(*ID-ID**ID-ID)*ID-(ID+E) -ID-(ID*ID/*ID/ID-ID)*(*ID-ID**ID-ID)*ID-(ID+*E) -ID-(ID*ID/*ID/ID-ID)*(*ID-ID**ID-ID)*ID-(ID+*ID) Παρατηρήστε ότι σύμφωνα με όσα είπαμε παραπάνω, η προτεραιότητα των τελεστών μας υποχρεώνει να εφαρμόζουμε πρώτα κανόνες που αντιστοιχούν σε πράξεις χαμηλότερης προτεραιότητας, και ύστερα κανόνες που αντιστοιχούν σε πράξεις υψηλότερης προτεραιότητας, σε περιπτώσεις που αν δεν είχαμε ορισμένη προτεραιότητα, θα μας έδιναν το δικαίωμα επιλογής και κατά συνέπεια παραπάνω από μία αριστερότερες παραγωγές. Για παράδειγμα, τα τρία πρώτα βήματα της παραπάνω παραγωγής γίνονται επειδή η αφαίρεση και το πρόσημο έχουν χαμηλότερη προτεραιότητα από τον πολλαπλασιασμό, ενώ στο 14ο βήμα η αποδεικτοδότηση εφαρμόζεται, αφού έχουν εφαρμοστεί η αφαίρεση, ο πολλαπλασιασμός και οι διαιρέσεις που βρίσκονται μέσα στην πρώτη παρένθεση. Η αριστερή προσεταιριστικότητα, σε συνδυασμό με το γεγονός ότι παίρνουμε την αριστερότερη παραγωγή, μας υποχρεώνει να εφαρμόσουμε όλους τους κανόνες που αντιστοιχούν σε πράξεις ίσης προτεραιότητας από τα δεξιά προς τα αριστερά, πριν προχωρήσουμε σε κανόνες που αντιστοιχούν σε πράξεις υψηλότερης προτεραιότητας, σε περιπτώσεις διαδοχικής εφαρμογής τελεστών ίσης προτεραιότητας. Για παράδειγμα, το πρώτο βήμα της πιο πάνω παραγωγής αντιστοιχεί στη δεξιά, το δεύτερο αντιστοιχεί στην αριστερή αφαίρεση, και το τρίτο αντιστοιχεί στο αρνητικό πρόσημο της παράστασης έξω από τις παρενθέσεις. Παρόμοια, στα βήματα 9-11 εφαρμόζουμε πρώτα τις διαιρέσεις και ύστερα τον πολλαπλασιασμό που βρίσκεται αριστερά των διαιρέσεων, για την παράσταση μέσα στο πρώτο ζεύγος παρενθέσεων. Αν πάντως επιθυμούσαμε τη δεξιότερη παραγωγή, τότε με αριστερή προσεταιριστικότητα θα εφαρμόζαμε κανόνες που να αντιστοιχούν σε πράξεις υψηλότερης προτεραιότητας, πριν συνεχίσουμε με κανόνες που να αντιστοιχούν σε πράξεις ίσης προτεραιότητας. Τέλος, για τελεστές με δεξιά προσεταιριστικότητα, θα ενεργούσαμε αντίστροφα. Το μοναδικό ΔΣΑ της δεδομένης συμβολοσειράς που αντιστοιχεί στην πιο πάνω παραγωγή δίνεται στην επόμενη σελίδα. Β. Αν δεν είχαμε τους τελεστές προσήμου, η προτεραιότητα και η προσεταιριστικότητα των τελεστών της γραμματικής θα μας οδηγούσαν εύκολα στη νέα ισοδύναμη γραμματική: E E + Τ E Τ Τ Τ Τ * F T / F F F * F ( E ) ID όπου τα τρία επίπεδα προτεραιότητας οδήγησαν στο διαχωρισμό του ενός αρχικού επιπέδου κανόνων σε τρία, που το καθένα αντιστοιχεί σε ξεχωριστό επίπεδο προτεραιότητας. Η αριστερή προσεταιριστικότητα των τελεστών με δύο τελούμενα εισόδου μεταφράστηκε σε αριστερή αναδρομή στους κανόνες. Έτσι, όπως αναλύσαμε και πιο πάνω, οι κανόνες με τελεστές χαμηλότερης προτεραιότητας χρησιμοποιούνται σε μια παραγωγή πριν από εκείνους με τελεστές υψηλότερης προτεραιότητας, ενώ για διαδοχική εφαρμογή τελεστών ίσης προτεραιότητας, εκείνοι που είναι δεξιότερα παράγονται πρώτοι από τους κανόνες τους, ώστε ο τελικός κώδικας να παραχθεί με την αντίστροφη, σωστή σειρά. Η παραπάνω γραμματική δεν είναι διφορούμενη, εφόσον δεν υπάρχει τρόπος να πάρουμε την ίδια συμβολοσειρά με περισσότερα από ένα ΔΣΑ.

19 19 E E - E E - E ( E ) - E E * E E + E ID E * E ID ID * E ( E ) ( E ) ID E - E E - E E / E ID E - E ID E / E ID * E E * E E * E * E ID ID * E ID ID ID ID Δέντρο συντακτικής ανάλυσης για τη συμβολοσειρά ID (ID*ID/*ID/ID ID)*(*ID ID**ID ID)*ID (ID+*ID) Αν τώρα εισάγουμε τελεστές προσήμου με ίση προτεραιότητα με τον τελεστή αποδεικτοδότησης και αριστερή προσεταιριστικότητα, τότε η γραμματική διαμορφώνεται ως εξής: E E + Τ E Τ Τ Τ Τ * F T / F F F + F F * F ( E ) ID Η γραμματική αυτή είναι ισοδύναμη της αρχικής, με την έννοια ότι παράγει τις ίδιες ακριβώς συμβολοσειρές, και δεν είναι διφορούμενη. Αν όμως θελήσουμε οι τελεστές προσήμου να έχουν την προτεραιότητα των τελεστών πρόσθεσης/αφαίρεσης, τότε, σε περίπτωση που τοποθετήσουμε τους κανόνες προσήμου στο πρώτο επίπεδο: E + Ε Ε E + Τ E Τ Τ η γραμματική θα είναι διφορούμενη, αφού το πρόσημο μπορεί να παραχθεί είτε πριν είτε μετά την υποέκφραση πρόσθεσης/αφαίρεσης. Επομένως, θα πρέπει οι κανόνες προσήμου να τοποθετηθούν σε ένα νέο επίπεδο κάτω από αυτό των κανόνων πρόσθεσης/αφαίρεσης, αλλά πάνω από εκείνο των κανόνων πολλαπλασιασμού/διαίρεσης. Έτσι, διατηρείται η προτεραιότητα χαμηλότερη από αυτή των τελεστών πολλαπλασιασμού/διαίρεσης και αποδεικτοδότησης, και επιβάλλεται η αριστερή προσεταιριστικότητα. Τα τρία πρώτα επίπεδα θα διαμορφωθούν: E E + Τ E Τ Τ Τ + Τ Τ Τ Τ Τ * F T / F F Στη συνέχεια όμως, αν διατηρήσουμε κανόνες προσήμου και στο τελευταίο επίπεδο, η γραμματική θα είναι πάλι διφορούμενη, αλλά αν τους αφαιρέσουμε, δε θα παράγονται συμβολοσειρές στις οποίες το πρόσημο ή μια ακολουθία προσήμων ακολουθεί τελεστή πολλαπλασιασμού/διαίρεσης ή αποδεικτοδότησης. Διαχωρίζουμε έτσι αυτή την περίπτωση, εισάγοντας ένα σύμβολο που να αντιστοιχεί σε υποέκφραση που ακολουθεί τέτοιον τελεστή, και αφαιρούμε τους κανόνες προσήμου από τη γενική περίπτωση. Καταλήγουμε έτσι στη μη διφορούμενη ισοδύναμη γραμματική:

20 20 E E + Τ E Τ Τ Τ + Τ Τ Τ Τ Τ * F T / F F F + F F * F ( E ) ID F * F ( E ) ID όπου οι τελεστές προσήμου έχουν την προτεραιότητα των τελεστών πρόσθεσης/αφαίρεσης. Αν το πρόσημο ή η ακολουθία προσήμων ακολουθεί τελεστή πολλαπλασιασμού/διαίρεσης ή αποδεικτοδότησης, θα παράγεται από το σύμβολο F, διαφορετικά από το σύμβολο Τ. Άσκηση 2-4: Να δοθεί (μη διφορούμενη) γραμματική χωρίς συμφραζόμενα που να παράγει τις συμβολοσειρές: {1 n 0 n }, όπου n 0 Στη συνέχεια να κατασκευάσετε ένα ΑΣ που να αναγνωρίζει τις συμβολοσειρές αυτές, και να δείξετε τις κινήσεις του στις συμβολοσειρές και 110. Απάντηση Η ζητούμενη γραμματική πρέπει να περιέχει κάποιο συντακτικό κανόνα που παράγει ταυτόχρονα ένα 1 στα αριστερά και ένα 0 στα δεξιά του δεξιού του μέλους: Α 1Β0 Έτσι μόνο θα μπορεί να παράγει συμβολοσειρές με τον ίδιο αριθμό 1 και 0, ώστε τα 1 να προηγούνται των 0. Ο κανόνας αυτός πρέπει ακόμα να είναι αναδρομικός, αφού ο αριθμός n των 1 και 0 είναι μεταβλητός: A 1A0 επειδή δε μεταξύ των 1 και 0 στις συμβολοσειρές που παράγονται δεν παρεμβάλλεται άλλο σύμβολο, το Α μπορεί να παράγει εναλλακτικά την κενή συμβολοσειρά: A Ακόμα, επειδή πριν του πρώτου 1 και μετά το τελευταίο 0 δεν υπάρχει άλλο σύμβολο, το Α μπορεί να είναι το αρχικό σύμβολο της γραμματικής, γεγονός που ικανοποιεί και την απαίτηση η τιμή του n να μπορεί να είναι 0. Σύμφωνα με τα παραπάνω, μια μη διφορούμενη γραμματική χωρίς συμφραζόμενα για την παραγωγή των συμβολοσειρών της άσκησης είναι η G = (T, N, P, S) όπου: T = {0, 1} N = {S} P = {S 1S0 S } Ένα ΑΣ που μπορεί να χρησιμοποιηθεί για την αναγνώριση των συμβολοσειρών της G θα εισάγει στη στοίβα του όσα σύμβολα 1 βλέπει στην είσοδό του, και στη συνέχεια, για κάθε είσοδο 0, θα αφαιρεί ένα 1 από αυτήν. Αναγνώριση θα μπορεί να γίνεται όταν η στοίβα περιέχει το αρχικό σύμβολο στοίβας. Έτσι, ένα τέτοιο ΑΣ είναι το M = (T, Q, H, δ, q 0, h 0, F) όπου: T = {0, 1} Q = {S, Α, Z} H = {X, 1} q 0 = S h 0 = X F = {Z} και η συνάρτηση μετάβασης περιγράφεται από το ακόλουθο πίνακα μετάβασης:

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Πρώτη Σειρά Ασκήσεων 27 Οκτωβρίου 2016 Μέρος Α. (χειρόγραφη και ηλεκτρονική παράδοση 11 Νοεμβρίου) Άσκηση 1: Θεωρήστε το ακόλουθο

Διαβάστε περισσότερα

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Δεύτερη Σειρά Ασκήσεων 22 Νοεμβρίου 2016 (χειρόγραφη και ηλεκτρονική παράδοση 9 Δεκεμβρίου) Άσκηση 1: Θεωρήστε τη γραμματική με κανόνες: Α B a A a c B B b A b

Διαβάστε περισσότερα

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

Θέματα Μεταγλωττιστών Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Ενότητα 1 η : Parsers Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Συντακτική Ανάλυση για ΓΧΣ Οι τεχνικές συντακτικής ανάλυσης κατηγοριοποιούνται

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Δεύτερη Σειρά Ασκήσεων 22 Νοεμβρίου 2016 Μέρος Α. (χειρόγραφη και ηλεκτρονική παράδοση 9 Δεκεμβρίου) Άσκηση 1: Θεωρήστε τη

Διαβάστε περισσότερα

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 4 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Μάθημα 4 ο Συντακτική Ανάλυση Επαλήθευση της σύνταξης του προγράμματος Κατασκευή συντακτικού δέντρου Η κεντρική φάση της Μετάφρασης Οδηγούμενης από τη Σύνταξη Από εδώ ξεκινά η παραγωγή

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Παραδείγματα Ενοτήτων 7-9 Ενότητα 7: Ενδιάμεσος κώδικας Άσκηση 7-1: Θεωρήστε τη γλώσσα προγραμματισμού C με τη γνωστή γραμματική

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

Διαβάστε περισσότερα

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Οργάνωση Η/Υ Ενότητα 1η: Εισαγωγή στην Οργάνωση Η/Υ Άσκηση 1: Αναλύστε τη διαδοχική εκτέλεση των παρακάτω εντολών MIPS με βάση τις

Διαβάστε περισσότερα

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

Σειρά Προβλημάτων 3 Λύσεις Σειρά Προβλημάτων 3 Λύσεις Άσκηση 1 Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) {0 n 1 n n > 0} {0 n 1 2n n > 0} (β) {w {a,b} * η w ξεκινά και τελειώνει με το ίδιο σύμβολο

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (2) Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (2) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Κανονικές Εκφράσεις (1.3) Τυπικός Ορισμός Ισοδυναμία με κανονικές γλώσσες Μη Κανονικές

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Κεφάλαιο 2. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας. Περιεχόμενα. 2.1 Αριθμητικά Συστήματα. Εισαγωγή

Κεφάλαιο 2. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας. Περιεχόμενα. 2.1 Αριθμητικά Συστήματα. Εισαγωγή Κεφάλαιο. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας Περιεχόμενα. Αριθμητικά συστήματα. Μετατροπή αριθμών από ένα σύστημα σε άλλο.3 Πράξεις στο δυαδικό σύστημα.4 Πράξεις στο δεκαεξαδικό σύστημα.5

Διαβάστε περισσότερα

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

Κεφάλαιο 2: Τυπικές γλώσσες. Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος / 216 Κεφάλαιο 2: Τυπικές γλώσσες Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 13 / 216 Τυπικές γλώσσες (i) Βασικές έννοιες Αλφάβητο Σύμβολο Συμβολοσειρά Μήκος συμβολοσειράς Σύνολο συμβολοσειρών

Διαβάστε περισσότερα

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 3 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Μάθημα 3 ο Λεκτική Ανάλυση και Λεκτικοί Αναλυτές Γενικά για τη λεκτική ανάλυση Έννοιες που χρειαζόμαστε Τεχνικές λεκτικής ανάλυσης Πίνακας συμβόλων και διαχείριση λαθών Σχεδίαση λεκτικού

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

Διαβάστε περισσότερα

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

Σειρά Προβλημάτων 4 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing (αυθεντικός ορισμός) η οποία να διαγιγνώσκει τη γλώσσα { w w = (ab) 2m b m (ba) m, m 0 } (β) Να διατυπώσετε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2) Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αυτόματα Στοίβας (2.2) Τυπικός Ορισμός Παραδείγματα Ισοδυναμία με Ασυμφραστικές

Διαβάστε περισσότερα

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr I ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ i e ΜΕΡΟΣ Ι ΟΡΙΣΜΟΣ - ΒΑΣΙΚΕΣ ΠΡΑΞΕΙΣ Α Ορισμός Ο ορισμός του συνόλου των Μιγαδικών αριθμών (C) βασίζεται στις εξής παραδοχές: Υπάρχει ένας αριθμός i για τον οποίο ισχύει i Το σύνολο

Διαβάστε περισσότερα

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

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ Κεφαλαία και μικρά γράμματα ελληνικού αλφαβήτου: Α Ω και α ω Κεφαλαία και μικρά γράμματα λατινικού αλφαβήτου: A Z και a z Αριθμητικά ψηφία: 0 9 Ειδικοί χαρακτήρες: + - * / =. ( ),! & κενός

Διαβάστε περισσότερα

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

Τεχνητή Νοημοσύνη. 21η διάλεξη ( ) Ίων Ανδρουτσόπουλος. Τεχνητή Νοημοσύνη 21η διάλεξη (2016-17) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Οι διαφάνειες αυτής της διάλεξης βασίζονται στα βιβλία: «Artificial Intelligence A Modern Approach» των. Russel

Διαβάστε περισσότερα

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (1) Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (1) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ασυμφραστικές Γραμματικές (2.1) Τυπικός Ορισμός Σχεδιασμός Ασυμφραστικών Γραμματικών

Διαβάστε περισσότερα

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

Σειρά Προβλημάτων 4 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing (αυθεντικός ορισμός) η οποία να διαγιγνώσκει τη γλώσσα {1010 2 10 3 10 n 1 10 n 1 n 1}. (β) Να διατυπώσετε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Σειρά Προβλημάτων 4 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing (αυθεντικός ορισμός) η οποία να διαγιγνώσκει τη γλώσσα {w 1w 2 w 1 {0,1} * και w 2 = 0 k 1 m όπου k και m

Διαβάστε περισσότερα

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

Μεταγλωττιστές. Ενότητα 5: Λεκτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Μεταγλωττιστές Ενότητα 5: Λεκτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

11. Ποιες είναι οι άμεσες συνέπειες της διαίρεσης;

11. Ποιες είναι οι άμεσες συνέπειες της διαίρεσης; 10. Τι ονομάζουμε Ευκλείδεια διαίρεση και τέλεια διαίρεση; Όταν δοθούν δύο φυσικοί αριθμοί Δ και δ, τότε υπάρχουν δύο άλλοι φυσικοί αριθμοί π και υ, έτσι ώστε να ισχύει: Δ = δ π + υ. Ο αριθμός Δ λέγεται

Διαβάστε περισσότερα

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2012-2013 Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2012-2013 27 Μαρτίου 2013 Περίληψη Σκοπός της παρούσας εργασίας είναι η εξοικείωσή σας με τις θεμελιώδεις θεωρητικές και πρακτικές πτυχές

Διαβάστε περισσότερα

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

ΜΑΘΗΜΑ: Μεταγλωττιστές Comment [h1]: Παράδειγμ α: https://ocp.teiath.gr/modules/ exercise/exercise_result.php?course=pey101&eurid=16 9 ΜΑΘΗΜΑ: Μεταγλωττιστές ΔΙΔΑΣΚΩΝ: Άγγελος Μιχάλας ΤΜΗΜΑ: Τμήμα Μηχανικών Πληροφορικής ΤΕ 1

Διαβάστε περισσότερα

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ Θεωρία Υπολογισμού Ενότητα 24: Μη Ντεντερμινιστικές Μηχανές Turing Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως

Διαβάστε περισσότερα

Συνδυαστικά Λογικά Κυκλώματα

Συνδυαστικά Λογικά Κυκλώματα Συνδυαστικά Λογικά Κυκλώματα Ένα συνδυαστικό λογικό κύκλωμα συντίθεται από λογικές πύλες, δέχεται εισόδους και παράγει μία ή περισσότερες εξόδους. Στα συνδυαστικά λογικά κυκλώματα οι έξοδοι σε κάθε χρονική

Διαβάστε περισσότερα

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

Σειρά Προβλημάτων 3 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 3 Λύσεις Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) { a m b n c p m,n,p 0 και είτε m + n = p είτε m = n + p } (β) { xx rev yy rev x, y {a,b}

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 3: Πίνακες, βρόχοι, συναρτήσεις 1 Ιουνίου 2017 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

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

Σειρά Προβλημάτων 5 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 5 Λύσεις Να δείξετε ότι οι πιο κάτω γλώσσες είναι διαγνώσιμες. (α) { Μ η Μ είναι μια ΤΜ η οποία διαγιγνώσκει το πρόβλημα ΙΣΟΔΥΝΑΜΙΑ ΤΜ (διαφάνεια 9 25)} (α) Γνωρίζουμε ότι το

Διαβάστε περισσότερα

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης

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

Διαβάστε περισσότερα

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

Διαβάστε περισσότερα

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

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2016-2017 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Αριθμητική Ανάλυση & Εφαρμογές

Αριθμητική Ανάλυση & Εφαρμογές Αριθμητική Ανάλυση & Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 2017-2018 Υπολογισμοί και Σφάλματα Παράσταση Πραγματικών Αριθμών Συστήματα Αριθμών Παράσταση Ακέραιου

Διαβάστε περισσότερα

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Εργαστήριο 3: 3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Η C++, όπως όλες οι γλώσσες προγραμματισμού, χρησιμοποιεί τελεστές για να εκτελέσει τις αριθμητικές και λογικές λειτουργίες.

Διαβάστε περισσότερα

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

Λεκτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Λεκτικός Αναλυτής Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Οι Φάσεις της Μεταγλώττισης λεκτική ανάλυση συντακτική ανάλυση Πίνακας Συμβόλων σημασιολογική ανάλυση παραγωγή ενδιάμεσου κώδικα Διαχείριση

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Εισαγωγή στην επιστήμη των υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Υπολογιστές και Δεδομένα Κεφάλαιο 3ο Αναπαράσταση Αριθμών www.di.uoa.gr/~organosi 1 Δεκαδικό και Δυαδικό Δεκαδικό σύστημα 2 3 Δεκαδικό και Δυαδικό Δυαδικό Σύστημα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (1) Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες () Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Πεπερασμένα Αυτόματα (Κεφάλαιο., Sipser) Ορισμός πεπερασμένων αυτομάτων και ορισμός του

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μεταφραστές Λεκτικός αναλυτής Διδάσκων: Επικ. Καθ. Γεώργιος Μανής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων 1 Είσοδος/Έξοδος Είσοδος/Έξοδος ανάλογα με τον τύπο του προγράμματος Πρόγραμμα

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Δημήτρης Πλεξουσάκης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Δημήτρης Πλεξουσάκης ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Λογική Δημήτρης Πλεξουσάκης 2ο μέρος σημειώσεων: Συστήματα Αποδείξεων για τον ΠΛ, Μορφολογική Παραγωγή, Κατασκευή Μοντέλων Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ 1 Τύποι δεδομένων Η γλώσσα προγραμματισμού C++ υποστηρίζει τους παρακάτω τύπους δεδομένων: 1) Ακέραιοι αριθμοί (int). 2) Πραγματικοί αριθμοί διπλής ακρίβειας

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ Θεωρία Υπολογισμού Ενότητα 14: Γραμματικές Χωρίς Συμφραζόμενα Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

Διαβάστε περισσότερα

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

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει

Διαβάστε περισσότερα

Αριθμητική Ανάλυση και Εφαρμογές

Αριθμητική Ανάλυση και Εφαρμογές Αριθμητική Ανάλυση και Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 07-08 Αριθμητική Παραγώγιση Εισαγωγή Ορισμός 7. Αν y f x είναι μια συνάρτηση ορισμένη σε ένα διάστημα

Διαβάστε περισσότερα

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

Σειρά Προβλημάτων 4 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing (αυθεντικός ορισμός) η οποία να διαγιγνώσκει τη γλώσσα { ww w {a,b}* }. (β) Να διατυπώσετε την τυπική περιγραφή

Διαβάστε περισσότερα

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (3) Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (3) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Μη Ασυμφραστικές Γλώσσες (2.3) Λήμμα Άντλησης για Ασυμφραστικές Γλώσσες Παραδείγματα

Διαβάστε περισσότερα

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

Σειρά Προβλημάτων 3 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 3 Λύσεις Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) { a k b m c n k < m ή m > 2n, όπου k,m,n 0 } Μια γραμματική για τη γλώσσα έχει ως εξής:

Διαβάστε περισσότερα

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

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6 Εισαγωγή στην Επιστήμη των Υπολογιστών 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές http://www.corelab.ece.ntua.gr/courses/ Αυτόματα Τρόπος κωδικοποίησης αλγορίθμων. Τρόπος περιγραφής συστημάτων πεπερασμένων

Διαβάστε περισσότερα

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

Απάντηση: (func endfunc)-([a-za-z])+ Γλώσσες Προγραμματισμού Μεταγλωττιστές Ασκήσεις Επανάληψης ) Περιγράψτε τις κανονικές εκφράσεις που υποστηρίζουν (i) συμβολοσειρές που ξεκινούν με το πρόθεμα "func" ή "endfunc" ακολουθούμενο το σύμβολο

Διαβάστε περισσότερα

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

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή Αντίρριο, 05/04/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» To δεύτερο μέρος της εργασίας έχει ως στόχο την ανάπτυξη του συντακτικού αναλυτή με χρήση του bison / byacc. Στο

Διαβάστε περισσότερα

4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη.

4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη. 4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη. Η μετατροπή μιας εντολής επανάληψης σε μία άλλη ή στις άλλες δύο εντολές επανάληψης, αποτελεί ένα θέμα που αρκετές φορές έχει εξεταστεί σε πανελλαδικό

Διαβάστε περισσότερα

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

Κεφάλαιο 2: Τυπικές γλώσσες Κεφάλαιο 2: Τυπικές γλώσσες (μέρος 2ο) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 47 / 216 Γλώσσες χωρίς συμφραζόμενα (i) Γραμματικές χωρίς συμφραζόμενα: Σε κάθε παραγωγή ένα μη τερματικό

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1 Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Τεχνητή Νοημοσύνη, 2016 17 Διδάσκων: Ι. Ανδρουτσόπουλος Ασκήσεις μελέτης της 4 ης διάλεξης 4.1. (α) Αποδείξτε ότι αν η h είναι συνεπής, τότε h(n

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού Strange

Η γλώσσα προγραμματισμού Strange Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού Strange Η Strange είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική αυτή γλώσσα περιέχει

Διαβάστε περισσότερα

ΛΟΓΙΣΜΟΣ ΕΝΟΤΗΤΑ 7: ΣΥΝΕΠΕΙΕΣ ΘΕΩΡΗΜΑΤΟΣ ΜΕΣΗΣ ΤΙΜΗΣ

ΛΟΓΙΣΜΟΣ ΕΝΟΤΗΤΑ 7: ΣΥΝΕΠΕΙΕΣ ΘΕΩΡΗΜΑΤΟΣ ΜΕΣΗΣ ΤΙΜΗΣ ΚΕΦΑΛΑΙΟ 3ο: ΔΙΑΦΟΡΙΚΟΣ ΛΟΓΙΣΜΟΣ ΕΝΟΤΗΤΑ 7: ΣΥΝΕΠΕΙΕΣ ΘΕΩΡΗΜΑΤΟΣ ΜΕΣΗΣ ΤΙΜΗΣ [Κεφ..6: Συνέπειες του Θεωρήματος της Μέσης Τιμής πλην της Ενότητας Μονοτονία Συνάρτησης του σχολικού βιβλίου]. ΠΑΡΑΔΕΙΓΜΑΤΑ

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης ΥΠΟΛΟΓΙΣΤΕΣ ΙI Τύποι δεδομένων, μεταβλητές, πράξεις Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

0x2 = 2. = = δηλαδή η f δεν. = 2. Άρα η συνάρτηση f δεν είναι συνεχής στο [0,3]. Συνεπώς δεν. x 2. lim f (x) = lim (2x 1) = 3 και x 2 x 2

0x2 = 2. = = δηλαδή η f δεν. = 2. Άρα η συνάρτηση f δεν είναι συνεχής στο [0,3]. Συνεπώς δεν. x 2. lim f (x) = lim (2x 1) = 3 και x 2 x 2 ΚΕΦΑΛΑΙΟ ο: ΣΥΝΑΡΤΗΣΕΙΣ - ΟΡΙΟ - ΣΥΝΕΧΕΙΑ ΣΥΝΑΡΤΗΣΗΣ ΕΝΟΤΗΤΑ 8: ΘΕΩΡΗΜΑ BOLZANO - ΠΡΟΣΗΜΟ ΣΥΝΑΡΤΗΣΗΣ - ΘΕΩΡΗΜΑ ΕΝΔΙΑΜΕΣΩΝ ΤΙΜΩΝ - ΘΕΩΡΗΜΑ ΜΕΓΙΣΤΗΣ ΚΑΙ ΕΛΑΧΙΣΤΗΣ ΤΙΜΗΣ - ΣΥΝΟΛΟ ΤΙΜΩΝ ΣΥΝΕΧΟΥΣ ΣΥΝΑΡΤΗΣΗΣ

Διαβάστε περισσότερα

Πρόβλημα 29 / σελίδα 28

Πρόβλημα 29 / σελίδα 28 Πρόβλημα 29 / σελίδα 28 Πρόβλημα 30 / σελίδα 28 Αντιμετάθεση / σελίδα 10 Να γράψετε αλγόριθμο, οποίος θα διαβάζει τα περιεχόμενα δύο μεταβλητών Α και Β, στη συνέχεια να αντιμεταθέτει τα περιεχόμενά τους

Διαβάστε περισσότερα

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

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές http://www.corelab.ece.ntua.gr/courses/ Αυτόματα Τρόπος κωδικοποίησης αλγορίθμων. Τρόπος περιγραφής συστημάτων πεπερασμένων

Διαβάστε περισσότερα

Αριθμητικά Συστήματα

Αριθμητικά Συστήματα Αριθμητικά Συστήματα Σε οποιοδήποτε αριθμητικό σύστημα, με βάση τον αριθμό Β, ένας ακέραιος αριθμός με πλήθος ψηφίων ν, εκφράζεται ως ακολούθως: α ν-1 α ν-2 α 1 α 0 = α ν-1 Β ν-1 + α ν-2 Β ν-2 + + α 1

Διαβάστε περισσότερα

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

Σειρά Προβλημάτων 3 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 3 Λύσεις Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) { a i b j c k d m i, j, k, m 0 και i + j = k + m } (β) { uxvx rev u,v,x {0,1,2} + και όλα

Διαβάστε περισσότερα

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων Γιάννης Λιαπέρδος TEI Πελοποννήσου Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής ΤΕ Η έννοια του συνδυαστικού

Διαβάστε περισσότερα

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

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Ενότητα 8: Ιδιότητες Γραμματικών χωρίς Συμφραζόμενα Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Εκφράσεις και Λίγες Εντολές Οι εκφράσεις της C Τελεστές Απλές και σύνθετες εντολές Εντολές ελέγχου (επιλογής) Εισαγωγή σε

Διαβάστε περισσότερα

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

Σειρά Προβλημάτων 5 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 5 Λύσεις Να δείξετε ότι οι πιο κάτω γλώσσες είναι διαγνώσιμες. (α) { D το D είναι ένα DFA το οποίο αποδέχεται όλες τις λέξεις στο Σ * } (α) Για να διαγνώσουμε το πρόβλημα μπορούμε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ Ενότητα 2 : Ζωγραφίζοντας με το ΒΥΟΒ -1- Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα α. Θέση και προσανατολισμός της μορφής Η θέση της κάθε μορφής στο σκηνικό προσδιορίζεται

Διαβάστε περισσότερα

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

Σειρά Προβλημάτων 4 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing που να διαγιγνώσκει την ακόλουθη γλώσσα. { a n b n+2 c n 2 n 2 } Λύση: H ζητούμενη μηχανή Turing μπορεί να

Διαβάστε περισσότερα

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Παραδείγματα Ενοτήτων 3-6 Ενότητα 3: Λεκτική ανάλυση Άσκηση 3-1: Να δώσετε το ενοποιημένο διάγραμμα μετάβασης που αναγνωρίζει

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Τελικές εξετάσεις Πέμπτη 27 Ιουνίου 2013 10:003:00 Έστω το πάζλ των οκτώ πλακιδίων (8-puzzle)

Διαβάστε περισσότερα

Εφαρμοσμένα Μαθηματικά ΙΙ

Εφαρμοσμένα Μαθηματικά ΙΙ Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας Εφαρμοσμένα Μαθηματικά ΙΙ Γραμμικά Συστήματα Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Γραμμικό Σύστημα a11x1 + a12x2 + + a1 nxn = b1 a x + a x + +

Διαβάστε περισσότερα

Παραδείγματα (1 ο σετ) Διανυσματικοί Χώροι

Παραδείγματα (1 ο σετ) Διανυσματικοί Χώροι Παραδείγματα ( ο σετ) Διανυσματικοί Χώροι Παράδειγμα Έστω το σύνολο V το σύνολο όλων των θετικών πραγματικών αριθμών εφοδιασμένο με την ακόλουθη πράξη της πρόσθεσης: y y με y, V και του πολλαπλασιασμού:

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014 Επιμέλεια: Ομάδα Διαγωνισμάτων από το Στέκι των Πληροφορικών Θέμα Α A1. Να γράψετε στο τετράδιό σας τους

Διαβάστε περισσότερα

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» Η εργασία έχει ως στόχο τον σχεδιασμό και την υλοποίηση ενός μεταγλωττιστή για την γλώσσα Ciscal, χρησιμοποιώντας

Διαβάστε περισσότερα

CSC 314: Switching Theory

CSC 314: Switching Theory CSC 314: Switching Theory Course Summary 9 th January 2009 1 1 Θέματα Μαθήματος Ερωτήσεις Τι είναι αλγόριθμος? Τι μπορεί να υπολογιστεί? Απαντήσεις Μοντέλα Υπολογισμού Δυνατότητες και μη-δυνατότητες 2

Διαβάστε περισσότερα

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

Σειρά Προβλημάτων 3 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 3 Λύσεις Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) { x x η τιμή της αριθμητικής έκφρασης 10 2n + 10 n + 1, n 1} (β) { a i b j c k d m i, j,

Διαβάστε περισσότερα

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

ΚΕΦΑΛΑΙΟ 3 ΤΟ ΔΙΩΝΥΜΙΚΟ ΘΕΩΡΗΜΑ ΚΕΦΑΛΑΙΟ 3 ΤΟ ΔΙΩΝΥΜΙΚΟ ΘΕΩΡΗΜΑ Εισαγωγή Οι αριθμοί που εκφράζουν το πλήθος των στοιχείων ανά αποτελούν ίσως τους πιο σημαντικούς αριθμούς της Συνδυαστικής και καλούνται διωνυμικοί συντελεστές διότι εμφανίζονται

Διαβάστε περισσότερα

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

Σειρά Προβλημάτων 4 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing (αυθεντικός ορισμός) η οποία να διαγιγνώσκει τη γλώσσα { w#z w, z {a,b}* και η z είναι υπολέξη της w}. Συγκεκριμένα,

Διαβάστε περισσότερα

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

Διαβάστε περισσότερα