ΚΕΦΑΛΑΙO 2 ΛΕΚΤΙΚΗ ΑΝΑΛΥΣΗ 1

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

Download "ΚΕΦΑΛΑΙO 2 ΛΕΚΤΙΚΗ ΑΝΑΛΥΣΗ 1"

Transcript

1 ΚΕΦΑΛΑΙO 2 ΛΕΚΤΙΚΗ ΑΝΑΛΥΣΗ 1 Στόχος Στόχος του κεφαλαίου αυτού είναι να δώσει µια σύντοµη αλλά πλήρη παρουσίαση του πώς ακριβώς λειτουργεί ένας Λεκτικός Αναλυτής, πώς µπορείτε να κατασκευάσετε ένα Λεκτικό Αναλυτή µε το χέρι και πώς να χρησιµοποιήσετε Κανονικές Εκφράσεις για να κατασκευάσετε αυτόµατα έναν Λεκτικό Αναλυτή µε τη βοήθεια κάποιου εργαλείου (LEX). Επίσης πώς λειτουργεί ένας τέτοιος γεννήτορας Λεκτικών Αναλυτών. Προσδοκώµενα Αποτελέσµατα 'Οταν θα έχετε µελετήσει το κεφάλαιο αυτό θα µπορείτε να: εξηγήσετε τι δουλειά κάνει ένας Λεκτικός Αναλυτής, περιγράψετε πώς ακριβώς λειτουργεί ένας Λεκτικός Αναλυτής για να επιτελέσει την εργασία του, εξηγήσετε τι είναι οι Κανονικές Εκφράσεις και πώς περιγράφουν τα λεκτικά στοιχεία µιας γλώσσας προγραµµατισµού, γράψετε Κανονικές Εκφράσεις που περιγράφουν τα tokens µιας γλώσσας, γράψετε ιαγράµµατα Μετάβασης Καταστάσεων και Πίνακες Μετάβασης Καταστάσεων για ένα σύνολο Κανονικών Εκφράσεων, γράψετε τις ρουτίνες ενός απλού Λεκτικού Αναλυτή, εξηγήσετε τι είναι το εργαλείο LEX, περιγράψετε πώς γίνεται αυτόµατα (από ένα εργαλείο όπως το LEX) η κατασκευή ενός Λεκτικού Αναλυτή, γράψετε ένα "πρόγραµµα" για το LEX. ΕΝΝΟΙΕΣ-ΚΛΕΙ ΙΑ Λεκτικός Αναλυτής (ΛΑ), Token, Κανονική 'Εκφραση (ΚΕ), ιάγραµµα Μετάβασης Καταστάσεων ( ΜΚ), Πεπερασµένα Αυτόµατα (ΠΑ), Συµβολοσειρά, Γλώσσα, Προσδιοριστικό Πεπερασµένο Αυτόµατο (ΠΠΑ), Μη Προσδιοριστικό Πεπερασµένο Αυτόµατο (ΜΠΠΑ), Πίνακας Μεταβάσεων (ΠΜ), LEX. 'Εχετε ήδη µελετήσει το Κεφάλαιο 1 και γνωρίζετε πλέον την βασική οργάνωση και τον τρόπο λειτουργίας ενός Μεταγλωττιστή, ενός ιερµηνευτή και

2 2 γενικότερα ενός Μεταφραστού. Στη συνέχεια θα εξετάσουµε τον τρόπο λειτουργίας και τρόπους κατασκευής ενός Λεκτικού Αναλυτή. Για να κάνετε κτήµα σας το υλικό του κεφαλαίου αυτού δεν χρειάζεστε κάποιο επιπλέον υλικό. 'Οµως, αν θέλετε να αποκτήσετε πιο ολοκληρωµένη γνώση ή συµπληρωµατικές πληροφορίες γύρω από την θεωρία που αποτελεί το υπόβαθρο για την κατασκευή Λεκτικών Αναλυτών σας συµβουλεύω να δείτε το υλικό της Θεµατικής Υποενότητας Αυτόµατα και Τυπικές Γλώσσες του προγράµµατος Πληροφορικής. ΕΝΟΤΗΤΑ 2.1 ΕΙΣΑΓΩΓΗ 'Εχει αναφερθεί ότι η λειτουργία του Λεκτικού Aναλυτή (ΛΑ) είναι να διαβάζει ένα-ένα τους χαρακτήρες του πηγαίου (Source) προγράµµατος και να τους µεταφράζει σε tokens (π.χ. keywords, identifiers, constants). Το κεφάλαιο αυτό πραγµατεύεται τον σχεδιασµό και την υλοποίηση των ΛA. Επειδή χρειάζεται κάποιος τρόπος περιγραφής των διαφόρων tokens που εµφανίζονται σε κάποια γλώσσα, εισάγονται οι Κανονικές Εκφράσεις (Regular Εxpressions). Aκόµη χρειάζεται κάποιος µηχανισµός που να αναγνωρίζει τα tokens της γλώσσας. Τέτοιοι µηχανισµοί (token Recognizers) είναι τα ιαγράµµατα Μετάβασης Καταστάσεων (Τransition Diagrams) και Πεπερασµένα Αυτόµατα (Finite Automata). 'Ενα πλεονέκτηµα της χρήσης των Κανονικών Εκφράσεων για τον καθορισµό των tokens είναι το γεγονός ότι από µια Κανονική 'Εκφραση µπορούµε να κατασκευάσουµε αυτόµατα ένα αναγνωριστή για τα tokens (token Recognizer) που παριστάνονται µε Κανονικές Εκφράσεις. Ο Λεκτικός Aναλυτής µπορεί να σχεδιαστεί σε χωριστό πέρασµα του Μεταγλωττιστή ή να συνεργάζεται µε τον Συντακτικό Αναλυτή στο ίδιο πέρασµα (ο Λεκτικός Aναλυτής λειτουργεί σαν υπορουτίνα ή συνρουτίνα και καλείται από τον Συντακτικό Aναλυτή όταν αυτός χρειάζεται κάποιο token). Ο σκοπός του διαχωρισµού της Λεκτικής και Συντακτικής Aνάλυσης είναι η απλοποίηση του όλου σχεδιασµού του Μεταγλωττιστή. ΕΝΟΤΗΤΑ 2.2 ΣΧΕ ΙΑΣΜΟΣ ΛΕΚΤΙΚΟΥ ΑΝΑΛΥΤΗ

3 3 Επειδή ο Λεκτικός Aναλυτής για να αναγνωρίσει κάποιο token χρειάζεται πολλές φορές να διαβάσει αρκετούς χαρακτήρες µετά το τέλος του token, χρησιµοποιείται ένας βοηθητικός χώρος (buffer) από τον οποίο ο Λεκτικός Aναλυτής διαβάζει τους χαρακτήρες του. Χρησιµοποιούνται δύο δείκτες, 1 που δείχνει την αρχή του token και 2 (Lookahead δείκτης) που κινείται πέρα από τον 1 όσο χρειάζεται για να αναγνωριστεί το token. Η απόσταση που πρέπει να ταξιδέψει ο 2 πέρα από τον 1 για να αναγνωριστεί το token καλείται απόσταση Lookahead. Μερικές φορές γίνεται µια προεπεξεργασία του Πηγαίου Προγράµµατος για να απαλλαγεί από σχόλια ή κενά, ώστε να µειωθεί και η απόσταση Lookahead. Σχήµα 2.1 Ο βοηθητικός χώρος και οι δείκτες 1 και 2 του Λεκτικού Αναλυτή Το ιάγραµµα Μετάβασης Καταστάσεων (Transition Diagram) είναι ένα χρήσιµο εργαλείο που χρησιµοποιείται στους Λεκτικούς Aναλυτές. Στο Σχήµα 2.2 απεικονίζεται το ιάγραµµα Μετάβασης Καταστάσεων για ένα "identifier". Το σχήµα αυτό στην πραγµατικότητα περιγράφει ένα αναγνωριστή tokens, δηλαδή ένα πρόγραµµα (ρουτίνα) το οποίο αναγνωρίζει tokens του τύπου "identifier". Σχήµα 2.2 ιάγραµµα Μετάβασης Καταστάσεων για ένα "identifier". Οι κύκλοι καλούνται καταστάσεις (states) και συνδέονται µε βέλη που καλούνται πλευρές (edges). Οι επιγραφές πάνω στις πλευρές σηµειώνουν τους χαρακτήρες εισόδου που µπορούν να εµφανιστούν µετά από κάθε κατάσταση.

4 4 Για να µετατρέψουµε µια συλλογή από διαγράµµατα µετάβασης καταστάσεων σε ένα πρόγραµµα, κατασκευάζουµε µια ρουτίνα για κάθε κατάσταση. Το πρώτο βήµα που γίνεται στη ρουτίνα για κάθε κατάσταση είναι η κλήση κάποιας function getchar, που επιστρέφει τον επόµενο χαρακτήρα από τον buffer και προχωράει τον δείκτη 2 (lookahead pointer) ώστε να δείχνει στον αµέσως επόµενο χαρακτήρα. Το επόµενο βήµα είναι να προσδιοριστεί ποιά πλευρά της κατάστασης (που επιγράφεται από τον χαρακτήρα που επέστρεψε η getchar) πρέπει να ακολουθηθεί και να µεταφερθεί ο έλεγχος του προγράµµατος στην κατάσταση που δείχνει η πλευρά. Aν δεν υπάρχει τέτοια πλευρά, ο δείκτης 2 πρέπει να γυρίσει πίσω στην αρχική του θέση ( 1) και να γίνει προσπάθεια αναγνώρισης άλλου token, χρησιµοποιώντας κάποιο άλλο διάγραµµα µετάβασης καταστάσεων. Aν όλα τα διαγράµµατα δοκιµάστηκαν χωρίς επιτυχία, πρέπει να κληθεί κάποια ρουτίνα λάθους, µιας και πρόκειται για κάποιο λεκτικό σφάλµα στο πηγαίο πρόγραµµα. Η ρουτίνα για την κατάσταση 0 του Σχήµατος 2.2 µπορεί να είναι: state 0: C:=getchar( ); if letter(c) then goto state 1 else fail( ) Η letter επιστρέφει true εφ' όσον το C είναι γράµµα. Η fail γυρίζει πίσω στην αρχική του θέση 1 τον 2 και ξεκινά το επόµενο ιάγραµµα Μετάβασης Καταστάσεων αν υπάρχει, ή καλεί την ρουτίνα λάθους. Για την κατάσταση 1 η αντίστοιχη ρουτίνα είναι: state 1: C:=getchar( ); if letter(c) or digit(c) then goto state 1 else if delimeter(c) then goto state 2 else fail( ) όπου digit και delimeter είναι παρόµοιες µε την letter. Η κατάσταση 2 υπονοεί ότι έχει ευρεθεί ένας identifier. Επειδή ο delimiter (στην πλευρά προς την κατάσταση 2) δεν είναι µέρος του identifier, πρέπει ο 2 να γυρίσει µια θέση πίσω. Aυτό γίνεται µε µια ρουτίνα retract και οι καταστάσεις που χρειάζεται να την καλούν σηµειώνονται µε ένα αστερίσκο. Aκόµη χρειάζεται µια ρουτίνα που θα εισάγει τον ευρεθέντα identifier στον πίνακα συµβόλων, αν δεν υπάρχει ήδη εκεί. 'Ετσι ο κώδικας για την κατάσταση 2 θα είναι ως εξής: state 2: retract( );

5 5 return (id, install( ) ) Η κατάσταση 2 επιστρέφει στον Συντακτικό Aναλυτή ένα ζευγάρι που συνίσταται από ένα ακέραιο (id) κώδικα για identifier και ένα δείκτη στον πίνακα συµβόλων, που επιστρέφεται από την install. Εάν τα κενά αγνοούνται στην πηγαία γλώσσα, η κατάσταση 2 θα πρέπει να περιλαµβάνει και εντολές που κινούν τον αρχικό δείκτη 1 στον επόµενο µη κενό χαρακτήρα του τµήµατος του πηγαίου προγράµµατος που βρίσκεται στον buffer εισόδου. Καλύτερο πρόγραµµα φτιάχνεται από ένα γενικευµένο συλλογικό ιάγραµµα Μετάβασης Καταστάσεων παρά από µια συλλογή ξεχωριστών διαγραµµάτων µια και δεν χρειάζεται να γυρίσει πίσω και να ξαναψάξει για token από την αρχή χρησιµοποιώντας κάποιο άλλο διάγραµµα µετάβασης καταστάσεων. ραστηριότητα 1 / Κεφάλαιο 2 Πάρετε τα tokens και τις τιµές τους από τον πίνακα του Σχήµατος 2.3 και κατασκευάστε γενικευµένα ιαγράµµατα Μετάβασης Καταστάσεων τα οποία αναγνωρίζουν τα tokens του πίνακα. Παρατηρούµε κατ αρχήν ότι το διάγραµµα για τα keywords δεν συνδυάζεται µε εκείνο των identifiers διότι δηµιουργούνται προβλήµατα σύγκρουσης καταστάσεων π.χ. βλέποντας τα γράµµατα els δεν µπορούµε να διακρίνουµε αν είµαστε στην κατάσταση 12 ή την 24. Στα διαγράµµατα που δείχνονται παρακάτω δεν υπάρχουν έξοδοι λάθους. Επίσης στις καταστάσεις 5, 9, 13, 16 και 21 δεν φαίνεται ότι στην περίπτωση που ο επόµενος χαρακτήρας είναι γράµµα ή ψηφίο τότε µεταβαίνουµε στην κατάσταση 24 (identifier). Τoken Κώδικας Τιµή begin 1 - end 2 - if 3 - then 4 - else 5 - indentifier 6 είκτης στον Πίνακα Συµβόλων Constant 7 είκτης στον Πίνακα Συµβόλων

6 6 < 8 1 <= 8 2 = 8 3 <> 8 4 > 8 5 >= 8 6 Σχήµα 2.3 Πίνακας των tokens και των τιµών τους.

7 7 Σχήµα 2.4 ιαγράµµατα Μετάβασης Καταστάσεων για τα tokens του Σχήµ ΕΝΟΤΗΤΑ 2.3 ΚΑΝΟΝΙΚΕΣ ΕΚΦΡΑΣΕΙΣ (RΕGULAR ΕΧΡRΕSSΙΟΝS) Σ αυτήν την ενότητα εισάγεται ο συµβολισµός των Κανονικών Εκφράσεων που είναι κατάλληλος για να περιγράφει tokens. Κατόπιν δείχνουµε πώς οι Κανονικές Εκφράσεις µετασχηµατίζονται αυτόµατα σε Πεπερασµένα Αυτόµατα (finite Automata), τα οποία δεν είναι παρά τυπικές προδιαγραφές (formal specifications) για τα ιαγράµµατα Μετάβασης Καταστάσεων. Τέλος θα συζητηθεί η υλοποίηση των πεπερασµένων αυτόµατων µε προγράµµατα ΣΥΜΒΟΛΟΣΕΙΡΕΣ ΚΑΙ ΓΛΩΣΣΕΣ: ΟΡΙΣΜΟΙ Ο όρος Αλφάβητο ή κλάση χαρακτήρων (Alphabet ή Character Class) αναφέρεται σε ένα πεπερασµένο σύνολο συµβόλων. Σύµβολο και χαρακτήρας υπονοούν το ίδιο πράγµα. Μια συµβολοσειρά (string ή sentence ή word) είναι µια ακολουθία από πλήθος συµβόλων. Το µήκος (length) της συµβολοσειράς x συµβολίζεται µε x και είναι το πλήθος των συµβόλων του x. (π.χ. x=01101 => x = 5).

8 8 Η κενή συµβολοσειρά συµβολίζεται µε ε και ισχύει ε =0. Η σύζευξη των συµβολοσειρών x και y συµβολίζεται µε x.y ή και xy. π.χ. x = abc, y =de => xy =abcde Aκόµη µπορούµε να γράψουµε x ¹ = x, x ²= x x, x ³= x x x κ.λ.π. Ρrefix της συµβολοσειράς x είναι µια υπο-συµβολοσειρά (substring) του x από την οποία έχουν αφαιρεθεί οι 0 ή περισσότεροι τελευταίοι χαρακτήρες του x. 'Ενα suffix του x σχηµατίζεται αφαιρώντας µηδέν ή περισσότερους από τους πρώτους χαρακτήρες του x. Aφαιρώντας ένα prefix και ένα suffix από το χ έχουµε ένα Substring. Τα µη κενά, Ρrefix, Suffix και Substring του x καλούνται proper Ρrefix, Suffix και Substring. Με τον όρο Γλώσσα (Language) εννοούµε οποιοδήποτε σύνολο συµβολοσειρών που σχηµατίζεται από κάποιο αλφάβητο. Ο ορισµός αυτός της γλώσσας είναι φοβερά ευρύς. Σύνολα όπως το (κενό σύνολο) ή το {ε} (το σύνολο που αποτελείται από τη κενή συµβολοσειρά) είναι γλώσσες κάτω από αυτόν τον ορισµό. Γλώσσα είναι επίσης το σύνολο των σωστών προγραµµάτων FΟRΤRAΝ και το σύνολο όλων των Ελληνικών προτάσεων. Σηµειώνουµε ότι ο ορισµός της γλώσσας που δώσαµε δεν επισυνάπτει οποιοδήποτε νόηµα (ή έννοια) στις συµβολοσειρές της γλώσσας. Aργότερα θα µιλήσουµε για συντακτικά - κατευθυνόµενη - µετάφραση σαν µια µέθοδο που επισυνάπτει νόηµα στη γλώσσα. Ο συµβολισµός σύζευξης ισχύει και στις γλώσσες. Aν L και Μ είναι γλώσσες τότε ορίζεται και η γλώσσα LΜ = {xy x L και y Μ} π.χ. αν L = {0,01,110} και Μ = {10,110} τότε LΜ = {010,0110,0110,01110,11010,110110} Σε αναλογία µε τις συµβολοσειρές ορίζουµε: L i = LLL (i-φορές), L 0 = {ε }, {ε }L=L{ε }=L Η ένωση των γλωσσών L και Μ: LUΜ = {x x L ή x Μ} και UL = LU = L, L = L =. Ο τελεστής closure (ή "any number of") L* δηλώνει την σύζευξη της γλώσσας L µε τον εαυτό της οσεσδήποτε φορές. * i L = UL i= 0

9 9 Ο µοναδιαίος τελεστής + (Unary Ρostfix operator) χρησιµοποιείται να δηλώσει το Ρositive closure L+ = L(L*) που αποκλείει το L = { } (µια ή περισσότερες παρουσίες της L). Για παράδειγµα, αν L = {αα} τότε L* είναι όλες οι συµβολοσειρές µε άρτιο πλήθος από α, µια και L 0 = {ε}, L 1 = {αα}, L 2 = {αααα} κ.λ.π. Επίσης αν D είναι µία γλώσσα που αποτελείται από τις συµβολοσειρές 0,1,...9, ήτοι, κάθε συµβολοσειρά είναι ένα απλό δεκαδικό ψηφίο, τότε το D* είναι όλες οι συµβολοσειρές των ψηφίων συµπεριλαµβανοµένης και της κενής συµβολοσειράς ΟΡΙΣΜΟΣ ΚΑΝΟΝΙΚΩΝ ΕΚΦΡΑΣΕΩΝ (ΚΕ) Κανονικές Εκφράσεις είναι ένας συµβολισµός που χρησιµοποιούµε για να καθορίσουµε µία κλάση γλωσσών που είναι γνωστές σαν Κανονικά Σύνολα (Regular sets), ή Κανονικές Γραµµατικές (Regular grammars). 'Ενα token είναι είτε µια µοναδική συµβολοσειρά (π.χ. σηµείο στίξης) ή µία συλλογή από συµβολοσειρές ορισµένου τύπου (π.χ. identifier). Aν θεωρήσουµε το σύνολο των συµβολοσειρών σε κάθε κλάση από tokens σαν µια γλώσσα, µπορούµε να χρησιµοποιήσουµε τον συµβολισµό των Κανονικών Εκφράσεων για να περιγράψουµε τα tokens. Παραδείγµατος χάρη, ένας identifier σε κάποια γλώσσα προγραµµατισµού ορίζεται σαν ένα γράµµα ακολουθούµενο από µηδέν έως επτά γράµµατα ή ψηφία. Σε (γενικευµένο) συµβολισµό Κανονικών Εκφράσεων θα µπορούσαµε να γράψουµε: identifier = letter (letter digit) 7 Στις ενότητες 2.5 και 2.6 θα δούµε ότι από τέτοιες περιγραφές µπορούµε αυτόµατα να κατασκευάσουµε πρόγραµµα που αναγνωρίζει identifiers. Aυτά που ονοµάζουµε Κανονικές Εκφράσεις στο Aλφάβητο Σ είναι εκείνες ακριβώς οι εκφράσεις που κατασκευάζονται από τους παρακάτω κανόνες. Κάθε Κανονική 'Εκφραση υποδηλώνει µία Γλώσσα και δίνουµε τους κανόνες για την κατασκευή αυτών των Γλωσσών µαζί µε τους κανόνες κατασκευής των Κανονικών Εκφράσεων: 1. ε είναι µία Κανονική 'Εκφραση που υποδηλώνει το {ε} δηλαδή την γλώσσα που περιέχει µόνο την κενή συµβολοσειρά. 2. για κάθε α στο Σ, α είναι µία Κανονική 'Εκφραση που υποδηλώνει το {α},

10 10 ήτοι την γλώσσα µε µια µόνο συµβολοσειρά η οποία αποτελείται από το γράµµα α. 3. Aν R και S είναι Κανονικές Εκφράσεις που υποδηλώνουν τις γλώσσες LR και L S τότε: α) (R) (S) είναι µία Κανονική 'Εκφραση που υποδηλώνει την γλώσσα LR ULS β) (R).(S) 1 είναι µία Κανονική 'Εκφραση που υποδηλώνει την γλώσσα LR. LS γ) (R)* είναι µία Κανονική 'Εκφραση που υποδηλώνει την γλώσσα LR* Υπάρχει και η δυνατότητα να απαλείψουµε τις παρενθέσεις στις Κανονικές Εκφράσεις, όπου χρειάζεται, κάνοντας χρήση των κανόνων προτεραιότητας που λένε ότι το * έχει την υψηλότερη προτεραιότητα, κατόπιν το. και τελευταίο το. Στα παρακάτω παραδείγµατα υποθέτουµε το Aλφάβητο Σ={α,b}. Η Κανονική 'Εκφραση, α υποδηλώνει την γλώσσα {α}, που είναι διαφορετικό πράγµα από τη συµβολοσειρά α. Παράδειγµα 1 / Κεφ.2 Η Κανονική 'Εκφραση α* δηλώνει το closure της γλώσσας {α} ήτοι, α * = U i=0 α i δηλαδή το σύνολο των συµβολοσειρών µε µηδέν ή περισσότερα α, ενώ η Κανονική 'Εκφραση αα*, που σύµφωνα µε τους κανόνες προτεραιότητας είναι ισοδύναµη µε την α(α)*, υποδηλώνει τις συµβολοσειρές που αποτελούνται από ένα ή περισσότερα α. Παράδειγµα 2 / Κεφ. 2 Εφ' όσον η Κανονική 'Εκφραση α b δηλώνει την γλώσσα {α,b}, η (α b)* δηλώνει την { a, b U }i i= 0 1?s?d??aµa???feta??a? sa? (R)(S) και υποδηλώνει την γλώσσα L R L S

11 11 που είναι το σύνολο όλων των συµβολοσειρών που αποτελούνται από α και b συµπεριλαµβανοµένης και της κενής συµβολοσειράς. Παράδειγµα 3 / Κεφ. 2 Η Κανονική 'Εκφραση α bα* που οµαδοποιείται και σαν α (b(α)*) δηλώνει το σύνολο των συµβολοσειρών που συνίσταται είτε από µόνο το α είτε το b ακολουθούµενο από κανένα ή περισσότερα α. Παράδειγµα 4 / Κεφ. 2 Η Κανονική 'Εκφραση αα αb ba bb δηλώνει όλες τις συµβολοσειρές µήκους 2 µε τα γράµµατα α και b. Παράδειγµα 5 / Κεφ. 2 Τα tokens στο Σχήµα 2.3 µπορούν να περιγραφούν από τις Κανονικές Εκφράσεις: keyword = begin end if then else identifier = letter (letter digit)* constant = digit + relop = < <= = < > > >= όπου letter σηµαίνει A Β... Ζ και digit 'Ασκηση Αυτοαξιολόγησης 1 / Κεφ. 2 Μια Κανονική 'Εκφραση σε κάποιο αλφάβητο Σ ορίζει: (1) µια συµβολοσειρά η οποία περιγράφει µια λεκτική δοµή (π.χ. µια σταθερά) σε µια γλώσσα προγραµµατισµού. (2) ένα σύνολο συµβολοσειρών το οποίο ορίζει µια "γλώσσα" (3) ένα token σε κάποια γλώσσα προγραµµατισµού. Ποιά από τις παραπάνω τρεις πιθανές απαντήσεις είναι η σωστή; 'Ασκηση Αυτοαξιολόγησης 2 / Κεφ. 2 'Ενας συρµός τρένου αποτελείται από µια ή δύο µηχανές στην αρχή που ακολουθούνται από ένα ή περισσότερα βαγόνια που ακολουθούνται από ένα βαγόνι ελεγκτών. Αν συµβολίσουµε την µηχανή µε Μ, κάθε βαγόνι του τρένου µε Β και το βαγόνι ελεγκτών µε Ε, προσπάθησε να γράψεις µια Κανονική 'Εκφραση η οποία να περιγράφει διάφορα τρένα (συρµούς).

12 12 ΕΝΟΤΗΤΑ 2.4 ΠΕΠΕΡAΣΜΕΝA AΥΤΟΜAΤA (FΙΝΙΤΕ AUΤΟΜAΤA) Το µέρος του Λεκτικού Aναλυτή που αναγνωρίζει την παρουσία ενός token στη συµβολοσειρά εισόδου (πηγαίο πρόγραµµα) είναι ένας αναγνωριστής (recognizer) της γλώσσας που καθορίζει το token. 'Ενας τρόπος να µετατραπεί µια Κανονική 'Εκφραση σε ένα αναγνωριστή, είναι να δηµιουργήσουµε ένα γενικευµένο ιάγραµµα Μετάβασης Καταστάσεων ( ΜΚ) από την Κανονική 'Εκφραση. Το διάγραµµα αυτό καλείται Μη Προσδιοριστικό Πεπερασµένο Αυτόµατο, (Non Deterministic Finite Automaton) και δεν είναι εν γένει εύκολο να εξοµοιωθεί από ένα απλό πρόγραµµα. Μια παραλλαγή όµως του Μη Προσδιοριστικού Πεπερασµένου Αυτόµατου, το Προσδιοριστικό Πεπερασµένο Αυτόµατο ( Deterministic Finite Automaton ) που κατασκευάζεται από το Μη Προσδιοριστικό Πεπερασµένο Αυτόµατο, µπορεί να εξοµοιωθεί εύκολα από ένα πρόγραµµα. Ορισµός 'Ενα Μη Προσδιοριστικό Πεπερασµένο Αυτόµατο είναι µία πεντάδα (Κ, VΤ, Μ, S, Ζ) όπου: 1. Κ είναι ένα αλφάβητο στοιχείων που καλούνται καταστάσεις. 2. VΤ είναι ένα αλφάβητο στοιχείων που καλείται αλφάβητο εισόδου (το αλφάβητο των χαρακτήρων εισόδου), 3. Μ είναι µία απεικόνιση (συνάρτηση) από το ΚxVΤ µέσα στο Κ. ( Αν Μ(Q,Τ)=R, τότε όταν το Προσδιοριστικό Πεπερασµένο Αυτόµατο είναι στην κατάσταση Q µε επόµενο χαρακτήρα εισόδου Τ, µεταβαίνει στην κατάσταση R), 4. S είναι η αρχική κατάσταση (και φυσικά S Κ), 5. Ζ είναι ένα µη κενό σύνολο τελικών καταστάσεων (Ζ Κ). 'Ενα Μη Προσδιοριστικό Πεπερασµένο Αυτόµατο που αναγνωρίζει την γλώσσα: (a b)*abb είναι το παρακάτω:

13 13 Σχήµα 2.5. Το ΜΚΠΑ της γλώσσας (a b)*abb Πρόκειται δηλαδή για ένα κατευθυνόµενο γράφηµα (directed graph). 'Εχει καταστάσεις (states) και πλευρές (edges) που καλούνται µεταβάσεις (transitions). Το Μη Προσδιοριστικό Πεπερασµένο Αυτόµατο µοιάζει πολύ µε ένα ιάγραµµα Μετάβασης Καταστάσεων εκτός του ότι κάποια πλευρά µπορεί να επιγράφεται µε το ε και µε χαρακτήρες και ότι ο ίδιος χαρακτήρας µπορεί να επιγράφει περισσότερες µεταβάσεις µιας κατάστασης. Υπάρχει µια αρχική κατάσταση και µία ή περισσότερες τελικές καταστάσεις. Το Μη Προσδιοριστικό Πεπερασµένο Αυτόµατο µπορεί να παρασταθεί και από ένα Πίνακα Μετάβασης Καταστάσεων (Τransition Τable). Π.χ. Ο Πίνακας Μετάβασης Καταστάσεων (ΠΜΚ) του Σχήµατος 2.5 είναι: Κατάσταση Σύµβολο στην Είσοδο α b 0 {0,1} {0} 1 - {2} 2 - {3} Το Μη Προσδιοριστικό Πεπερασµένο Αυτόµατο δέχεται (accepts) µια συµβολοσειρά x, εάν και µόνο εάν υπάρχει κάποιος δρόµος (path) από την αρχική κατάσταση σε µια από τις τελικές καταστάσεις. Το Μη Προσδιοριστικό Πεπερασµένο Αυτόµατο του Σχήµατος 2.5 θα δεχθεί τις συµβολοσειρές εισόδου αbb, ααbb, bαbb, αααbb,... Π.χ. το ααbb γίνεται δεκτό από τον δρόµο (path) που φαίνεται παρακάτω: Κατάσταση Υπολειπόµενη Είσοδος 0 ααbb 0 αbb 1 bb

14 14 2 b 3 ε Aρχικά θεωρείται ότι το Μη Προσδιοριστικό Πεπερασµένο Αυτόµατο είναι στην κατάσταση 0 διαβάζοντας το πρώτο χαρακτήρα εισόδου α. Η Γλώσσα που ορίζεται από ένα Μη Προσδιοριστικό Πεπερασµένο Αυτόµατο είναι το σύνολο των συµβολοσειρών που δέχεται (αναγνωρίζει). Π.χ. Το Μη Προσδιοριστικό Πεπερασµένο Αυτόµατο του Σχήµατος 2.5 δέχεται (α b)*αbb. Παρατηρούµε ότι το Μη Προσδιοριστικό Πεπερασµένο Αυτόµατο του Σχήµατος 2.5 έχει περισσότερες από µια µεταβάσεις από την κατάσταση 0 όταν έχει είσοδο το α. Aυτός είναι ο λόγος που είναι δύσκολη η εξοµοίωση του Μη Προσδιοριστικού Πεπερασµένου Αυτόµατου από ένα πρόγραµµα. 'Ενα Πεπερασµένο Aυτόµατο είναι Προσδιοριστικό (deterministic), αν: 1. εν έχει µεταβάσεις (transitions) για περίπτωση που η είσοδος είναι ε. 2. Για κάθε κατάσταση S και κάθε σύµβολο εισόδου α, υπάρχει το πολύ µια πλευρά επιγραφόµενη α, που βγαίνει από την S. Παράδειγµα 6 / Κεφ. 2 'Ενα Προσδιοριστικό Πεπερασµένο Αυτόµατο για την γλώσσα: (a b)*abb (αντίστοιχο του Μη Προσδιοριστικού Πεπερασµένου Αυτόµατου του Σχήµατος 2.5 ) είναι αυτό του Σχήµατος 2.6. Για κάθε Μη Προσδιοριστικό Πεπερασµένο Αυτόµατο µπορούµε να βρούµε ένα Προσδιοριστικό Πεπερασµένο Αυτόµατο που δέχεται την ίδια γλώσσα. Ο αριθµός των καταστάσεων του Προσδιοριστικού Πεπερασµένου Αυτόµατου µπορεί να αυξάνει εκθετικά µε τον αριθµό των καταστάσεων του Μη Προσδιοριστικού Πεπερασµένου Αυτόµατου, αν και αυτό είναι σπάνιο στην πράξη.

15 15 Σχήµα 2.6 'Ενα ΠΠΑ αντίστοιχο του ΜΠΠΑ του Σχήµατος 2.5 Υπάρχουν αλγόριθµοι κατασκευής ενός Προσδιοριστικού Πεπερασµένου Αυτόµατου από ένα Μη Προσδιοριστικό Πεπερασµένο Αυτόµατο, όπως και αλγόριθµοι κατασκευής ενός Μη Προσδιοριστικού Πεπερασµένου Αυτόµατου ή και Προσδιοριστικού Πεπερασµένου Αυτόµατου (πιο δύσκολοι) από µια Κανονική 'Εκφραση. 'Ασκηση Αυτοαξιολόγησης 3 / Κεφ. 2 Γράψε την Κανονική 'Εκφραση η οποία περιγράφει όλες τις συµβολοσειρές από χαρακτήρες "0" και "1", οι οποίες περιλαµβάνουν τρία "1" και απροσδιόριστο αριθµό από "0", (π.χ. 111, 0111, , κ.λ.π.). 'Ασκηση Αυτοαξιολόγησης 4 / Κεφ. 2 ίνονται οι αποκλειστικές λέξεις: Step, switch, string, από τη λεκτική περιγραφή κάποιας γλώσσας προγραµµατισµού. Ζητείται να κατασκευάσετε: (1) την Κανονική 'Εκφραση που τις περιγράφει (2) ένα Γενικευµένο ιάγραµµα Μετάβασης Καταστάσεων και (3) τον Πίνακα Μετάβασης. ΕΝΟΤΗΤΑ 2.5 AΥΤΟΜAΤΗ ΚAΤAΣΚΕΥΗ ΕΝΟΣ ΛΕΚΤΙΚΟΥ AΝΑΛΥΤΗ Εξετάζουµε τώρα το πώς µπορεί κάποιος να κατασκευάσει ένα Λεκτικό Aναλυτή από µια προδιαγραφή των tokens υπό µορφή µιας λίστας από Κανονικές Εκφράσεις. Είναι αλήθεια ότι η όλη δοµή των συµβόλων στις περισσότερες γλώσσες προγραµµατισµού είναι αρκετά όµοια, τόσο ώστε να µπορούµε να γράψουµε ένα γενικό Λεκτικό Aναλυτή για όλες τις γλώσσες. Ο Λεκτικός Aναλυτής αυτός θα χρησιµοποιεί διάφορους πίνακες (ή πινακοποιηµένες πληροφορίες), και είναι αυτοί ακριβώς οι πίνακες οι οποίοι διαφέρουν από γλώσσα σε γλώσσα. Μπορούµε να προγραµµατίσουµε ένα Κατασκευαστή (πρόγραµµα) ο οποίος δέχεται σαν είσοδο την περιγραφή των tokens (σαν Κανονική 'Εκφραση) και δηµιουργεί τους απαιτούµενους πίνακες για

16 16 τη γλώσσα. Aπό την στιγµή που δηµιουργήθηκαν από τον Κατασκευαστή οι πίνακες, ο Λεκτικός Aναλυτής είναι έτοιµος. Στο Σχήµα 2.7 φαίνεται διαγραµµατικά αυτή η διαδικασία αυτόµατης κατασκευής ενός Λεκτικού Αναλυτή. ιάφορα τέτοια συστήµατα για την αυτόµατη δηµιουργία Λεκτικού Αναλυτή έχουν προταθεί και χρησιµοποιούνται (AΕD RWΟRD, LΕΧ, FLEX κλπ.). Το LΕΧ [Lesk 1975] για παράδειγµα δέχεται στην είσοδο ένα σύνολο από Κανονικές Εκφράσεις µαζί µε κάποια δράση (action) για κάθε Κανονική 'Εκφραση. Η δράση είναι ορισµένες εντολές οι οποίες πρέπει να εκτελούνται όταν αναγνωρίζεται ένα token (όπως π.χ. στην περίπτωση που επισυνάπτουµε σηµασιολογικές λειτουργίες σε διαγράµµατα µετάβασης καταστάσεων για tokens π.χ. εισαγωγή ενός identifier στο symbol table κ.λ.π.). Η έξοδος του LΕΧ είναι ένας Πίνακας Μετάβασης Καταστάσεων (ΠΜΚ) που εκφράζει ένα Προσδιοριστικό Πεπερασµένο Αυτόµατο που προκύπτει από τις Κανονικές Εκφράσεις. Aκόµη ο LΕΧ δίνει και ένα πρόγραµµα το οποίο εξοµοιώνει ένα Προσδιοριστικό Πεπερασµένο Αυτόµατο το οποίο περιγράφεται από ένα Πίνακα Μετάβασης Καταστάσεων. Ο Λεκτικός Aναλυτής αποτελείται από πρόγραµµα εξοµοίωσης και τον Πίνακα Μετάβασης Καταστάσεων. ΕΝΟΤΗΤΑ 2.6 ΠΕΡΙΓΡAΦΗ ΤΟΥ LΕΧ Ο LΕΧ είναι ένα εργαλείο για την αυτόµατη δηµιουργία Λεκτικών Aναλυτών. Το πηγαίο πρόγραµµα του LΕΧ είναι οι προδιαγραφές ενός Λεκτικού Aναλυτή δηλαδή ένα σύνολο από Κανονικές Εκφράσεις (ΚΕ) µαζί µε κάποια δράση (action) για κάθε Κανονική 'Εκφραση. Μια δράση εκτελείται όταν αναγνωρίζεται το token στου οποίου την Κανονική 'Εκφραση αντιστοιχεί η δράση. Μια τυπική δράση, για παράδειγµα, µπορεί να επιστρέφει στον Συντακτικό Αναλυτή µια ένδειξη για το token που ευρέθηκε και να εισάγει και το token στον πίνακα συµβόλων. Μπορούµε να θεωρήσουµε τον LΕΧ σαν ένα Μεταγλωττιστή για µια εξειδικευµένη γλώσσα η οποία είναι κατάλληλη για να γράφουµε Λεκτικούς Aναλυτές και ορισµένα άλλα προγράµµατα επεξεργασίας κειµένων.

17 17 Σχήµα 2.7 ιαγραµµατική απεικόνιση της διαδικασίας αυτόµατης κατασκευής Λεκτικού Αναλυτή. Ο LΕΧ παράγει σαν έξοδο δύο πράγµατα, ένα Πίνακα Μεταβάσεων Καταστάσεων και ένα πρόγραµµα εξοµοίωσης το οποίο εξοµοιώνει ένα Πεπερασµένο Αυτόµατο το οποίο περιγράφεται από ένα σύνολο Κανονικών Εκφράσεων. Το πρόγραµµα εξοµοίωσης του Πεπερασµένου Aυτόµατου και ο πίνακας µεταβάσεων που περιγράφει το Πεπερασµένο Aυτόµατο αποτελούν το Λεκτικό Aναλυτή που φτιάχνει ο LΕΧ. 'Ενα "πηγαίο" πρόγραµµα για τον LΕΧ αποτελείται από δύο πράγµατα : 1. βοηθητικούς ορισµούς (auxiliary definitions) και 2. µεταφραστικούς κανόνες (translation Rules). Οι βοηθητικοί ορισµοί είναι "εντολές" της µορφής: D1 = R1 D2 = R2 Dn = Rn που κάθε Di είναι µοναδικό όνοµα και κάθε Ri είναι µια Κανονική 'Εκφραση της οποίας τα σύµβολα διαλέγονται από τα ΣU{D1,D2,...,Di-1} δηλαδή χαρακτήρες ή προηγουµένως ορισθέντα ονόµατα. Σ είναι το αλφάβητο των συµβόλων εισόδου π.χ. το ASCΙΙ ή ΕΒCDΙC σύνολο των χαρακτήρων. Οι µεταφραστικοί κανόνες είναι "εντολές" της µορφής:

18 18 Ρ1 Ρ2 {A1} {A2} Ρ m {A m } 'Οπου κάθε Ρi είναι µια Κανονική 'Εκφραση που καλείται - πρότυπο πάνω στο αλφάβητο Σ και τα ονόµατα των βοηθητικών ορισµών. Τα πρότυπα περιγράφουν την µορφή των tokens. Κάθε Ai είναι ένα κοµµάτι προγράµµατος που περιγράφει τι δράση - δουλειά - πρέπει να κάνει ο Λεκτικός Αναλυτής όταν ευρεθεί το token Ρ i. Τα A i 's γράφονται σε κάποια από τις γλώσσες προγραµµατισµού (συνήθως C ). Για να δηµιουργηθεί ο Λεκτικός Αναλυτής L, κάθε Ai πρέπει να µεταφραστεί (compiled) σε κώδικα µηχανής, όπως και κάθε άλλο πρόγραµµα που είναι γραµµένο στην ίδια γλώσσα µε τα Ai's. Ο Λεκτικός Aναλυτής L που φτιάχνεται από τον LΕΧ συµπεριφέρεται ως εξής: Ο L διαβάζει στην είσοδό του, ένα-ένα χαρακτήρα, µέχρις ότου βρεί το µεγαλύτερο prefix της εισόδου (θεωρείται σαν µια συµβολοσειρά) το οποίο ταιριάζει µε µια από τις Κανονικές Εκφράσεις Ρi. Μόλις ο L βρεί αυτό το prefix, το αφαιρεί από το string εισόδου και το βάζει σε µια βοηθητική περιοχή (buffer) που καλείται ΤΟΚΕΝ (το ΤΟΚΕΝ µπορεί στην πράξη να είναι δύο δείκτες - αρχή και τέλος της συµβολοσειράς που ταιριάζει στην Κανονική 'Εκφραση - µέσα στον buffer εισόδου). Κατόπιν ο L εκτελεί την δράση A i. Μόλις τελειώσει την εκτέλεση της A i, ο L επιστρέφει στον Συντακτικό Aναλυτή. Στην περίπτωση που κανένα από τα Ρi δεν ταιριάζει µε κανένα prefix της εισόδου έχει συµβεί κάποιο λάθος και πιθανότατα ο L ή παραδίδει τον έλεγχο σε κάποια ρουτίνα λάθους ή δίνει κάποια ένδειξη λάθους στον Συντακτικό Aναλυτή. Στην περίπτωση που δύο ή περισσότερα πρότυπα ταιριάζουν στο ίδιο µέγιστο prefix της εισόδου, ο L θα ευνοήσει το token που βρέθηκε πρώτο στον πίνακα των µεταφραστικών κανόνων.

19 19 ραστηριότητα 2 / Κεφάλαιο 2 Λάβετε υπόψιν σας τα tokens που δίνονται στον πίνακα του Σχήµατος 2.3 και προσπαθήστε να γράψετε τους "βοηθητικούς ορισµούς" και τους "µεταφραστικούς κανόνες", δηλαδή το "πρόγραµµα" το οποίο θα είναι είσοδος στο LEX ώστε να σας κατασκευάσει αυτόµατα τον Λεκτικό Αναλυτή ο οποίος αντιστοιχεί στα tokens του Σχήµατος 2.3 Ο Λεκτικός Αναλυτής (L) που φτιάχνει ο LΕΧ επιστρέφει πάντοτε στον Συντακτικό Aναλυτή µια ποσότητα, τον τύπο του token. Για να επιστρέψει και κάποια τιµή, η τιµή αυτή τοποθετείται στην καθολική µεταβλητή LΕΧVAL. Το παρακάτω "πρόγραµµα" καθορίζει τον Λεκτικό Aναλυτή που επιθυµούµε: AUΧΙLΙARΥ DΕFΙΝΙΤΙΟΝS letter=a Β... Ζ digit = ΤRAΝSLAΤΙΟΝ RULΕS begin {return 1} end {return 2} if {return 3} then {return 4} else {return 5} letter (letter digit)* {LΕΧVAL:=ΙΝSΤALL(); return 6} digit* {LΕΧVAL:=ΙΝSΤALL(); return 7} < {LΕΧVAL:=1; return 8} < = {LΕΧVAL:=2; return 8} = {LΕΧVAL:=3; return 8} <> {LΕΧVAL:=4; return 8} > {LΕΧVAL:=5; return 8} > = {LΕΧVAL:=6; return 8} Σχήµα 2.8 Το "Πρόγραµµα" του LΕΧ για τα tokens του Σχήµατος 2.3 Aς υποθέσουµε ότι ο L που θα προκύψει από τους παραπάνω κανόνες έχει είσοδο begin ακολουθούµενο από ένα κενό. Το πρώτο και το έκτο πρότυπο ταιριάζουν στο begin και κανένα πρότυπο δεν ταιριάζει σε ολόκληρη τη συµβολοσειρά εισόδου. Μια και το πρότυπο "begin" προηγείται στους κανόνες από εκείνο των identifiers (έκτο), ο L αναγνωρίζει το keyword begin. Aνάλογη κατάσταση εµφανίζεται στην αναγνώριση των < = και <.

20 20 Σύνοψη Κεφαλαίου 2 Στο κεφάλαιο αυτό µάθατε πως µπορείτε µόνοι σας (γράφοντας δηλαδή κώδικα εσείς οι ίδιοι) ή µε τη βοήθεια ενός γεννήτορα λεκτικών αναλυτών όπως είναι το LEX να κατασκευάσετε ένα Λεκτικό Αναλυτή. Μάθατε ότι για να περιγραφούν τα λεκτικά στοιχεία µιας γλώσσας προγραµµατισµού, αυτά δηλαδή που αναφέρονται σαν tokens χρειαζόµαστε τον συµβολισµό των Κανονικών Εκφράσεων. Όταν έχετε περιγράψει τα tokens µιας γλώσσας µε τη βοήθεια των Κανονικών Εκφράσεων µπορείτε στη συνέχεια να κατασκευάσετε τα ιαγράµµατα Μετάβασης Καταστάσεων τα οποία απεικονίζουν γραφικά τα tokens. Εξηγήσαµε (στην ενότητα 2.2) πως µπορείτε να γράψετε κώδικα, δηλαδή να προγραµµατίσετε ένα Λεκτικό Αναλυτή µόνοι σας γράφοντας ένα µικρό κοµµάτι κώδικα για κάθε µία κατάσταση του ιαγράµµατος Μετάβασης Καταστάσεων, και επίσης δείξαµε πως µπορείτε να ενοποιήσετε περισσότερα από ένα ιαγράµµατα Μετάβασης Καταστάσεων και να κατασκευάσετε ένα γενικευµένο τέτοιο διάγραµµα. Θυµίζουµε εδώ ότι ένα ιάγραµµα Μετάβασης Καταστάσεων (γενικευµένο ή όχι ) είναι ένα Πεπερασµένο Αυτόµατο το οποίο µπορεί να είναι Προσδιοριστικό ή µη Προσδιοριστικό. Στη συνέχεια, επειδή για τις λεκτικές δοµές µιας γλώσσας προγραµµατισµού (tokens) µας ενδιαφέρουν µόνο τα Προσδιοριστικά Πεπερασµένα Αυτόµατα, είδατε πως αυτά αναπαρίστανται από ένα Πίνακα Μετάβασης Καταστάσεων. Έτσι λοιπόν για το σύνολο των tokens µιας γλώσσας είδατε ότι µπορείτε να κατασκευάσετε ένα γενικευµένο Πίνακα Μετάβασης Καταστάσεων ο οποίος περιλαµβάνει µια αρχική κατάσταση, ένα σύνολο τερµατικών καταστάσεων (οι οποίες αντιστοιχούν στην αναγνώριση των διαφόρων τύπων tokens ) και ένα αλφάβητο χαρακτήρων. Ο Πίνακας Μετάβασης Καταστάσεων είναι εύκολο να προγραµµατισθεί. Μπορείτε δηλαδή να γράψετε ένα πρόγραµµα το οποίο διαβάζει ένα οποιονδήποτε Πίνακα Μετάβασης Καταστάσεων και εξοµοιώνει την λειτουργία του πίνακα. Τώρα πλέον αυτό το πρόγραµµα εξοµοίωσης και ο πίνακας (µαζί) αποτελούν ένα Λεκτικό Αναλυτή. Έτσι λειτουργούν στην πραγµατικότητα όλοι οι γεννήτορες Λεκτικών Αναλυτών όπως το LEX το οποίο περιγράφεται συνοπτικά στην ενότητα 2.6. Στα πλαίσια µιας ολοκληρωµένης παρουσίασης της θεωρίας πίσω από τους Λεκτικούς Αναλυτές χρειάσθηκε να αναφερθούµε, πολύ συνοπτικά, σε έννοιες

21 21 όπως η Γλώσσα, οι Κανονικές Εκφράσεις (κάθε Κανονική Έκφραση περιγράφει και µία γλώσσα), και τα Πεπερασµένα Αυτόµατα (Προσδιοριστικά και µη Προσδιοριστικά). Εάν θέλετε να µελετήσετε βαθύτερα την θεωρία πίσω από αυτά τα πράγµατα τότε σας συνιστώ να µελετήσετε την Θεµατική Υποενότητα Αυτόµατα και Τυπικές Γλώσσες της Θεµατικής Ενότητας Θεµελιώσεις της Επιστήµης των Υπολογιστών. Απαντήσεις Ασκήσεων Αυτααξιολόγησης του Κεφαλαίου 2 Απάντηση 'Ασκησης 1 1) Η απάντηση αυτή δεν είναι σωστή, διότι µια Κανονική 'Έκφραση στη γενική της µορφή δεν παράγει µια µόνο συµβολοσειρά αλλά ένα σύνολο από συµβολοσειρές οι οποίες "ορίζουν" µια γλώσσα. Εποµένως µια Κανονική 'Έκφραση δεν ορίζει "µια σταθερά" (για παράδειγµα), αλλά ένα σύνολο από σταθερές ενός συγκεκριµένου τύπου (π.χ. ακέραιες σταθερές). Επίσης δεν ορίζει ένα identifier αλλά όλους τους identifiers ενός συγκεκριµένου τύπου. Στην περίπτωση βέβαια των αποκλειστικών λέξεων όπως και των τελεστών, η Κανονική 'Εκφραση ορίζει µια µόνο συµβολοσειρά η οποία αντιστοιχεί στην αποκλειστική λέξη ή τον τελεστή. (2) Θαυµάσια, αυτή είναι η σωστή απάντηση. (3) Αυτή η απάντηση δεν είναι σωστή διότι ένα token περιγράφει µια συγκεκριµένη συµβολοσειρά ενός συγκεκριµένου τύπου. Για παράδειγµα τα tokens ALFA, BETA, και NEWLINE ορίζονται όλα από µια Κανονική 'Εκφραση η οποία περιγράφει τα tokens τύπου identifier. Απάντηση 'Ασκησης 2 Η Κανονική 'Εκφραση η οποία περιγράφει συρµούς µε την δοµή που περιγράφεται στην άσκηση είναι η: Μ (Μ ε) Β+ Ε Απάντηση 'Ασκησης 3 Η Κανονική 'Εκφραση που περιγράφει τις παραπάνω συµβολοσειρές είναι η: 0*10*10*10*

22 22 Από αυτή τη Κανονική 'Εκφραση θα µπορούσες να κατασκευάσεις και το ιάγραµµα Μετάβασης Καταστάσεων το οποίο θα είναι ως εξής Start Φυσικά θα µπορούσες να κατασκευάσεις και τον Πίνακα Μεταβάσεων ο οποίος θα πρέπει να είναι ως εξής: Κ/Σ 0 1 Τ Τ Απάντηση 'Ασκησης 4 (1) Η ζητούµενη Κανονική 'Εκφραση είναι η: s ( t (ep ring) witch ) (2) Το δε Γενικευµένο ιάγραµµα Μετάβασης Καταστάσεων που αναγνωρίζει τις λέξεις αυτές είναι το:

23 23 s t e p Start w r 5 i n 6 7 g 8 9 i t c h (3) Τέλος ο Πίνακας Μεταβάσεων είναι ο εξής: Κ/Σ s t e p r i n g w c h Τ Τ Τ Τ Με Τ σηµειώνονται οι τερµατικές καταστάσεις.

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία Mεταγλωττιστές 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex Σκοπός: Το μάθημα αυτό αναφέρεται: στις κανονικές εκφράσεις στην δομή και το περιεχόμενο του αρχείου-εισόδου του flex Γενικά Θεωρία Κατά την

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

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

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

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

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

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

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

Σύνοψη Προηγούµενου. Κανονικές Γλώσσες (1) Προβλήµατα και Γλώσσες. Σε αυτό το µάθηµα. ιαδικαστικά του Μαθήµατος.

Σύνοψη Προηγούµενου. Κανονικές Γλώσσες (1) Προβλήµατα και Γλώσσες. Σε αυτό το µάθηµα. ιαδικαστικά του Μαθήµατος. Σύνοψη Προηγούµενου Κανονικές Γλώσσες () ιαδικαστικά του Μαθήµατος. Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Εισαγωγή: Υπολογισιµότητα και Πολυπλοκότητα. Βασικές

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

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

Ποιές οι θεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιορισµοί των υπολογιστών ; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε (και γιατί); Μοντελοποίηση του Υπολογισµού Στοιχεία Θεωρίας Υπολογισµού (): Τυπικές Γλώσσες, Γραµµατικές Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ποιές οι θεµελιώδεις δυνατότητες

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

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

Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Θεωρία Υπολογισµού 1 /

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Στοιχεία Θεωρίας Υπολογισµού (2): Πεπερασµένα Αυτόµατα, Κανονικές Εκφράσεις Στοιχεία Θεωρίας Υπολογισµού (2): Πεπερασµένα Αυτόµατα, Κανονικές Εκφράσεις Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Θεωρία Υπολογισµού

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

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

Γενικές Παρατηρήσεις. Μη Κανονικές Γλώσσες - Χωρίς Συµφραζόµενα (1) Το Λήµµα της Αντλησης. Χρήση του Λήµµατος Αντλησης. Γενικές Παρατηρήσεις Μη Κανονικές Γλώσσες - Χωρίς Συµφραζόµενα () Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Υπάρχουν µη κανονικές γλώσσες, π.χ., B = { n n n }. Αυτό

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

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

Γραµµατικές για Κανονικές Γλώσσες Κανονικές Γραµµατικές Γραµµατικές για Κανονικές Γλώσσες Ταξινόµηση Γραµµατικών εξιά Παραγωγικές Γραµµατικές εξιά Παραγωγικές Γραµµατικές και NFA Αριστερά Παραγωγικές Γραµµατικές Κανονικές Γραµµατικές Γραµµατικές

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

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

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

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

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

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

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

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2011-2012 Γιάννης Γαροφαλάκης, Καθηγητής Αθανάσιος Ν.Νικολακόπουλος, Υποψήφιος Διδάκτορας 28 Μαρτίου 2012 Περίληψη Σκοπός της παρούσας

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

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

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

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

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

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

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

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

Γλώσσες που περιγράφονται από Κανονικές Εκφράσεις Κανονικές Εκφράσεις Στοιχειώδεις Κανονικές Εκφράσεις Κανονικές Εκφράσεις Γλώσσες που περιγράφονται από Κανονικές Εκφράσεις ηµιουργία Κανονικών Εκφράσεων Παραδείγµατα Κανονικών Εκφράσεων Τις Κανονικές εκφράσεις

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗ30 ΕΝΟΤΗΤΑ 3: ΚΑΝΟΝΙΚΕΣ ΓΛΩΣΣΕΣ. Μάθηµα 3.2: ηµήτρης Ψούνης ΠΛΗ30 ΕΝΟΤΗΤΑ 3: ΚΑΝΟΝΙΚΕΣ ΓΛΩΣΣΕΣ Μάθηµα 3.2: Ντετερµινιστικά Πεπερασµένα Αυτόµατα ηµήτρης Ψούνης 2 ΠΕΡΙΕΧΟΜΕΝΑ Α. Σκοπός του Μαθήµατος Β. Θεωρία 1. Πεπερασµένα Αυτόµατα 1. Λειτουργία και Παραδείγµατα

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 3 ΣΥΝΤΑΚΤΙΚΑ ΣΤΟΙΧΕΙΑ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 1 ΚΕΦΑΛΑΙΟ 3 ΣΥΝΤΑΚΤΙΚΑ ΣΤΟΙΧΕΙΑ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στόχος Στόχος του Κεφαλαίου αυτού είναι να περιγράψει µε σύντοµο τρόπο κάποια βασικά στοιχεία γλωσσών προγραµµατισµού τύπου Context-free (Γραµµατικές

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

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

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2) Ισοδυναµία CFG και PDA. Σε αυτό το µάθηµα. Αυτόµατα Στοίβας Pushdown Automata Σύνοψη Προηγούµενου Γλώσσες χωρίς Συµφραζόµενα (2) Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Αυτόµατα Στοίβας Pushdown utomata Ισοδυναµία µε τις Γλώσσες χωρίς Συµφραζόµενα:

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

Αυτόματα και Υπολογιστικά Μοντέλα Automata and Models of Computation

Αυτόματα και Υπολογιστικά Μοντέλα Automata and Models of Computation Αυτόματα και Υπολογιστικά Μοντέλα Automata and Models of Computation Διδάσκων: Στάθης Ζάχος Επιμέλεια Διαφανειών: Μάκης Αρσένης CoReLab ΣΗΜΜΥ - Ε.Μ.Π. Φεβρουάριος 2017 Διδάσκων: Στάθης Ζάχος ( CoReLab

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

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

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

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

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

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

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

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

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών 4ο εξάμηνοσhmμy 6η ενότητα: Αυτόματα, τυπικές γλώσσες, γραμματικές Επιμέλεια διαφανειών: Στάθης Ζάχος, Άρης Παγουρτζής http://www.corelab.ece.ntua.gr/courses/introcs

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

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

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2): Αυτόµατα Στοίβας. Παραδείγµατα Σχεδιασµού CFG. Παράδειγµα 1. Σύνοψη Προηγούµενου Γλώσσες χωρίς Συµφραζόµενα 2): Αυτόµατα Στοίβας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Μη Κανονικές Γλώσσες Το Λήµµα της Αντλησης για τις

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

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

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2011-2012 Προθεσµία: 8/1/12, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης Οδηγίες αποστολής άσκησης Πριν ξεκινήσετε (ΔΙΑΒΑΣΤΕ

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

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

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

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

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

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

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

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

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

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

for for for for( . */

for for for for( . */ Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται

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

Φροντιστήριο 1ο Εισαγωγή στο FLEX. Flex. Regular Expressions (1/4)

Φροντιστήριο 1ο Εισαγωγή στο FLEX. Flex. Regular Expressions (1/4) HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 1ο Εισαγωγή στο FLEX Ι ΑΣΚΩΝ Αντώνιος Σαββίδης Slide

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

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

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

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

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

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Σύντοµες Σηµειώσεις. Γιώργος Μανής

Εισαγωγή στον Προγραµµατισµό. Σύντοµες Σηµειώσεις. Γιώργος Μανής Εισαγωγή στον Προγραµµατισµό Σύντοµες Σηµειώσεις Γιώργος Μανής Νοέµβριος 2012 Αλγόριθµοι και Λογικά ιαγράµµατα Αλγόριθµος λέγεται µία πεπερασµένη διαδικασία καλά ορισµένων ϐηµάτων µου ακολουθείται για

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

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ( Απαντήσεις & Λύσεις Βιβλίου) 1. Σκοποί κεφαλαίου Κύκλος ανάπτυξης προγράµµατος Κατηγορίες γλωσσών προγραµµατισµού

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Λογισμικό Συστήματος. Κλειώ Σγουροπούλου Λογισμικό Συστήματος Κλειώ Σγουροπούλου Λογισμικό συστήματος Λειτουργικό σύστημα Μεταφραστές γλώσσας (translators) Διερμηνείς (interpreters) Μεταγλωττιστές (compilers) Εκδότες (editors) Φορτωτές (loaders)

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

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Συναρτήσεις ΣΥΝΑΡΤΗΣΕΙΣ 1.1. Ο λόγος ύπαρξης των συναρτήσεων Όπως είδαµε µία διαδικασία µπορεί να υπολογίζει περισσότερα από ένα αποτελέσµατα τα

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

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Εισαγωγή Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Μεταγλωττιστής Αρχικό πρόγραμμα (source program) Μεταγλωττιστής Τελικό πρόγραμμα (object program) Διαγνωστικά μηνύματα Μεταγλωττιστής Παίρνει σαν

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

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

Πίνακας Περιεχοµένων Πρόλογος Κεφάλαιο Βασικές εισαγωγικές έννοιες Πίνακας Περιεχοµένων Πρόλογος...vii Κεφάλαιο 1:Βασικές εισαγωγικές έννοιες...1 1.1 Η δοµή του µεταγλωττιστή...2 1.2 Η διαδικασία µεταγλώττισης...3 1.2.1 Η Λεξική Ανάλυση...6 1.2.2 Η Συντακτική Ανάλυση...6

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

ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ 1

ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ 1 ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ 1 ΠΡΟΛΟΓΟΣ ΒΙΒΛΙΟΥ Η σχεδίαση και η κατασκευή ενός Μεταγλωττιστή ή ενός ιερµηνευτή για µια γλώσσα προγραµµατισµού δεν είναι ούτε απλή ούτε εύκολη υπόθεση. Το υλικό

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2010 Ι ΑΣΚΩΝ: ΑΝΤΩΝΙΟΣ ΣΑΒΒΙ ΗΣ ΒΑΣΙΚΗ ΕΡΓΑΣΙΑ ΦΑΣΗ 2η από 5 Ανάθεση: Πέµπτη 15 Απριλίου 2010, 11:00 (πρωί)

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

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

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών. Προδιαγραφές Εισαγωγή στην Επιστήμη των Υπολογιστών 4ο εξάμηνοσ.h.m.μ.y. & Σ.Ε.Μ.Φ.Ε. http://www.corelab.ece.ntua.gr/courses/ 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές Στάθης Ζάχος Συνεργασία: Κωστής Σαγώνας Επιμέλεια:

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

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

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

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

Σύνοψη Προηγούµενου. Κανονικές Γλώσσες (3) Παραδείγµατα µε Κανονικές Εκφράσεις. Σε αυτό το µάθηµα.

Σύνοψη Προηγούµενου. Κανονικές Γλώσσες (3) Παραδείγµατα µε Κανονικές Εκφράσεις. Σε αυτό το µάθηµα. Σύνοψη Προηγούµενου Κανονικές Γλώσσες (3) Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς (Ντετερµινιστική) Κλειστότητα Κανονικών Γλωσσών ως προς Ενωση. Κατασκευή: DFA

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

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

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, Εφαρµογές στοιβών Στην ενότητα αυτή θα µελετηθεί η χρήση στοιβών στις εξής εφαρµογές: Αναδροµικές συναρτήσεις Ισοζυγισµός Παρενθέσεων Αντίστροφος Πολωνικός Συµβολισµός ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Τελικές εξετάσεις 3 Ιανουαρίου 27 Διάρκεια εξέτασης: 3 ώρες (2:-5:) ΘΕΜΑ ο

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

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

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

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

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

Κατηγορικές Γραµµατικές Κατηγορικές Γραµµατικές Γραµµατικές Χωρίς περιορισµούς Με συµφραζόµενα Χωρίς συµφραζόµενα Κανονικές Πεπερασµένων επιλογών Κατηγορικές Ενεργοποίησης Γραµµατικές G = { T, N, P, S } Τ: αλφάβητο τερµατικών

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

Κεφάλαιο 4ο: Εντολές επιλογής

Κεφάλαιο 4ο: Εντολές επιλογής Χρήστος Τσαγγάρης ΕΕ ΙΠ Τµήµατος Μαθηµατικών, Πανεπιστηµίου Αιγαίου Κεφάλαιο 4ο: Εντολές επιλογής Μέχρι τώρα παρατηρήσαµε ότι τα προβλήµατα που αντιµετωπίσαµε είχαν σειριακή κίνηση, δηλαδή η µία εντολή

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

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

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

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

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) 1 ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) ιάλεξη 1 1.1 ΕΙΣΑΓΩΓΗ ΣΤΗ FORTRAN 77 Ένα πρόγραµµα σε οποιαδήποτε γλώσσα προγραµµατισµού δεν τίποτα άλλο από µια σειρά εντολών που πρέπει

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

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

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

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

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

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

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

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

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

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

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

Σειρά Προβλημάτων 1 Λύσεις Σειρά Προβλημάτων 1 Λύσεις Άσκηση 1 Έστω αλφάβητο Σ και γλώσσες Λ 1, Λ 2 επί του αλφάβητου αυτού. Να διερευνήσετε κατά πόσο ισχύει κάθε μια από τις πιο κάτω σχέσεις. Σε περίπτωση που μια σχέση ισχύει να

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

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

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

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

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου Ορισµοί κεφαλαίου Αλγόριθµος είναι µια πεπερασµένη σειρά ενεργειών, αυστηρά καθορισµένων και εκτελέσιµων σε πεπερασµένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήµατος. Σηµαντικά σηµεία κεφαλαίου Κριτήρια

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

ΚΕΦΑΛΑΙΟ 2 Βασικές έννοιες αλγορίθµων

ΚΕΦΑΛΑΙΟ 2 Βασικές έννοιες αλγορίθµων ΚΕΦΑΛΑΙΟ 2 Βασικές έννοιες αλγορίθµων Αλγόριθµος : Είναι ένα σύνολο βηµάτων, αυστηρά καθορισµένων κι εκτελέσιµων σε πεπερασµένο χρόνο, που οδηγούν στην επίλυση ενός προβλήµατος. Χαρακτηριστικά ενός σωστού

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

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

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

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

σύνθεση και απλοποίησή τους θεωρήµατα της άλγεβρας Boole, αξιώµατα του Huntington, κλπ.

σύνθεση και απλοποίησή τους θεωρήµατα της άλγεβρας Boole, αξιώµατα του Huntington, κλπ. Εισαγωγή Εργαστήριο 2 ΛΟΓΙΚΑ ΚΥΚΛΩΜΑΤΑ Σκοπός του εργαστηρίου είναι να κατανοήσουµε τον τρόπο µε τον οποίο εκφράζεται η ψηφιακή λογική υλοποιώντας ασκήσεις απλά και σύνθετα λογικά κυκλώµατα (χρήση του

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

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

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

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

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

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

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

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

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

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

Α. Ερωτήσεις Ανάπτυξης

Α. Ερωτήσεις Ανάπτυξης οµηµένος Προγραµµατισµός-Κεφάλαιο 7 Σελίδα 1 α ό 10 ΕΝΟΤΗΤΑ ΙΙΙ (ΠΡΟΓΡΑΜΜΑΤΑ) ΚΕΦΑΛΑΙΟ 7: Είδη, Τεχνικές και Περιβάλλοντα Προγραµµατισµού Α. Ερωτήσεις Ανάπτυξης 1. Τι ονοµάζουµε γλώσσα προγραµµατισµού;

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

Μια TM µπορεί ένα από τα δύο: να αποφασίζει µια γλώσσα L. να αναγνωρίζει (ηµιαποφασίζει) µια γλώσσα L. 1. Η TM «εκτελεί» τον απαριθµητή, E.

Μια TM µπορεί ένα από τα δύο: να αποφασίζει µια γλώσσα L. να αναγνωρίζει (ηµιαποφασίζει) µια γλώσσα L. 1. Η TM «εκτελεί» τον απαριθµητή, E. Οι γλώσσες των Μηχανών Turing Αποφασισιµότητα / Αναγνωρισιµότητα Μια TM µπορεί ένα από τα δύο: να αποφασίζει µια γλώσσα L Αποδέχεται όταν (η είσοδος στην TM) w L. Ορέστης Τελέλης telelis@unipi.gr Τµήµα

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

Βαθμός Σχόλια. lab6 PASS PASS. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string.

Βαθμός Σχόλια. lab6 PASS PASS. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string. Α. Μ. Βαθμός Σχόλια 1183 1194 1238 1239 1240 1241 1242 1243 - Πολύ καλή δουλειά κατά τα άλλα, µπράβο. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string.h

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

Καταστάσεων. Καταστάσεων

Καταστάσεων. Καταστάσεων 8 η Θεµατική Ενότητα : Εισαγωγή Ησχεδίαση ενός ψηφιακού συστήµατος µπορεί να διαιρεθεί σε δύο µέρη: τα κυκλώµατα επεξεργασίας δεδοµένων και τα κυκλώµατα ελέγχου. Το κύκλωµα ελέγχου δηµιουργεί σήµατα για

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

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

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

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

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

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2011-2012 ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ Ποιος πρέπει να ολοκληρώσει αυτή την εργασία? Φοιτητές έτους >=2 που

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

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

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

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

Εργαστήριο 08 Εισαγωγή στo Yacc

Εργαστήριο 08 Εισαγωγή στo Yacc Εργαστήριο 08 Εισαγωγή στo Yacc Θεωρία Σκοπός: Το μάθημα αυτό αναφέρεται: Στο εργαλείο κατασκευής συντακτικών αναλυτών, Yacc, στις δομές και συναρτήσεις που προσφέρει. Στη σύνταξη των αρχείων περιγραφής

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

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

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

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

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

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

ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD

ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD Σε ορισµένες περιπτώσεις είναι ιδιαίτερα χρήσιµη η δηµιουργία ιστοσελίδων ενηµερωτικού περιεχοµένου οι οποίες στη συνέχεια µπορούν να δηµοσιευθούν σε κάποιο τόπο

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

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος Α. Θεωρία 1. Κύκλος Ανάπτυξης Προγράµµατος 1. Συγγραφή και Μεταγλώττιση ενός προγράµµατος 2. Εκτέλεση του προγράµµατος

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

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C) Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C) ΚΑΤΑΛΟΓΟΣ ΕΡΩΤΗΣΕΩΝ ΕΡΩΤΗΣΕΙΣ ΕΙ ΙΚΩΝ ΓΝΩΣΕΩΝ (γλώσσα προγραµµατισµού

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ΠΕΡΙΕΧΟΜΕΝΟ ΤΟΥ ΜΑΘΗΜΑΤΟΣ Αρχές

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

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

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση με το Εργαλείο BISON Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση με το Εργαλείο BISON Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Γεννήτριες Συντακτικών Αναλυτών Bison/yacc

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

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

Ισοδυναμία Αιτ. Και μη Αιτ. Π.Α. Ισοδυναμία Αιτ. Και μη Αιτ. Π.Α. Δύο Π.Α. Μ 1 και Μ 2 είναι ισοδύναμα ανν L(M 1 ) = L(M 2 ). Έστω Μ = (Q, Σ, q 0, Δ, F) μη Αιτ. Π.Α. Για κάθε κατάσταση q Q, ορίζουμε ως Ε(q) Q το σύνολο των καταστάσεων

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

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΘΕΜΑ Α Α1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν, γράφοντας στο τετράδιό σας, δίπλα στο

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

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

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

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

Μεταγλωττιστής. Μεταφραστές. Γλώσσες. Είδη Μεταγλωττιστών. Μεταγλωττιστής Τελικό πρόγραµµα (object program) Εισαγωγή Αρχικό πρόγραµµα (source program)

Μεταγλωττιστής. Μεταφραστές. Γλώσσες. Είδη Μεταγλωττιστών. Μεταγλωττιστής Τελικό πρόγραµµα (object program) Εισαγωγή Αρχικό πρόγραµµα (source program) Μεταφραστές Εισαγωγή (source program) Τελικό πρόγραµµα (object program) Γιώργος Μανής Γλώσσες Είδη Μεταγλωττιστών Αρχική γλώσσα Γλώσσα υλοποίησης Τελική γλώσσα Απλοί µεταγλωττιστές Αντίστροφοι µεταγλωττιστές

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

ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ

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

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

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

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

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΞΕΤΑΣΤΙΚΗ ΠΕΡΙΟ ΟΣ: ΣΕΠΤΕΜΒΡΙΟΥ 6 Ι ΑΣΚΩΝ: Ε. ΚΟΦΙ ΗΣ Όλα τα ερωτήµατα είναι ισοδύναµα. Καλή επιτυχία! ΘΕΜΑ ο a) Βρείτε την αναπαράσταση

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

3 Αναδροµή και Επαγωγή

3 Αναδροµή και Επαγωγή 3 Αναδροµή και Επαγωγή Η ιδέα της µαθηµατικής επαγωγής µπορεί να επεκταθεί και σε άλλες δοµές εκτός από το σύνολο των ϕυσικών N. Η ορθότητα της µαθηµατικής επαγωγής ϐασίζεται όπως ϑα δούµε λίγο αργότερα

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

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

ιαφάνειες παρουσίασης #4 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης #4!Λοιπές εντολές!

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