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

Μέγεθος: 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 Ανοδική Κατασκευή Συντακτικού Δέντρου κατασκευή δέντρου

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 2 ΜΗ ΓΡΑΜΜΙΚΕΣ ΕΞΙΣΩΣΕΙΣ

ΚΕΦΑΛΑΙΟ 2 ΜΗ ΓΡΑΜΜΙΚΕΣ ΕΞΙΣΩΣΕΙΣ ΚΕΦΑΛΑΙΟ ΜΗ ΓΡΑΜΜΙΚΕΣ ΕΞΙΣΩΣΕΙΣ Η αδυναµία επίλυσης της πλειοψηφίας των µη γραµµικών εξισώσεων µε αναλυτικές µεθόδους, ώθησε στην ανάπτυξη αριθµητικών µεθόδων για την προσεγγιστική επίλυσή τους, π.χ. συν()

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

Pascal - Βασικές Έννοιες

Pascal - Βασικές Έννοιες Pasal - Βασικές Έννοιες «Ο ΠΗΛΟΣ ΑΝ ΜΗ ΑΡΗ ΚΕΡΑΜΟΣ ΟΥ ΓΙΝΕΤΑΙ» Σηµαίνει: «Η λάσπη αν δε ζυµωθεί δε γίνετε κεραµίδι» ηλαδή: «Χωρίς τη δοκιµασία της πρακτικής εξάσκησης δεν αποκτάς ικανότητα, πείρα». (Αρχαία

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

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

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

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

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

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

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

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

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

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

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

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

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

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

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

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ ΘΕΜ 1.. Χαρακτηρίστε τις προτάσεις που ακολουθούν ως Σωστό, αν οι προτάσεις είναι σωστές και ως Λάθος αν οι προτάσεις είναι λάθος. 1.Είναι πάντα δυνατή η μετατροπή της εντολής WHILE DO σε FOR DO. 2. Στην

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

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

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

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

ΚΕΦΑΛΑΙΟ 5: Τανυστικά Γινόµενα

ΚΕΦΑΛΑΙΟ 5: Τανυστικά Γινόµενα ΚΕΦΑΛΑΙΟ 5: Τανυστικά Γινόµενα Στο κεφάλαιο αυτό εισάγουµε την έννοια του τανυστικού γινοµένου προτύπων. Θα είµαστε συνοπτικοί καθώς αναπτύσσουµε µόνο εκείνες τις στοιχειώδεις προτάσεις που θα βρουν εφαρµογές

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

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

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

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

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

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

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

Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ 1 Αριθµητικό Σύστηµα! Ορίζει τον τρόπο αναπαράστασης ενός αριθµού µε διακεκριµένα σύµβολα! Ένας αριθµός αναπαρίσταται διαφορετικά σε κάθε σύστηµα,

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

Εργαστήριο ΨΗΦΙΑΚΗ ΛΟΓΙΚΗ. Εισαγωγή

Εργαστήριο ΨΗΦΙΑΚΗ ΛΟΓΙΚΗ. Εισαγωγή Εισαγωγή Εργαστήριο ΨΗΦΙΑΚΗ ΛΟΓΙΚΗ Ξεκινάµε την εργαστηριακή µελέτη της Ψηφιακής Λογικής των Η/Υ εξετάζοντας αρχικά τη µορφή των δεδοµένων που αποθηκεύουν και επεξεργάζονται οι υπολογιστές και προχωρώντας

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.2.3 Η εντολή Εκτύπωσε

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

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

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 1.3-1.4: Εισαγωγή Στον Προγραµµατισµό ( ιάλεξη 2) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Περιεχόµενα Εισαγωγικές Έννοιες - Ορισµοί Ο κύκλος ανάπτυξης προγράµµατος Παραδείγµατα Πότε χρησιµοποιούµε υπολογιστή?

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

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

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

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

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

Κεφάλαιο 3 : Σύνταξη Γλωσσών Προγραμματισμού Κεφάλαιο 3 : Σύνταξη Γλωσσών Προγραμματισμού Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών ΤΜΗΥΠ Πανεπιστήμιο Πατρών Εισαγωγή Οι διαφορές των ΓΠ στις συντακτικές δομές τους, είναι πολύ μεγαλύτερες από

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

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Εργαστήριο 6 Εντολές Επανάληψης Η δομή Επιλογής στη PASCAL H δομή Επανάληψης στη PASCAL. Ρεύμα Εισόδου / Εξόδου.. Ρεύμα Εισόδου / Εξόδου. To πρόγραμμα γραφικών gnuplot. Γραφικά στη PASCAL. Σκοπός 6.1 ΕΠΙΔΙΩΞΗ

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2008 ΔΙΔΑΣΚΩΝ: ΑΝΤΩΝΙΟΣ ΣΑΒΒΙΔΗΣ ΒΑΣΙΚΗ ΕΡΓΑΣΙΑ ΦΑΣΗ 2η από 5 Παράδοση: Πέμπτη 10 Απριλίου 2008, 24:00 (μεσάνυχτα)

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

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

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

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

Αλγόριθµοι Ροής σε Γράφους (CLR, κεφάλαιο 27)

Αλγόριθµοι Ροής σε Γράφους (CLR, κεφάλαιο 27) Αλγόριθµοι Ροής σε Γράφους (CLR, κεφάλαιο 27) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: ίκτυα ροής και το πρόβληµα της µέγιστης ροής Η µεθοδολογία Ford-Fulkerson Ο αλγόριθµος Edmonds-Karps ΕΠΛ 232

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

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές Μεταβλητές 2 Δήλωση μεταβλητών Η δήλωση (declaration) πληροφορεί το μεταγλωττιστή για το όνομα και

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

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

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

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

Επεξεργασία Ερωτήσεων

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

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

Οι πράξεις της συνένωσης. Μ.Χατζόπουλος 1

Οι πράξεις της συνένωσης. Μ.Χατζόπουλος 1 Οι πράξεις της συνένωσης Μ.Χατζόπουλος 1 ΠΡΟΜΗΘΕΥΤΗΣ (ΠΡΜ) Κ_Προμ Π_Ονομα Είδος Πόλη 22 Ανδρέου 7 Αθήνα 31 Πέτρου 8 Πάτρα 28 Δέδες 12 Λάρισα 58 Παππάς 7 Αθήνα ΠΡΟΙΟΝ (ΠΡ) Κ_Πρ Πρ_Ονομα Χρώμα Βάρος Π35

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

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

ΣΤΟΙΧΕΙΑ ΘΕΜΕΛΙΩΣΕΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΗΧΑΝΩΝ ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ ΚΑΙ ΤΟ ΛΥΚΕΙΟ ΜΕΡΟΣ ΤΡΙΤΟ Ένταξη των Τ.Π.Ε. στην διδασκαλία και τη µάθηση I) ΣΤΟΙΧΕΙΑ ΘΕΜΕΛΙΩΣΕΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΗΧΑΝΩΝ ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ ΚΑΙ ΤΟ ΛΥΚΕΙΟ Παύλος Γ. Σπυράκης (google: Paul Spirakis) Ερευνητικό Ακαδηµαϊκό

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΟ 2 2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου 2.4.1 Δομή ακολουθίας ΚΕΦΑΛΑΙΟ 7 7.1 7.9 Σταθερές (constants): Προκαθορισμένες τιμές που παραμένουν

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

1. στο σύνολο Σ έχει ορισθεί η πράξη της πρόσθεσης ως προς την οποία το Σ είναι αβελιανή οµάδα, δηλαδή

1. στο σύνολο Σ έχει ορισθεί η πράξη της πρόσθεσης ως προς την οποία το Σ είναι αβελιανή οµάδα, δηλαδή KΕΦΑΛΑΙΟ ΤΟ ΣΥΝΟΛΟ ΤΩΝ ΠΡΑΓΜΑΤΙΚΩΝ ΑΡΙΘΜΩΝ ιατεταγµένα σώµατα-αξίωµα πληρότητας Ένα σύνολο Σ καλείται διατεταγµένο σώµα όταν στο σύνολο Σ έχει ορισθεί η πράξη της πρόσθεσης ως προς την οποία το Σ είναι

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

Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών

Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών TINΑ ΒΡΕΝΤΖΟΥ www.ma8eno.gr www.ma8eno.gr Σελίδα 1 Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών Στους πραγματικούς αριθμούς ορίστηκαν οι

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

Εισαγωγή στην επιστήµη των υπολογιστών. Υπολογιστές και Δεδοµένα Κεφάλαιο 3ο Αναπαράσταση Αριθµών

Εισαγωγή στην επιστήµη των υπολογιστών. Υπολογιστές και Δεδοµένα Κεφάλαιο 3ο Αναπαράσταση Αριθµών Εισαγωγή στην επιστήµη των υπολογιστών Υπολογιστές και Δεδοµένα Κεφάλαιο 3ο Αναπαράσταση Αριθµών 1 Δεκαδικό και Δυαδικό Σύστηµα Δύο κυρίαρχα συστήµατα στο χώρο των υπολογιστών Δεκαδικό: Η βάση του συστήµατος

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

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

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

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

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

Visual Basic Βασικές Έννοιες

Visual Basic Βασικές Έννοιες Visual Basi Βασικές Έννοιες «Είδα στον ύπνο µου ότι η ζωή είναι χαρά. Ξύπνησα και είδα ότι είναι χρέος. Αγωνίστηκα και είδα ότι τo χρέος είναι χαρά.» Ραµπριτανάθ Ταγκόρ Κουλλάς Χρίστος www.oullas.om oullas

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

Σκοπός. Προγραμματίζοντας τον Arduino ΙΙ Εντολή Εκχώρησης & Εντολές. Συλλογή & Επεξεργασία Δεδομένων. Πρόγραμμα. Εντολές Επεξεργασίας Δεδομένων

Σκοπός. Προγραμματίζοντας τον Arduino ΙΙ Εντολή Εκχώρησης & Εντολές. Συλλογή & Επεξεργασία Δεδομένων. Πρόγραμμα. Εντολές Επεξεργασίας Δεδομένων Σκοπός Συλλογή & Επεξεργασία Δεδομένων Προγραμματίζοντας τον Arduino ΙΙ Εντολή Εκχώρησης & Εντολές Ελέγχου. Πρόγραμμα Εντολές Επεξεργασίας Δεδομένων Εντολή Εκχώρησης Εντολές Ελέγχου Λογική συνθήκη Εντολή

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

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

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

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

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

Μοντελοποίηση Υπολογισμού. Γραμματικές Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις Μοντελοποίηση Υπολογισμού Γραμματικές Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις Προβλήματα - Υπολογιστές Δεδομένου ενός προβλήματος υπάρχουν 2 σημαντικά ερωτήματα: Μπορεί να επιλυθεί με χρήση υπολογιστή;

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Σ Β Σύνολο από προγράμματα για τη διαχείριση της Β Επεξεργασία Ερωτήσεων Αρχεία ευρετηρίου Κατάλογος συστήματος Αρχεία δεδομένων ΒΑΣΗ Ε ΟΜΕΝΩΝ Σύστημα Βάσεων εδομένων (ΣΒ ) Βάσεις Δεδομένων 2007-2008

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

Προγραµµατισµός στην Basic

Προγραµµατισµός στην Basic Προγραµµατισµός στην Basic 1. εντολή εισόδου Χρησιµοποιείται η εντολή INPUT, η οποία µπορεί να συνταχθεί : α. INPUT X, αν το δεδοµένο που ζητάει είναι αριθµητικό ή β. INPUT X$, αν το δεδοµένο που ζητάει

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

Γραµµικός Προγραµµατισµός - Μέθοδος Simplex

Γραµµικός Προγραµµατισµός - Μέθοδος Simplex Γραµµικός Προγραµµατισµός - Μέθοδος Simplex Η πλέον γνωστή και περισσότερο χρησιµοποιηµένη µέθοδος για την επίλυση ενός γενικού προβλήµατος γραµµικού προγραµµατισµού, είναι η µέθοδος Simplex η οποία αναπτύχθηκε

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

Σύντοµος Οδηγός της Qbasic. Πέρδος Αθανάσιος Καθηγητής Πληροφορικής

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

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

PLC. Εισαγ γωγή στα. ιαδικασία προγραµµατισµού. Η δοµή ενός προγράµµατος. Η µνήµη και η δοµή της. Εκτέλεση προγράµµατος

PLC. Εισαγ γωγή στα. ιαδικασία προγραµµατισµού. Η δοµή ενός προγράµµατος. Η µνήµη και η δοµή της. Εκτέλεση προγράµµατος ιαδικασία προγραµµατισµού Η δοµή ενός προγράµµατος Η µνήµη και η δοµή της Εκτέλεση προγράµµατος 1 2 Εκτέλεση προγράµµατος Η εκτέλεση του προγράµµατος στα είναι κυκλική. ηλαδή όταν εκτελείται η τελευταία

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

1 η Θεµατική Ενότητα : Δυαδικά Συστήµατα

1 η Θεµατική Ενότητα : Δυαδικά Συστήµατα 1 η Θεµατική Ενότητα : Δυαδικά Συστήµατα Δεκαδικοί Αριθµοί Βάση : 10 Ψηφία : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Αριθµοί: Συντελεστές Χ δυνάµεις του 10 7392.25 = 7x10 3 + 3x10 2 + 9x10 1 + 2x10 0 + 2x10-1 + 5x10-2

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

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

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 7 ο έντρο Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης έντρο Ορισµός Υλοποίηση µε Πίνακα Υλοποίηση µε είκτες υαδικό έντρο

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

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

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

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

ΣΕΙΡΕΣ TAYLOR. Στην Ενότητα αυτή θα ασχοληθούµε µε την προσέγγιση συναρτήσεων µέσω πολυωνύµων. Πολυώνυµο είναι κάθε συνάρτηση της µορφής:

ΣΕΙΡΕΣ TAYLOR. Στην Ενότητα αυτή θα ασχοληθούµε µε την προσέγγιση συναρτήσεων µέσω πολυωνύµων. Πολυώνυµο είναι κάθε συνάρτηση της µορφής: ΣΕΙΡΕΣ TAYLOR Στην Ενότητα αυτή θα ασχοληθούµε µε την προσέγγιση συναρτήσεων µέσω πολυωνύµων Πολυώνυµο είναι κάθε συνάρτηση της µορφής: p( ) = a + a + a + a + + a, όπου οι συντελεστές α i θα θεωρούνται

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

ιδασκοντες: x R y x y Q x y Q = x z Q = x z y z Q := x + Q Τετάρτη 10 Οκτωβρίου 2012

ιδασκοντες: x R y x y Q x y Q = x z Q = x z y z Q := x + Q Τετάρτη 10 Οκτωβρίου 2012 ιδασκοντες: Αλγεβρικες οµες Ι Ασκησεις - Φυλλαδιο 1 Ν. Μαρµαρίδης - Α. Μπεληγιάννης Ιστοσελιδα Μαθηµατος : http://users.uoi.gr/abeligia/algebraicstructuresi/asi.html Τετάρτη 10 Οκτωβρίου 2012 Ασκηση 1.

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

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

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

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

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

Παρουσίαση του εργαλείου BISON Παρουσίαση του εργαλείου BISON Γεννήτρια Συντακτικών Αναλυτών Β Φάση Συντακτική Ανάλυση Χαρακτηριστικά του bison Γεννήτρια συντακτικών αναλυτών σε C/C++. Συµβατό µε το εργαλείο του Unixyacc. Σχετικά εύκολο

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

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

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

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

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

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

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

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

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

Ενότητα 7 Ουρές Προτεραιότητας

Ενότητα 7 Ουρές Προτεραιότητας Ενότητα Ουρές Προτεραιότητας ΗΥ4 - Παναγιώτα Φατούρου Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type). Έστω

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