Σηµειώσεις Μεταγλωττιστές

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

Download "Σηµειώσεις Μεταγλωττιστές"

Transcript

1 Σηµειώσεις Μεταγλωττιστές 1. Eισαγωγή Στο κεφάλαιο αυτό θα περιγράψουµε τα στοιχεία ενός µεταγλωττιστή, το περιβάλλον εργασίας καθώς και ορισµένα εργαλεία λογισµικού για την κατασκευή µεταγλωττιστών. Στα επόµενα κεφάλαια θα εξετάσουµε καθένα από αυτά τα στοιχεία πιο λεπτοµερειακά. 1.1 Γενικά Απλά ένας µεταγλωττιστής είναι ένα πρόγραµµα το οποίο διαβάζει ένα πρόγραµµαγραµµένο σε µια γλώσσα (Source γλώσσα) και το µεταφράζει σε ένα ισοδύναµο πρόγραµµα σε µια άλλη γλώσσα (target γλώσσα). source Πηγαίος κώδικας µεταγλωττιστής target Στόχος Μηνύµατα Λαθών Σχήµα 1.1 H κατασκευή ενός µεταγλωττιστή είναι µια πολύπλοκη διαδικασία. Eιδικά για τους πρώτους µεταγλωττιστές (δεκαετία του 50) απαιτήθηκε τεράστιος αριθµός ανθρωποµηνών. Aναφέρεται ότι ο πρώτος FORTRAN µεταγλωττιστής χρειάστηκε 18 ανθρωποέτη. Aπο τότε αφενός µεν έχουν συστηµατικοποιηθεί οι τεχνικές για τον σχεδιασµό των διαφόρων διαδικασιών που εκτελούνται από ένα µεταγλωττιστή και αφετέρου έχουν αναπτυχθεί πολλά εργαλεία λογισµικού. Eδω θα θέλαµε να αναφερθούµε στους interpreters (διερµηνείς), επειδή καµία φορά υπάρχει σύγχυση µεταξύ interpreter και µεταγλωττιστή. Eνας interpreter αντί να παράγει ένα πρόγραµµα που θα είναι η µετάφραση όλου του προγράµµατος εισόδου αναλύει, µεταφράζει και εκτελεί άµεσα τις εντολές του προγράµµατος εισόδου µία-µία. Οι interpreters χρησιµοποιούνται συχνά σε command γλώσσες αφού κάθε τελεστής µιας τέτοιας γλώσσας συνήθως ενεργοποιεί µια πολύπλοκη ρουτίνα. (π.χ. editor, µεταγλωττιστή). Πολλές φορές όµως υπάρχουν και ανώτερες γλώσσες προγραµµατισµού οι οποίες λειτουργούν µε interpreter (π.χ. APL). 1.2 Στάδια µετάφρασης Τα στάδια της µετάφρασηςενόςπρογράµµατος θα µπορούσαν να χωριστούν σε δύο στην ανάλυση και στη σύνθεση. Kατα την ανάλυση το πρόγραµµα εισόδου διαβάζεται, αναγνωρίζονται τα συστατικά µέρη του και δηµιουργείται ένας ενδιάµεσος κώδικας, που είναι απεικόνιση του προγράµµατος εισόδου. Hσύνθεση δηµιουργεί από τον ενδιάµεσο κώδικα πρόγραµµα ένα πρόγραµµα ισοδύναµο µε αυτό της εισόδου, γραµµένο στην επιθυµητή γλώσσα (π.χ. assembler, γλώσσα µηχανής). Αυτός όµως ο διαχωρισµός είναι πολύ γενικός. Eνας µεταγλωττιστής µεταφράζει σε διαδοχικές φάσεις. Tο στάδιο της ανάλυσης περιλαµβάνει 3 φάσεις: την Λεκτική Aναλυση, την Συντακτική Aναλυση και την Σηµασιολογική Aναλυση. Tο στάδιο της σύνθεσης περιλαµβάνει επίσης 3 φάσεις: Tην ηµιουργία Ενδιάµεσου Kωδικα, Βελτιστοποίηση Eνδιάµεσου Kωδικα και Παραγωγή Tελικου Kωδικα. Kάθε φάση µετατρέπει το αρχικό πρόγραµµα από µια παράσταση σε µια άλλη ισοδύναµη. Tο σχήµα 1.2 απεικονίζει τις φάσεις της µετάφρασης. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

2 Πηγαίο Πρόγραµµα Λεκτικός Αναλυτής Συντακτικός Αναλυτής ιαχείριση Πίνακα Συµβόλων Σηµασιολογικός Αναλυτής Παραγωγή Ενδιάµεσου Κώδικα ιαχείριση Λαθών Βελτιστοποίηση Ενδιάµεσου Κώδικα Παραγωγή Τελικού Κώδικα Τελικό Πρόγραµµα Σχήµα 1.2 Στο σχήµα 1.2 απεικονίζονται δυο επιπλέον διαδικασίες η ιαχείριση Πίνακα Συµβόλων και η ιαχείριση Λαθών που επικοινωνούν µε τις έξι φάσεις που προαναφέραµε. Θα ονοµάζουµε και αυτές φάσεις. ιαχείριση Πίνακα Συµβόλων Μια σηµαντική λειτουργία ενός µεταγλωττιστή είναι να καταγράφει τις µεταβλητές που χρησιµοποιούνται σε ένα πηγαίο πρόγραµµα και να συλλέγει πληροφορίες για τα χαρακτηριστικά των µεταβλητών αυτών (τύπος, πεδίο ισχύος, σε περίπτωση procedure ή function αριθµό παραµέτρων, κλπ). Οι πληροφορίες αποθηκεύονται σε µια δοµή στον πίνακα συµβόλων που επιτρέπει την γρήγορη αναζήτηση κάποιας µεταβλητής καθώς και την αποθήκευση και ανάκτηση πληροφοριών για την µεταβλητή. Όταν µια µεταβλητή αναγνωρίζεται από τον λεκτικό αναλυτή τοποθετείται στον πίνακα συµβόλων. Tα χαρακτηριστικά τους δεν µπορούν να αναγνωριστούν από τον λεκτικό αναλυτή. Π.χ. σε µια δήλωση µεταβλητών στη Pascal: var p, i, r : real; ο τύπος των Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

3 µεταβλητών δεν αναγνωρίζεται όταν τα ονόµατα τους διαβάζονται για πρώτη φορά από τον λεκτικό αναλυτή. Οι υπόλοιπες φάσεις συµπληρώνουν τα δεδοµένα του πίνακα. Αναγνώριση Λαθών και µηνύµατα Κάθε φάση µπορεί να συναντήσει λάθη. Όταν ένα λάθος αναγνωριστεί σε µια φάση πρέπει κάπως να αντιµετωπιστεί (ανάκαµψη - error recovery) ώστε να συνεχιστεί η µετάφραση του προγράµµατος. εν πρέπει να σταµατάει στο πρώτο λάθος. Hσυντακτική και σηµασιολογική ανάλυση αντιµετωπίζουν το µεγαλύτερο µέρος των λαθών. Λεκτική Ανάλυση Στην πρώτη φάση γίνεται η αναγνώριση των tokens του προγράµµατος. Token είναι κάθε µια στοιχειώδης νοηµατική µονάδα (ένα σύµβολο) που χρησιµοποιεί µια γλώσσα προγραµµατισµού π.χ δεσµευµένες λέξεις (while, if) ονόµατα µεταβλητών, τελεστές (<, <=, :=) κλπ. Oλεκτικός αναλυτής διαβάζει τους χαρακτήρες του πηγαίου προγράµµατος και από τα strings αναγνωρίζει λεκτικά (lexemes) που ανταποκρίνονται σε tokens (σύµβολα) της γλώσσας. Έτσι αναγνωρίζει σύµβολα όπως ".", ",", ":=', "begin". Σε µερικά σύµβολα θα προσθέσει και κάποια "λεκτική τιµή". Π.χ. όταν αναγνωρίσει µια µεταβλητή p θα επιστρέψει το σύµβολο (token) id1 αλλά θα τοποθετήσει στον πίνακα συµβόλων το λεκτικό p αν δεν είναι ήδη στον πίνακα. Hαπεικόνιση της εντολής: p:=i+r*60 που παράγει ο λεκτικός αναλυτής θα είναι η σειρά των επτά συµβόλων (tokens): id 1 := id 2 + id 3 * 60 H λεκτική ανάλυση λέγεται και γραµµική ανάλυση καθώς και σάρωση. Oλεκτικός αναλυτής αναγνωρίζει τα p, i, r σαν identifiers αναγνωρίζει τους τελεστές ":=", "+" και "*" καθώς και τον αριθµό 60. H έξοδος είναι επίσης γραµµική. Oπίνακας συµβόλων έχει διαµορφωθεί ως εξής: Πίνακας Συµβόλων Symbol Table Όνοµα Τύπος p r i Σχήµα 1.3 H λεκτική ανάλυση βρίσκει λάθη όταν οι χαρακτήρες που διαβάζει δεν σχηµατίζουν tokens της γλώσσας. Συντακτική ανάλυση Aκολουθεί η συντακτική ανάλυση (syntax analysis, λέγεται και parsing). Στη φάση αυτή από τη γραµµική έξοδο του λεκτικού αναλυτή δηµιουργούνται γραµµατικές φράσεις σύµφωνα µε τους κανόνες της γλώσσας. Συνήθως οι γραµµατικές αυτές φράσεις παριστάνoνται µε ένα δένδρο το οποίο λέγεται συντακτικό δένδρο (syntax tree ή parse tree). Στο παράδειγµα µας η έξοδος από τον συντακτικό αναλυτή θα δηµιουργήσει το κατωτέρω parse δένδρο: Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

4 := id1 + id2 * id3 60 Σχήµα 1.4 Υπάρχουν και άλλου τύπου δένδρα που απεικονίζουν και τις γραµµατικές φράσεις (θα εξεταστούν αργότερα). H συντακτική ανάλυση βρίσκει λάθη όπου τα tokens δεν σχηµατίζουν επιτρεπόµενες δοµές σύνταξης της γλώσσας. Σηµασιολογική Ανάλυση Κατά τη σηµασιολογική ανάλυση το πρόγραµµα ελέγχεται για σηµασιολογικά λάθη. H σηµασιολογική ανάλυση χρησιµοποιεί την ιεραρχική δοµή της συντακτικής ανάλυσης για να αναγνωρίσει τους τελεστές και τις µεταβλητές στις εκφράσεις και στις εντολές. Kατα την σηµασιολογική ανάλυση γίνεται και ο έλεγχος των τύπων των µεταβλητών και δεδοµένων (type checking). O µεταγλωττιστής ελέγχει ότι οι µεταβλητές ενός τελεστή είναι τύπου που επιτρέπεται από την γλώσσα (π.χ. µπορεί µια γλώσσα να µην επιτρέπει πρόσθεση real και character µεταβλητής). Eπίσης, η σηµασιολογική ανάλυση φροντίζει για τις απαραίτητες µετατροπές όταν αυτές επιτρέπονται από τη γλώσσα (π.χ. πρόσθεση real και integer). Στο παράδειγµα µας ο σηµασιολογικός αναλυτής θα µας δώσει το κατωτέρω δένδρο: := id1 + id2 * id3 intoreal Σχήµα Aν υποθέσουµε ότι όλες οι µεταβλητές (p,i,r) είναι real τότε έχουµε τον τελεστή * να εφαρµόζεται σε ένα πραγµατικό και ένα ακέραιο. Στην περίπτωση αυτή ο ακέραιος πρέπει να µετατραπεί σε real και αυτό επιτυγχάνεται µε τον τελεστή intoreal. Mετα την συντακτική και σηµασιολογική ανάλυση ο πίνακας συµβόλων διαµορφώνεται Πίνακας Συµβόλων Symbol Table Όνοµα Τύπος p real r real i real Σχήµα 1.6 Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

5 H σηµασιολογική ανάλυση βρίσκει λάθη σε συντακτικά σωστές δοµές που όµως δεν είναι σηµασιολογικά σωστές (π.χ. πρόσθεση ακέραιας και λογικής µεταβλητής). Παραγωγή Ενδιάµεσου Κώδικα Aπό µια σηµασιολογικά σωστή έκφραση θα δηµιουργηθεί ένας ενδιάµεσος κώδικας, που µπορεί να έχει πολλές µορφές. Hενδιάµεση αυτή απεικόνιση µπορεί να θεωρηθεί σαν ένα πρόγραµµα για µια αφηρηµένη µηχανή. Πρέπει να έχει δύο χαρακτηριστικά: να παράγεται εύκολα και να µετατρέπεται εύκολα στη τελική γλώσσα. Mπορεί να είναι της µορφής "τριών διευθύνσεων κώδικα", όπου όλες οι εντολές τρεις operands, το πολύ µια πράξη και µια απόδοση τιµής. π.χ. στο παράδειγµα µας t 1 := intoreal(60) t 2 := id 3 *t 1 t 3 := id 2 +t 3 id 1 := t 3 Bελτιστοποίηση Eνδιάµεσου Kώδικα H φάση της βελτιστοποίησης έχει στόχο τη δηµιουργία κώδικα που θα έχει σαν αποτέλεσµα κώδικα γλώσσας µηχανής που θα τρέχει γρηγορότερα. Eτσι µπορεί να γίνει κατευθείαν η µετατροπή του 60 σε πραγµατικό και να ενοποιηθούν εντολές: t 1 := id 3 * 60.0 id 1 := id 2 +t 1 Παραγωγή Tελικού Kώδικα H τελευταία φάση του µεταγλωττιστή δηµιουργεί κώδικα σε γλώσσα µηχανής η σε Assembly. LDA id 3,R0 MUL 60.0, R0 ADD id 2,R0 STO id 1,R0 Συχνάοιφάσειςχωρίζονταισεfront end και σε back end. Oι πρώτεςέχουνσχέσηµε οτιδήποτε εξαρτάται από τη source γλώσσα και οι δεύτερες κυρίως από την µηχανή. Στην front end περιλαµβάνονται η λεκτική ανάλυση, η συντακτική ανάλυση, η δηµιουργία του symbol table, η σηµασιολογική ανάλυση και ο ενδιάµεσος κώδικάς. H back end περιλαµβάνει τη βελτιστοποίηση του κώδικα και τη δηµιουργία κώδικα µηχανής. ιάφορες φάσεις µιας µετάφρασης γίνονται σε ένα πέρασµα (διάβασµα της εισόδου). Π.χ. η λεκτική ανάλυση, η συντακτική ανάλυση, η σηµασιολογική ανάλυση και ο ενδιάµεσος κώδικας γίνονται στο ίδιο πέρασµα. Στην περίπτωση αυτή η ροή των tokens από τη λεκτική ανάλυση µεταφράζεται άµεσα σε ενδιάµεσο κώδικα. Tότε, ο συντακτικός αναλυτής έχει ενεργοποιηθεί και προσπαθεί να ανακαλύψει την γραµµατική δοµή των tokens που βλέπει. Λαµβάνει tokens όταν τα θέλει καλώντας τον λεκτικό αναλυτή να του δώσει το επόµενο token. Oταν βρει την γραµµατική δοµή καλεί τη ρουτίνα που δηµιουργεί τον ενδιάµεσο κώδικα. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

6 2.Λεκτική Aνάλυση 2.1 Eισαγωγή O σκοπόςτηςλεκτικήςανάλυσηςείναιηαναγνώρισητωνtokens. Eναςαπλόςτρόποςνα γράψει κανείς ένα λεκτικό αναλυτή είναι να φτιάξει ένα διάγραµµα µε τα tokens της γλώσσας και στη συνέχεια να µεταφράσειαυτότοδιάγραµµα σεπρόγραµµα που να βρίσκει τα tokens. Oι τεχνικές που θα αναφέρουµε για την ανάπτυξη λεκτικών αναλυτών µπορούν να εφαρµοσθούν και σε άλλες περιοχές όπως text formatters σε γλώσσες ερωτήσεων πληροφοριακών συστηµάτων (query languages) κλπ. Tο σχήµα 2.1 δίνει διαγραµµατικά την λειτουργικότητα ενός λεκτικού αναλυτή. Eίναι µια ρουτίνα που συνεργάζεται µε τον συντακτικό αναλυτή δίνοντας του tokens. Source Πρόγραµµα Λεκτικός Αναλυτής σύµβολο Φέρε επόµενο σύµβολο Συντακτικός Αναλυτής Πίνακας Συµβόλων Σχήµα 2.1 O λεκτικός αναλυτής παράλληλα εκτελεί και κάποιες δευτερεύουσες εργασίες. Mια από αυτές είναι να παρακάµψει τα σχόλια και τα κενά καθώς και σύµβολα όπως το newline. Mια άλληείναινασυσχετίσειταλάθηµε τοσηµείο του κώδικα που έχουν βρεθεί. Oρολογία Θα χρησιµοποιήσουµε τουςόρουςtoken, λεκτικό(lexeme) και πρότυπο(pattern). O πίνακας 2.2 δίνει µερικά παραδείγµατα. Σύµβολα- tokens Λεκτικά-lexemes Πρότυπα-patterns const const Οι χαρακτήρες const if If, IF, if, if Οι συνδυασµοί χαρακτήρων If,IF,if,iF Relation <,<=,=,>,>=,<> Οι συνδυασµοί χαρακτήρων <,<=, =, >, >=,<> id P, r, I, s5 γράµµα ακολουθούµενο από γράµµαηψηφίο num 3.14, 28, -.1E-3 Αριθµητική σταθερά Πίνακας 2.2 Τα tokens είναι τερµατικά σύµβολα της γραµµατικής. Tα λεκτικά είναι strings που ικανοποιώντας ένα πρότυπο προσδιορίζουν ένα token. Όταν περισσότερα από ένα λεκτικά ικανοποιούν ένα πρότυπο τότε ο λεκτικός αναλυτής πρέπει να δώσει κάποιες επιπλέον πληροφορίες στις επόµενες φάσεις. Oι πληροφορίες αυτές δίδονται µετιςτιµές κάποιων attributes (χαρακτηριστικών) που προσδιορίζουν το αντίστοιχο token. παραδείγµατος χάριν όταν στην PASCAL γράψουµε p:=i*r+2 τα tokens από το λεκτικό αναλυτή θα δοθούν ως εξής Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

7 < id, pointer στο symbol table στηθέσητουp> < τελεστής αντικατάστασης> <id, pointer στο symbol table στηθέσητουi> <τελεστής πολλαπλασιασµού> <id, pointer στο symbol table στηθέσητουr> <τελεστής πρόσθεσης> <num, αριθµητική τιµή 2> Σε µερικά tokens δεν χρειάζεται attribute. Tο num θα µπορούσε να έχει ένα pointer στο symbol table για την τιµή 2. O λεκτικός αναλυτής, λόγω του τρόπου που βλέπει το πρόγραµµα, βρίσκει πολύ λίγα λάθη. Tα λάθη του περιορίζονται όταν ένα πρότυπο δεν συµπίπτει µε κανένα από τα πρότυπα ενός token. Στην περίπτωση αυτή προσπερνάει χαρακτήρες µέχρι να βρει ένα καλά ορισµένο token. 2.2 Προσδιορισµός των tokens Για τον προσδιορισµό των token θα χρησιµοποιήσουµε τις κανονικές εκφράσεις. Eπειδή κάθε πρότυπο ταιριάζει σε ένα σύνολο από strings οι κανονικές εκφράσεις θα χρησιµοποιηθούν σαν ονόµατα για σύνολα από strings. Aλφάβητο (κλάση χαρακτήρων) είναι ένα πεπερασµένο σύνολο από σύµβολα. Π.χ. το σύνολο {0,1} είναι το δυαδικό αλφάβητο. Tο ASCII και το EBCDIC είναι παραδείγµατα αλφάβητων. Eνα string, πάνω σε ένα αλφάβητο, ορίζεται σαν µια πεπερασµένη ακολουθία από σύµβολα απόαυτότοαλφάβητο.mήκος του string (του s το συµβολίζουµε µε s ) ορίζουµε το πλήθος των συµβόλων του string. Π.χ. το string 'πατάτα' έχει µήκος 6. Tο κενό string, το συµβολίζουµε µε ε, είναι ένα ειδικό string µήκους 0. O παρακάτω πίνακας έχει κάποιους όρους που χρησιµοποιούνται στα strings. πρόθεµα(prefix) του s: είναι ένα string προκύπτει από το s όταν πάρουµε 0 η περισσότερα σύµβολα από την κεφαλή του s(π.χ. πατά είναι πρόθεµα του πατάτα) επίθεµα(suffix) του s: είναι το string που προκύπτει από το s όταν κόψουµε 0 η περισσότερα σύµβολα από την αρχή του s(π.χ τάτα είναι suffix του πατάτα) substring του s: είναι ένα string που προκύπτει από το s αν διαγράψουµε ένα πρόθεµα και ένα επίθεµα (το άτα είναι substring του s) κανονικό πρόθεµα, επίθεµα η substring του s: κάθε µη κενό string που είναι πρόθεµα αντίστοιχα επίθεµαηsubstring του s Aν ταx και y είναι strings τότε ο τελεστής concatenation των x και y, συµβολίζεται xy, oρίζεται το string που προκύπτει όταν το y προστεθεί στο τέλος του x. Π.χ. αν x= επί και y= βλεψη τότε xy= επίβλεψη. Αν θεωρήσουµε την concatenation σαν γινόµενο τότε µπορούµε να ορίσουµε ύψωση σε δύναµησαν: s 0 = ε i>0 s i =s i-1 s και επειδή εs=s είναι s 1 =s. Πράξεις σε γλώσσες Yπάρχουν ορισµένες πράξεις που γίνονται σε γλώσσες και που είναι χρήσιµες στη λεκτική ανάλυση. Παρακάτω ορίζονται ορισµένες πράξεις σε γλώσσες. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

8 Eνωση(union) των γλωσσών L και M(L M) : {s s L η s Μ Συνένωση(Concatenation) των L και M (LM): {st s L και t Μ Eγκλισµος (closure) της L(L * ): L * =L i το L * είναι 0 η περισσότερες συνενώσεις του L i=0 Θετικός εγκλεισµός(positive closure) της L, το L + µια η περισσότερες συνενώσεις του L (L + ): L + = L i i=1 Παράδειγµα: Έστω L={A,B,..,Z,a,b,...,z} και D={0,1,..,9}. Tα L και D µπορούµε να τα δούµε σαν αλφάβητα, το L τα κεφαλαία και τα µικρά λατινικά γράµµατα και το D τα ψηφία, αλλά και σαν γλώσσες µε strings µήκους 1. Mε τις παραπάνω πράξεις µπορούµε να ορίσουµε τιςπιοκάτωγλώσσεςαπότιςl και D. 1)L D το σύνολο των γραµµάτων και των ψηφίων 2)LD το σύνολο των strings που αποτελούνται από γράµµα ακολουθούµενο από ψηφίο. 3)L(L D) * είναιτοσύνολοτωνstrings που αποτελούνται από γράµµατα και ψηφία και αρχίζουν µε γράµµα. Kανονικές εκφράσεις Για την περιγραφή των tokens θα χρησιµοποιήσουµε ένασυµβολισµό που είναι γνωστός σαν κανονικές εκφράσεις (regural expressions). Mια κανονική έκφραση κατασκευάζεται από άλλες απλούστερες κανονικές εκφράσεις σύµφωνα µε ένα σύνολο από κανόνες. Kάθε κανονική έκφραση r ορίζει µια γλώσσα L(r). Oι κανόνες προσδιορίζουν πως σχηµατίζονται τα στοιχεία της L(r). Eστω ένα αλφάβητο Σ. Oι παρακάτω κανόνες ορίζουν κανονικές εκφράσεις υπεράνω του Σ. 1) Tο ε είναι κανονική έκφραση που παριστάνει το {ε}. 2) Aνα Σ τότε το α είναι κανονική έκφραση που παριστάνει το {α} δηλ. το string α. 3) Eστω r και s είναι κανονικές εκφράσεις που ορίζουν τις γλώσσες L(r) και L(s). Tοτε: α)tο (r) (s) είναι κανονική έκφραση που ορίζει την L(r) L(s) (ο τελεστής σηµαίνει διαζευκτικό ή) β)tο (r)(s) είναι κανονική έκφραση που ορίζει την L(r)L(s) γ)tο (r) * είναι κανονική έκφραση που ορίζει την (L(r)) * δ)tο (r) είναι κανονική έκφραση που ορίζει την L(r) (δηλ. µπορούµεναχρησιµοποιούµε επιπλέον παρενθέσεις στις κανονικές εκφράσεις) 4) Τίποτα άλλο δεν είναι κανονική έκφραση Mια γλώσσα που καθορίζεται από µια κανονική έκφραση λέγεται κανονικό σύνολο. Mπορούµε να αποφύγουµε την χρήση πολλών παρενθέσεων στις κανονικές εκφράσεις αν κάνουµε τις παρακάτω παραδοχές: 1) O τελεστής * έχει την µεγαλύτερη προτεραιότητα και είναι αριστερά προσεταιριστικός. 2) H συνένωση έχει την επόµενη προτεραιότητα και είναι αριστερά προσεταιριστική 3) O έχει την χαµηλότερη προτεραιότητα και είναι αριστερά προσεταιριστικός Με τις παραδοχές αυτές η (a) ((b) * (c)) είναι ισοδύναµη µε τηνa b * c. Παράδειγµα:Eστω το Σ={a,b} α)h η κανονική έκφραση a b ορίζει το σύνολο {a,b} β)h κανονική έκφραση (a b)(a b) ορίζει το σύνολο {aa,ab,ba,bb} γ)h κανονική έκφραση a a * b ορίζει το σύνολο των strings που έχουν στην αρχή ένα η περισσότερα a και τελειώνουν µε έναb. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

9 ύο κανονικές εκφράσεις που ορίζουν την ίδια γλώσσα λέγονται ισοδύναµες. Για τις κανονικές εκφράσεις ισχύουν οι κατωτέρω αλγεβρικές ιδιότητες (τα r,t και s είναι κανονικές εκφράσεις): r s = s r η είναι µεταθετική r (s t) = (r s) t η είναι προσεταιριστική (rs)t = r(st) η συνένωση είναι προσεταιριστική r(s t) = rs rt και (s t)r = sr tr η συνένωση είναι επιµεριστική πάνω στην εr=rε =r r * = (r ε) * r ** =r * Kανονικοί Oρισµοι Για ευκολία στους συµβολισµούς θα δίνουµε ονόµατα στις κανονικές εκφράσεις και θα χρησιµοποιούµεταονόµατααυτάσανσύµβολα. Eστω Σ ένα αλφάβητο από σύµβολα. Eνας κανονικός ορισµός είναι µια ακολουθία από ορισµούς της µορφής: d 1 r 1 d 2 r d n r n όπου κάθε d i είναι ένα διακριτό όνοµα και κάθε r i είναι µια κανονική έκφραση πάνω στα σύµβολα Σ {d1,d2,...,di-1} δηλ. το αλφάβητο και τα ονόµατα που ορίστηκαν προηγούµενα. Παραδείγµατα α)στην PASCAL οι µεταβλητές ορίζονται σαν το σύνολο των strings που αποτελούνται από γράµµατα και ψηφία και το πρώτο είναι γράµµα. Tο κατωτέρω είναι ένας κανονικός ορισµός για τις µεταβλητές: letter A B... Z a b... z digit id letter(letter digit) * β)oι αριθµοί χωρίς πρόσηµοστηνpascal είναι strings της µορφής 3456,3.14, 6.54E-2. O κατωτέρω κανονικός ορισµός αποτελεί ένα ακριβή προσδιορισµό αυτώντωνstrings. digit digits digit digit * fraction.digits ε exponent (E(+ - ε) digits) ε num digits fraction exponent Eπειδη ορισµένες δοµές συµβόλων εµφανίζονται συχνά στις κανονικές εκφράσεις χρησιµοποιούµε, για ευκολία, σύµβολα για αυτές. Tετοια σύµβολα είναι: 1) Για επανάληψη χρησιµοποιούµε το + που σηµαίνει µια η περισσότερες φορές. Aν r είναι µια κανονική έκφραση που ορίζει την L(r) τότε η (r) + ορίζει την (L(r)) +.Oτελεστής + σχετίζεται µε τον τελεστή * µε τις ακόλουθες αλγεβρικές ταυτότητες: r * =r + ε και r + =rr * 2) Mια η καµία εµφάνιση. Xρησιµοποιούµε τον τελεστή?. O συµβολισµός r? σηµαίνει r ε. Aν r είναι κανονική έκφραση τότε r? είναι µια κανονική έκφραση που ορίζει την L(r) {ε}. Mε τιςσυντοµογραφίες αυτές το τελευταίο παράδειγµα γράφεται και ως εξής: Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

10 digit digits digit + fraction.digits)? exponent (E(+ -)? digits)? num digits fraction exponent 3) Tελος πολλές φορές για διάστηµα χαρακτήρων η ψηφίων χρησιµοποιείται ένας σύντοµος συµβολισµός όπως [a-z] αντί για a b... z. Eδω πρέπει να τονίσουµε ότι µερικές γλώσσες δεν µπορούν να περιγραφούν µε κανονικές εκφράσεις. Π.χ. το σύνολο των strings µε ίδιες δεξιές και αριστερές παρενθέσεις δεν µπορεί να περιγραφεί µε κανονικές εκφράσεις. 2.3 Aναγνώριση των tokens Eίδαµε µέχρι τώρα πως µπορούµε να προσδιορίσουµε τα tokens χρησιµοποιώντας κανονικούς ορισµούς. Πρέπει όµως να δούµε και πως αναγνωρίζονται τα tokens. Θα χρησιµοποιήσουµετηγραµµατική: stmt if expr then stmt if expr then stmt else stmt ε expr term relop term term term id num όπου τα τερµατικά if, then, else, relop, id και num δηµιουργούν σύνολα από strings που δίδονται από τους κατωτέρω κανονικούς ορισµούς: if if then then else else relop < <= = <> > >= id letter (letter digit) * num digit + (.digit + )?(E(+ -)?digit + )? όπου τα letter και digit είναι όπως ορίσθηκαν στο παράδειγµα στη 2.2. Για τη γλώσσα αυτή ο λεκτικός αναλυτής θα αναγνωρίσει τις λέξεις κλειδιά if,then, else, καθώς και τα λεκτικά που καθορίζονται από τα relop, id και num. Για απλούστευση θα υποθέσουµε ότι οι λέξεις κλειδιά είναι δεσµευµένες. Eπι πλέον υποθέτουµε ότι το κενό είναι σηµείο στίξης που καθορίζει τον χωρισµό των λεκτικών και αποτελείται από κενά, tabs και newlines. O λεκτικός αναλυτής διώχνει τα κενά αναγνωρίζοντας τα µε την κάτωθι κανονική έκφραση. delim blank tab newline ws delim + Oταν ο λεκτικός αναλυτής βρει ένα ws δεν γυρίζει token στο συντακτικό αναλυτή αλλά προχωρεί στην ανεύρεση του επόµενου token. O λεκτικός αναλυτής θα αποµονώσει τα λεκτικά και θα παράγει τα tokens και τις τιµές των attributes όπως δείχνει ο πιο κάτω πίνακας (για το τελευταίο παράδειγµα): Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

11 Kανονική Eκφραση Token Tιµη Attribute ws - - if if - then then - else else - id id δείκτης στο symbol table num num δείκτης στο symbol table < relop LT <= relop LE = relop EQ <> relop NE > relop GT >= relop GE Σαν ενδιάµεσο βήµα στη δηµιουργία του λεκτικού αναλυτή χρησιµοποιούµε µια µορφή διαγραµµάτων ροής τα διαγράµµατα µεταβάσεων (transition diagrams). Tα διαγράµµατα αυτά περιγράφουν την λειτουργία του λεκτικού αναλυτή όταν του ζητηθεί το επόµενο token από τον συντακτικό αναλυτή. Tο διάγραµµα µεταβάσεων είναι ένας γράφος όπου οι κόµβοι (παριστάνονται µε κύκλους) ονοµάζονται καταστάσεις. Oι καταστάσεις συνδέονται µε βέλη που λέγονται πλευρές. Aπο µια κατάσταση s φεύγουν βέλη µε ετικέτες(labels) που αντιστοιχούν στο χαρακτήρα που πρέπει να υπάρχει στην είσοδο για να ακολουθηθεί το αντίστοιχα βέλος που θα οδηγήσει στην επόµενη κατάσταση. Mια κατάσταση ορίζεται σαν αρχική (αρχή). Συµβολίζουµε τις τελικές καταστάσεις (εύρεση token) µε διπλό κύκλο. Tο σχήµα 2.2 είναι ένα διάγραµµα µεταβάσεων για το >=. αρχή > 0 6 = 7 άλλο 8 Σχήµα 2.2 * Tο αστεράκι στην τελική κατάσταση 8 ότι έχει αναγνωρίσει τον τελεστή > αλλάγιανατο βρει έχει διαβάσει ένα παρακάτω από την είσοδο σε αντίθεση µε την τερµατική κατάσταση 7. Tο σχήµα 2.3 είναι ένα διάγραµµα µεταβάσεων για το token relop. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

12 αρχή < = return (relop,le) = > άλλο > 3 4 * return return (relop,ne) (relop,lt) 5 return (relop,eq) 6 = 7 return (relop,ge) άλλο 8 * return (relop,gt) Σχήµα 2.3 Οι λέξεις κλειδιά µπορούν να θεωρηθούν εξαιρέσεις του κανόνα ότι ένα string από γράµµατα και ψηφία είναι id. Aντι να υπάρχουν εξαιρέσεις θεωρούµε τις λέξεις κλειδιά σαν µεταβλητές και στον πίνακα βρίσκεται η αντίστοιχη πληροφορία. Eποµένως ένα σηµαντικό σηµείο όσο αφορά την απόδοση είναι η οργάνωση του πίνακα ώστε να βρίσκονται γρήγορα οι πληροφορίες για τις λέξεις κλειδιά (ειδικά για τις πιο συχνά χρησιµοποιούµενες). Tο σχήµα 2.4 είναι ένα διάγραµµα µεταβάσεων για την αναγνώριση µεταβλητών και λέξεων κλειδιά. αρχή 9 letter 10 άλλο 11 return (gettoken(),install_id()) letter ή digit Σχήµα 2.4 H συνάρτηση gettoken επιστρέφει το αντίστοιχο token η δε install_id την τιµή της attribute. H δεύτερη επιστρέφει ένα δείκτη στο symbol table. Oρισµένα προβλήµατα προκύπτουν στην κατασκευή ενός λεκτικού αναλυτή για την αναγνώριση ενός αριθµού χωρίς πρόσηµο όπως ορίζεται από την κανονική έκφραση: num digit + (.digit + )?(E(+ -)?digit + )? Πρέπει να εξετασθεί το λεκτικό µε τοµεγαλύτερο µήκος που να ταιριάζει. Π.χ. δεν µπορεί να σταµατήσει ο λεκτικός αναλυτής µόλις αναγνωρίσει το 45 αν η είσοδος είναι 45.67E6. Eτσι χρησιµοποιούµε τρία διαγράµµατα µεταβάσεων, ένα για τους ακέραιους, ένα για τους πραγµατικούς και ένα για τους πραγµατικούς σε εκθετική µορφή όπως δείχνει το σχήµα 2.5. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

13 digit digit digit αρχή 12 digit digit 15 E 16 +Ë - 17 digit 18 άλλο 19 * E digit digit digit αρχή 20 digit digit 23 άλλο 24 * αρχή digit digit άλλο 27 * Σχήµα 2.5 O λεκτικός αναλυτής πρέπει να δοκιµάσει τα διαγράµµατα αυτά στη σειρά 12, 20, 25. Tέλος το διάγραµµα 2.6 αντιστοιχεί στην αναγνώριση των κενών. αρχή 28 delim 29 delim άλλο 30 * Σχήµα 2.6 Mια ακολουθία τέτοιων διαγραµµάτων µπορεί να µετατραπεί σε πρόγραµµα για αναζήτηση των tokens. Σε κάθε κατάσταση αντιστοιχεί ένας κώδικας και οι καταστάσεις εξετάζονται µε τη σειρά αρίθµησης. Aν υπάρχουν βέλη που ξεκινούν από µια κατάσταση τότε ο κώδικας διαβάζει τον επόµενο χαρακτήρα και αν αυτός ανήκει σε κάποιο από τα σύνολα που προσδιορίζονται από τα βέλη που ξεκινούν από αυτή την κατάσταση τότε το πρόγραµµα µεταφέρει control στον κώδικα που αντιστοιχεί στην κατάσταση αυτή. ιαφορετικά αν το βέλος οδηγεί σε τερµατική κατάσταση τότε έχει βρεθεί ένα token. επιλέγει το βέλος που θα ακολουθήσει. Aν δεν συµβαίνει τίποτε από αυτά έχουµε αποτύχει στην αναζήτηση συγκεκριµένου token και χρειάζεται backtrack σε προηγούµενη κατάσταση Lex µια γεννήτρια λεκτικών αναλυτών OLexείναι ένα πρόγραµµα το οποίο διαβάζει ένα αρχείο στο οποίο έχει προσδιορισθεί ένας λεκτικός αναλυτής και δηµιουργεί ένα λεκτικό αναλυτή. Για την ώρα αυτός ο λεκτικός αναλυτής είναι σε γλώσσα C. O Lex συνεργάζεται µε τονyacc (ένα πρόγραµµα που όπως θα δούµε πιο κάτω δηµιουργεί parsers) όπως δείχνει το σχήµα 2.7. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

14 Lex προσδιορισµός Yacc προσδιορισµός Lex Yacc Πρόγραµµα Λεκτικός Αναλυτής Συντακτικός Αναλυτής Λεκτικά λάθη Σχήµα 2.7 Συντακτικά λάθη Eνα πρόγραµµα Lex αποτελείται από τα εξής µέρη: ορισµοί %% Lex κανονικές εκφράσεις και αντίστοιχες ενέργειες %% Συναρτήσεις που ορίζει ο χρήστης Oι ενέργειες και οι συναρτήσεις που ορίζει ο χρήστης Πρέπει (για το σύστηµα που θα χρησιµοποιήσετε) να γραφούν σε C. Oι κανονικές εκφράσεις ορίζονται µε ένα τρόπο που µοιάζει αρκετά µε τον τρόπο που αναπτύχθηκαν στο κεφάλαιο αυτό. Eδω θα δώσουµε ένα Παράδειγµα και στις ασκήσεις θα αναπτυχθεί λεπτοµερειακά ο Lex. Eστω οι εξής κανόνες: expr integer * integer integer + integer integer - integer integer / integer Tο παράδειγµα αυτό λεει ότι µια έκφραση είναι το άθροισµα το γινόµενο η διαφορά η διαίρεση δύο ακεραίων. TοαρχείοτουLex θα είναι: %% [0-9]+ {return(int); } [-*+/] {return(opr);} [\t] ;. {printf("lex error\n"); exit(-1); } %% yywrap() { return(1) } Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

15 2.5 Aσκησεις 1 Πόσα είναι τα: α)προθέµατα β)επιθέµατα γ)sustrings Σε ένα string µήκους n. 2 Περιγράψτε τις γλώσσες που προσδιορίζουν οι κατωτέρω κανονικές εκφράσεις: α)0(0 1)*0 β)((ε 0)1*)* γ) (0 1)*0(0 1)(0 1) 3 Γράψτε ένα Lex πρόγραµµα το οποίο να διαβάζει ένα πρόγραµµα Pascal και να αντικαθιστά κάθε δήλωση integer µε real. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

16 3.Συντακτική Aνάλυση 3.1 Eισαγωγή Kάθε γλώσσα προγραµµατισµού έχει κανόνες που περιγράφουν µε ακρίβεια την συντακτική δοµή των προγραµµάτων. H σύνταξη αυτή µπορεί να περιγραφεί µε γραµµατικές µη εξαρτώµενες από τα συµφραζόµενα (context free grammar) η σε BNF (Backus-Naur-Form) µορφή. Oι γραµµατικές προσφέρουν µεγάλα πλεονεκτήµατα τόσο στο σχεδιασµό γλωσσών όσο και στη κατασκευή αντίστοιχων µεταγλωττιστών. Mια γραµµατική δίνει τη δυνατότητα να περιγραφεί η σύνταξη µιας γλώσσας µε ακρίβεια. Aπο µερικές γραµµατικές µπορούµε να κατασκευάσουµε αυτόµατα αποτελεσµατικούς συντακτικούς αναλυτές. Στη δοµή ενός µεταγλωττιστή που περιγράψαµε στο κεφάλαιο 1 ο συντακτικός αναλυτής λαµβάνει tokens από το λεκτικό αναλυτή και αποφαίνεται αν το string που εξετάζεται µπορεί να παραχθεί από τη γραµµατική της γλώσσας η να βρει συντακτικά λάθη (π.χ. αριθµητική έκφραση µε µη ισοζυγισµένες παρενθέσεις). Στο σχήµα 3.1 φαίνεται η λειτουργία του συντακτικού αναλυτή. Πρακτικά κατά την διάρκεια της συντακτικής ανάλυσης µπορεί να γίνεται και κάποιος έλεγχος τύπου µεταβλητών (type checking) καθώς και άλλες εργασίες σηµασιολογικής ανάλυσης και τέλος δηµιουργία ενδιάµεσου κώδικα. Source πρόγραµµα Λεκτικός Αναλυτής σύµβολο Φέρε επόµενο σύµβολο Συντακτικός Αναλυτής Συντακτικό δένδρο (parse tree) Επόµενα στάδια Πίνακας Συµβόλων Σχήµα 3.1 Oι πιο πολύ χρησιµοποιούµενες µέθοδοι στους µεταγλωττιστήs χαρακτηρίζονται σαν από top-down (απότογενικόστοειδικό) ησανbottom-up (απότοειδικόστογενικό). Oι topdown χτίζουν συντακτικά δένδρα ξεκινώντας από πάνω(ρίζα) ενώ οι bottom-up αρχίζουν από τα φύλλα και προχωρούν προς τη ρίζα. Oι αποτελεσµατικές top-down και bottom-up µέθοδοι λειτουργούν µόνο σε µερικές κλάσεις γραµµατικών. Oµως µερικές από αυτές τις γραµµατικές, όπως οι LL και η LR, είναι αρκετές για την περιγραφή των συντακτικών δοµών των περισσοτέρων γλωσσών. 3.2 Context free grammars (γραµµατικές µη εξαρτώµενες από τα συµφραζόµενα) Μια context free grammar (θα τη λέµε γραµµατική στα επόµενα) αποτελείται από τερµατικά σύµβολα, µητερµατικά σύµβολα, ένα αρχικό σύµβολο και παραγωγές. α) Tα τερµατικά είναι τα βασικά σύµβολα από τα οποία σχηµατίζονται τα strings. Συνώνυµο του τερµατικού συµβόλου είναι το token. β)mητερµατικά είναι συντακτικές µεταβλητές που παριστάνουν σύνολα από strings. γ) Eνα µη τερµατικό σύµβολο καθορίζεται σαν αρχικό και το σύνολο των strings που ορίζει είναι η γλώσσα που προσδιορίζεται από τη γραµµατική αυτή. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

17 δ) Eνα σύνολο από παραγωγές όπου κάθε παραγωγή αποτελείται από ένα µη τερµατικό που λέγεται αριστερό µέρος της παραγωγής, ένα βέλος και µια ακολουθία από τερµατικά και µη τερµατικά που λέγεται το δεξιό µέρος της παραγωγής. Oι παραγωγές µίας γραµµατικής καθορίζουν τον τρόπο µε τον οποίο τα τερµατικά και µη τερµατικά µπορούν να συνδυασθούν για τον σχηµατισµό τωνstrings. Παράδειγµα: Hκατωτέρω γραµµατική ορίζει απλές αριθµητικές εκφράσεις: expr expr op expr expr ( expr ) expr -expr expr id op + op - op * op / op Στη γραµµατική αυτή τα σύµβολα id, +,-,*,/,, ( και ) είναι τερµατικά. Tα σύµβολα expr, και op είναι µη τερµατικά από τα οποία το expr είναι το αρχικό σύµβολο. Για ευκολία θα συµφωνήσουµεναχρησιµοποιούµε τονεξήςσυµβολισµό: 1) Eίναι τερµατικά τα κατωτέρω σύµβολα: α)tα πρώτα γράµµατα µικρά του λατινικού αλφάβητου (a,b,c...) β)oι τελεστές +,-,... γ) Σηµεία στίξης (κόµµα, παρένθεση κλπ) δ)tαψηφία(0,1,...9) ε) Strings µεέντοναγράµµατα (id, if, when) 2) Eίναι µητερµατικά: α)kεφαλαία λατινικά της αρχής του αλφάβητου (A,B,C) β)tογράµµα S που συνήθως είναι το αρχικό σύµβολο. γ)mικρα γράµµατα µε πλάγια γραφή (expr) 3) Kεφαλαία γράµµατα στο τέλος του λατινικού αλφάβητου (X,Y,Z) παριστάνουν σύµβολα της γραµµατικής δηλ. τερµατικά και µητερµατικά σύµβολα. 4) Tα µικρά γράµµατα προς το τέλος του λατινικού αλφάβητου (u,v,...,z) παριστάνουν strings από τερµατικά. 5)Mικρα ελληνικά γράµµατα strings από σύµβολα της γραµµατικής (π.χ. µια παραγωγή γενικά µπορεί να γραφεί A α και σηµαίνει ότι υπάρχει ένα µη τερµατικό A στο αριστερό µέλος µιας παραγωγής και ένα string από σύµβολα της γραµµατικής στο δεξιό. 6)Oταν έχουµε παραγωγές A α 1,A α 2...A α k, µε τοa στο αριστερό µέρος τότε γράφεται και A α 1 α 2... α k, 7)Tο αριστερό µέρος της πρώτης παραγωγής είναι το αρχικό σύµβολο. Mε τις παραδοχές αυτές το παραπάνω παράδειγµα γράφεται και: Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

18 E EAE (E) -E id A + - * / Mια παραγωγή θεωρείται σαν ένας κανόνας αναγραφής όπου το µη τερµατικό του αριστερού µέρους αντικαθίσταται από το string του δεξιού µέρους µιας παραγωγής. Aυτός ο τρόπος παραγωγής ταιριάζει στην top-down παραγωγή ενός συντακτικού δένδρου. Έστω η γραµµατική για αριθµητικές εκφράσεις µε ένα µη τερµατικό E που παριστάνει τις εκφράσεις: E E+E E*E (E) -E id (3.1) H παραγωγή E -E δηλώνει ότι µια έκφραση όταν έχει το σύµβολο - µπροστά εξακολουθεί να είναι έκφραση. Αυτό το γράφουµε E -E και λέµε ότι το E παράγει το -E. Γενικά λέµε αaβ αγβ αν A γείναιµια παραγωγή και τα α και β είναι strings της γραµµατικής. Aν α 1 α 2... α k λέµε ότι το α 1 παράγει το α κ.tοσύµβολο σηµαίνει παράγει σε ένα βήµα ενώ το * παράγει σε 0 η περισσότερα βήµατα και το + παράγει σε ένα η περισσότερα βήµατα. Eστω G µια γραµµατική µε ένα αρχικό σύµβολο S, µε το σύµβολο + µπορούµε να ορίσουµε την γλώσσα L(G) που δηµιουργείται από την G. Λέµε ότι ένα string τερµατικών w ανήκει στο L(G) τότε και µόνον τότε αν S + w. Tο w είναι µια πρόταση της G. Oταν S * α όπου το α περιέχει µη τερµατικά λέµε ότι το α είναι µια προτασιακή µορφή (sentential form) της G ενώαντοαδενέχειµη τερµατικά λέγεται πρόταση της G. To string -(id+id) είναι µια πρόταση της γραµµατικής (3.1) γιατί υπάρχει η παραγωγή: E -E -(E) -(E+E) -(id+e) -(id+id). ηλαδή E * (id+id). Eνα συντακτικό δέντρο µπορεί να θεωρηθεί µια γραφική παράσταση για µια παραγωγή. Tο σχήµα 3.2 δείχνει το συντακτικό δέντρο της ανωτέρω παραγωγής. Kαθε εσωτερικός κόµβος του δένδρου έχει ένα µη τερµατικό A και ότι τα παιδιά του κόµβου έχουν από αριστερά προς ταδεξιάτασύµβολα του δεξιού µέλους της παραγωγής µε την οποία αντικαταστάθηκε το A. Για να δούµε την σχέση µεταξύ συντακτικού δένδρου και παραγωγών ας θεωρήσουµε την παραγωγή: α 1 α 2... α k, όπου το α 1 είναι ένα µη τερµατικό A. Σε κάθε προτασιακή µορφή α i στην παραγωγή κατασκευάζουµε ένα συντακτικό δένδρο µε απόδοσητοα i.h διαδικασία εξακολουθεί επαγωγικά. Aρχικά το δέντρο έχει ένα κόµβο α 1 =A.Aςυποθέσουµε ότι κατασκευάσαµε τοδέντροµε απόδοσηα i-1 =X 1 X 2...X k (κάθε X i είναι τερµατικό η µη τερµατικό). Aς υποθέσουµε ότι το α i παράγεται από το α i-1 αν αντικατασταθεί το µη τερµατικό X j µεβ=y 1 Y 2...Y r. ηλαδή στο i βήµα η παραγωγή X j βεφαρµόζεται στο α i-1 για να δώσει α i =X 1 X 2...X j-1 β X j+1...x k. Tο j φύλλο µε µη τερµατικό σύµβολο X j τo επιλέγουµε από αριστερά. Εδώ θα µπορούσαµε να διαλέξουµε για αντικατάσταση οποιοδήποτε µη τερµατικό. Θα θεωρήσουµε αντικαταστάσεις όπου αντικαθίσταται το πιο αριστερό (leftmost derivations). Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

19 E - E ( E ) E + E id id Σχήµα 3.2 Aς εξετάσουµε τώρα το εξής παράδειγµα για τη γραµµατική (3.1). Eστω η πρόταση id+id*id. Για αυτό υπάρχουν δύο πιο αριστερές παραγωγές: E E+E id+e id+e*e id+id*e id+id*id όµως είναι σωστή και η: E E*E E+E*E id+e*e id+id*e id+id*id Tο σχήµα 3.3 δείχνει τα αντίστοιχα δένδρα E E + E (α) E E * E (β) id E * E E + E id id id id id Σχήµα 3.3 Το πρώτο δένδρο αντιστοιχεί στη παραδεκτή στις περισσότερες γλώσσες προτεραιότητα των τελεστών * και +. ηλαδή ο πολλαπλασιασµός έχει προτεραιότητα ως προς την πρόσθεση. Mια γραµµατική που παράγει περισσότερα από ένα συντακτικά δένδρα για µια πρόταση λέγεται ασαφής γραµµατική (ambiguous). Mια ασαφής γραµµατική παράγει περισσότερες από µια πιο αριστερές παραγωγές για µια πρόταση. 3.3 Σχεδιασµός γραµµατικής για µια γλώσσα Oι γραµµατικές είναι κατάλληλες για την περιγραφή των περισσοτέρων συντακτικών δοµών των γλωσσών. Ορισµένοι περιορισµοί, όπως ότι οι µεταβλητές πρέπει να ορισθούν πριν χρησιµοποιηθούν δεν µπορούν να ορισθούν µε γραµµατικές. Στη λεκτική ανάλυση χρησιµοποιήσαµε κανονικές εκφράσεις θα µπορούσαµε να χρησιµοποιήσουµε γραµµατικές αφού κάθε δοµή που µπορεί να περιγραφεί µε µια κανονική Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

20 έκφραση µπορεί να περιγραφεί και από µια γραµµατική. Oι λόγοι που χρησιµοποιήσαµε κανονικές εκφράσεις είναι: α) Oι λεκτικοί κανόνες είναι απλοί που δεν χρειάζεται, τις περισσότερες φορές, να καταφύγουµε σεγραµµατικές. β) Πιο αποτελεσµατικοί λεκτικοί αναλυτές µπορούν να δηµιουργηθούν αυτόµατα από κανονικές εκφράσεις παρά από γραµµατικές γ) Οι κανονικές εκφράσεις αποτελούν εµπεριστατωµένο και εύκολο τρόπο παράστασης των tokens από τις γραµµατικές. Oταν γράφουµε µια γραµµατική (G) για µια γλώσσα (L) είναι σηµαντικό να δείξουµε ότι η γραµµατική δηµιουργεί την συγκεκριµένη γλώσσα. Mια τέτοια απόδειξη έχει δύο στάδια. Πρέπει να δείξουµε ότι κάθε string που δηµιουργείται από την G είναι string της L και ότι κάθε string της L µπορεί να δηµιουργηθεί από την G. Παράδειγµα: Eστω η γραµµατική: S (S)S ε H γραµµατική αυτή παράγει όλα τα strings µε ισοζυγισµένες δεξιές και αριστερές παρενθέσεις. Θα το αποδείξουµε µε επαγωγή. Θα δείξουµε πρώτα ότι κάθε string που παράγεται από το S έχει ισοζυγισµένες παρενθέσεις. Σα βασικό βήµα παρατηρούµε ότι το string που παράγεται σε ένα βήµα είναι το κενό που είναι ισοζυγισµένο. Aς υποθέσουµε ότι κάθε string που παράγεται σε λιγότερα από n βήµατα έχει ισοζυγισµένες παρενθέσεις και ας θεωρήσουµε µια πιο αριστερή παραγωγή µε ακριβώς n βήµατα. Mια τέτοια παραγωγή είναι της µορφής: S (S)S * (x)s * (x)y Oι παραγωγές για τα x και y θέλουν λιγότερα από n βήµατα και άρα έχουν ισοζυγισµένες παρενθέσεις.eποµένως το (x)y έχει ισοζυγισµένες παρενθέσεις. Aντίστροφα αρχίζουµε µε βασικό βήµα ότι το κενό string παράγεται από την G. Yποθέτουµε ότι κάθε ισοζυγισµένο string µήκους λιγότερο από 2n παράγεται από το S και έστω ένα string w µε ισοζυγισµένες παρενθέσεις µήκους 2n, n>=1. Tο w αρχίζει µε αριστερή παρένθεση. Eστω (x) το ελαχίστου µήκους πρόθεµα του w µε ίσο αριθµό αριστερών και δεξιών παρενθέσεων. Tότε w= (x)y όπου τα x και y έχουν ισοζυγισµένες παρενθέσεις. Eφόσον τα x και y έχουν µήκος λιγότερο από 2n παράγονται από το S λόγω της υπόθεσης. ηλ. το w παράγεται από το S. Mερικές φορές η γραµµατική µπορεί να έχει ασάφειες. Στην περίπτωση αυτή µπορούµε να την γράψουµε ξανά απαλείφοντας τις ασάφειες. Eστω η γραµµατική: stmt if expr then stmt if expr then stmt else stmt (3.2) other όπου other σηµαίνει οποιαδήποτε άλλη εντολή. H γραµµατική αυτή είναι ασαφής γιατί για την εντολή if E 1 then if E 2 then S 1 else S 2 δηµιουργεί δύο συντακτικά δένδρα όπως δείχνει το σχήµα 3.4. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

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

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

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

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 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. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD) Η Γλώσσα Pascal Χαρακτηριστικά Τύποι Δεδοµένων Δοµή προγράµµατος 1. Βασικές έννοιες Χαρακτηριστικά της γλώσσας Pascal Γλώσσα προγραµµατισµού Συντακτικό Σηµασιολογία Αλφάβητο της γλώσσας Pascal (Σύνολο

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 5ο: Εντολές Επανάληψης

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

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

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 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

KΕΦΑΛΑΙΟ 4 AΚΟΛΟΥΘΙΕΣ ΠΡΑΓΜΑΤΙΚΩΝ ΑΡΙΘΜΩΝ 4. Ορισµοί KΕΦΑΛΑΙΟ 4 AΚΟΛΟΥΘΙΕΣ ΠΡΑΓΜΑΤΙΚΩΝ ΑΡΙΘΜΩΝ Ορισµός 4.. Μία συνάρτηση : µε πεδίο ορισµού το σύνολο των φυσικών αριθµών και τιµές στην πραγµατική ευθεία καλείται ακολουθία πραγµατικών αριθµών.

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου

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

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

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

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

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

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

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

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

Μεταγλωττιστές. μια φοιτητική προσέγγιση Μεταγλωττιστές μια φοιτητική προσέγγιση i. Περιεχόμενα i. Περιεχόμενα ii.πηγές 1. Εισαγωγή στη Μεταγλώττιση 1.1 Η διαδικασία της μεταγλώττισης Μεταγλωττιστής: Ανάλυση Σύνθεση 1.2 Οι φάσεις της μεταγλώττισης

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 4 ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΥΝΤΑΚΤΙΚΗΣ ΑΝΑΛΥΣΗΣ 1 ΚΕΦΑΛΑΙΟ 4 ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΥΝΤΑΚΤΙΚΗΣ ΑΝΑΛΥΣΗΣ Στόχος Στόχος του Κεφαλαίου αυτού είναι να µάθουµε τις βασικότερες από τις τεχνικές και τις µεθοδολογίες συντακτικής ανάλυσης των κατηγοριών bottom up

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

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

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

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

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

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

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

Κεφάλαιο 3β. Ελεύθερα Πρότυπα (µέρος β)

Κεφάλαιο 3β. Ελεύθερα Πρότυπα (µέρος β) Κεφάλαιο 3β Ελεύθερα Πρότυπα (µέρος β) Ο σκοπός µας εδώ είναι να αποδείξουµε το εξής σηµαντικό αποτέλεσµα. 3.3.6 Θεώρηµα Έστω R µια περιοχή κυρίων ιδεωδών, F ένα ελεύθερο R-πρότυπο τάξης s < και N F. Τότε

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

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

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

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

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

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

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

1 Συνοπτική ϑεωρία. 1.1 Νόµοι του Προτασιακού Λογισµού. p p p. p p. ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Τµήµα Επιστήµης Υπολογιστών

1 Συνοπτική ϑεωρία. 1.1 Νόµοι του Προτασιακού Λογισµού. p p p. p p. ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Τµήµα Επιστήµης Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Τµήµα Επιστήµης Υπολογιστών HY-180: Λογική Εαρινό Εξάµηνο 2016 Κ. Βάρσος Πρώτο Φροντιστήριο 1 Συνοπτική ϑεωρία 1.1 Νόµοι του Προτασιακού Λογισµού 1. Νόµος ταυτότητας : 2. Νόµοι αυτοπάθειας

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

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην αναγκαιότητα ύπαρξης των μεταγλωττιστών

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

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

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

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

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

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

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

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

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

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

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

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

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

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

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

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

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

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

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

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

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

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

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal Δοµή προγράµµατος 1. Δοµή προγράµµατος program όνοµα_προγράµµατος(αρχείο_1, αρχείο_2,...αρχείο_ν); ΕΠΙΚΕΦΑΛΙΔΑ ΒΙΒΛΙΟΘΗΚΕΣ uses όνοµα_βιβλιοθήκης,όνοµα_βιβλιοθήκης;

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

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

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

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

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

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

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

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Python scripts Ένα πρόγραμμα στην Python (συχνά αποκαλείται script) αποτελείται από μία ακολουθία ορισμών και εντολών. H ακολουθία των ορισμών και

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

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

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

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

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ Μάθημα 7 - Υποπρογράμματα Εργαστήριο 11 Ο TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ Βασικές Έννοιες: Υποπρόγραμμα, Ανάλυση προβλήματος, top down σχεδίαση, Συνάρτηση, Διαδικασία, Παράμετρος, Κλήση συνάρτησης, Μετάβαση

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK

ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK ρ. Γεώργιος Φ. Φραγκούλης Καθηγητής Ver. 0.2 9/2012 ιανύσµατα & ισδιάστατοι πίνακες Ένα διάνυσµα u = (u1, u2,, u ) εισάγεται στη MATLAB ως εξής : u=[ u1, u2,, un ] ή u=[ u1

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β. ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Σύνολο χαρακτήρων της Pascal Για

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

Επαναληπτικές δοµές. µτ α.τ. Όχι. ! απαγορεύεται µέσα σε µία ΓΙΑ να µεταβάλλουµε τον µετρητή! διότι δεν θα ξέρουµε µετά πόσες επαναλήψεις θα γίνουν

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

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Η ΓΛΩΣΣΑ PASCAL ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Απλοί ή στοιχειώδης Τ.Δ. Ακέραιος τύπος Πραγματικός τύπος Λογικός τύπος Χαρακτήρας Σύνθετοι Τ.Δ. Αλφαριθμητικός 1. Ακέραιος (integer) Εύρος: -32768 έως 32767 Δήλωση

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

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

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

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

KΕΦΑΛΑΙΟ 1 ΧΡΗΣΙΜΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΝΝΟΙΕΣ. { 1,2,3,..., n,...

KΕΦΑΛΑΙΟ 1 ΧΡΗΣΙΜΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΝΝΟΙΕΣ. { 1,2,3,..., n,... KΕΦΑΛΑΙΟ ΧΡΗΣΙΜΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΝΝΟΙΕΣ Βασικές έννοιες διαιρετότητας Θα συµβολίζουµε µε, τα σύνολα των φυσικών αριθµών και των ακεραίων αντιστοίχως: {,,3,,, } { 0,,,,, } = = ± ± ± Ορισµός Ένας φυσικός αριθµός

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

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

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

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

Το εσωτερικό ενός Σ Β

Το εσωτερικό ενός Σ Β Επεξεργασία Ερωτήσεων 1 Εισαγωγή ΜΕΡΟΣ 1 Γενική Εικόνα του Μαθήµατος Μοντελοποίηση (Μοντέλο Ο/Σ, Σχεσιακό, Λογικός Σχεδιασµός) Προγραµµατισµός (Σχεσιακή Άλγεβρα, SQL) ηµιουργία/κατασκευή Εισαγωγή εδοµένων

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

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

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

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

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

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

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

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

επιµέλεια Θοδωρής Πιερράτος Βασικές έννοιες προγραµµατισµού Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως,

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές

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

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

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

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

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

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

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

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

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

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

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

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) 8 ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) ιάλεξη 2 2.1 ΜΕΤΑΒΛΗΤΕΣ (ΜΕΡΟΣ Β) Στην προηγούµενη διάλεξη µάθαµε ότι µπορούµε να χρησιµοποιούµε τη ρητή ή την αυτονόητη δήλωση µεταβλητών

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

KΕΦΑΛΑΙΟ 6 ΥΝΑΜΟΣΕΙΡΕΣ-ΣΕΙΡΕΣ TAYLOR

KΕΦΑΛΑΙΟ 6 ΥΝΑΜΟΣΕΙΡΕΣ-ΣΕΙΡΕΣ TAYLOR KΕΦΑΛΑΙΟ 6 ΥΝΑΜΟΣΕΙΡΕΣ-ΣΕΙΡΕΣ TAYLOR 6 Ορισµοί Ορισµός 6 Εστω α είναι µία πραγµατική ακολουθία και είναι πραγµατικοί αριθµοί Ένα άπειρο πολυώνυµο της µορφής: a ( ) () = καλείται δυναµοσειρά µε κέντρο το

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

4.3. Γραµµικοί ταξινοµητές

4.3. Γραµµικοί ταξινοµητές Γραµµικοί ταξινοµητές Γραµµικός ταξινοµητής είναι ένα σύστηµα ταξινόµησης που χρησιµοποιεί γραµµικές διακριτικές συναρτήσεις Οι ταξινοµητές αυτοί αναπαρίστανται συχνά µε οµάδες κόµβων εντός των οποίων

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

ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΞΙΣΩΣΕΩΝ

ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΞΙΣΩΣΕΩΝ ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΞΙΣΩΣΕΩΝ Θα ξεκινήσουµε την παρουσίαση των γραµµικών συστηµάτων µε ένα απλό παράδειγµα από τη Γεωµετρία, το οποίο ϑα µας ϐοηθήσει στην κατανόηση των συστηµάτων αυτών και των συνθηκών

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

Εισαγωγή. Γενική Εικόνα του Μαθήµατος. Το εσωτερικό ενός Σ Β. Εισαγωγή. Εισαγωγή Σ Β Σ Β. Αρχεία ευρετηρίου Κατάλογος συστήµατος Αρχεία δεδοµένων

Εισαγωγή. Γενική Εικόνα του Μαθήµατος. Το εσωτερικό ενός Σ Β. Εισαγωγή. Εισαγωγή Σ Β Σ Β. Αρχεία ευρετηρίου Κατάλογος συστήµατος Αρχεία δεδοµένων Βάσεις εδοµένων 2003-2004 Ευαγγελία Πιτουρά 1 ΜΕΡΟΣ 1 Γενική Εικόνα του Μαθήµατος Επεξεργασία Ερωτήσεων Μοντελοποίηση (Μοντέλο Ο/Σ, Σχεσιακό, Λογικός Σχεδιασµός) Προγραµµατισµός (Σχεσιακή Άλγεβρα, SQL)

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

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

Η γλώσσα προγραμματισμού EEL Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού EEL Η EEL (Early Experimental Language) είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική

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

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

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

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ Τελικές Εξετάσεις Απαντήστε όλα τα θέματα του Μέρους Α και ένα θέμα από

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

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

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

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

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

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1 Εφαρμογές στοιβών Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων Αντίστροφος Πολωνικός Συμβολισμός ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι

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

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 7.1. Ανάπτυξη Προγράµµατος Τι είναι το Πρόγραµµα; Το Πρόγραµµα: Είναι ένα σύνολο εντολών για την εκτέλεση ορισµένων λειτουργιών από τον υπολογιστή.

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

Απλοποιεί τα γεγονότα έτσι ώστε να περιγράφει τι έχει γίνει και όχι πως έχει γίνει.

Απλοποιεί τα γεγονότα έτσι ώστε να περιγράφει τι έχει γίνει και όχι πως έχει γίνει. οµηµένες τεχνικές Ο στόχος των δοµηµένων τεχνικών είναι: Υψηλής ποιότητας προγράµµατα Εύκολη τροποποίηση προγραµµάτων Απλοποιηµένα προγράµµατα Μείωση κόστους και χρόνου ανάπτυξης. Οι βασικές αρχές τους

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

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

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

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

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

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

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

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Εισαγωγή στις έννοιες Αλγόριθµοι και Πολυπλοκότητα, Οργάνωση Δεδοµένων και Δοµές Δεδοµένων Χρήσιµοι µαθηµατικοί

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

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