Λογισμικό Συστήματος Κλειώ Σγουροπούλου.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Βασικές έννοιες αλγορίθμων
Advertisements

Copyright © 2005 Elsevier Κεφάλαιο 2 :: Σύνταξη των γλωσσών προγραμματισμού Πραγματολογία των Γλωσσών Προγραμματισμού Michael L. Scott.
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
Ένα απλό πρόγραμμα σε C /* ********************************************* * This program prints out the sentence “This is a test.” * *********************************************
Τι είναι ο υπολογιστής; Τι είναι ο προγραμματισμός
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
ΘΠ06 - Μεταγλωττιστές Ανάνηψη από σφάλματα κατά τη συντακτική ανάλυση
Γλώσσα Προγραμματισμού
Οι διαφάνειες αυτού του μαθήματος βασίζονται
ΜΑΘ-3122/106 Προγραμματισμός
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
ΕΙΣΑΓΩΓΗ ΜΑΘΗΜΑ 1.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
ΕΠΛ223 Θεωρία και Πρακτική Μεταγλωττιστών Εαρινό Εξάμηνο 2002 Κ. Μουρλάς, Λέκτορας Σημείωση: Οι διαφάνειες αυτές βασίζονται κατά το μεγαλύτερο μέρος τους.
Γεωργαλλίδης Δημήτρης Καθηγητής Πληροφορικής
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών5-1 Επίλυσης ασάφειας με εισαγωγή μη-τερματικών Π.χ. stmt = “if”, expr, “then”, stmt | “if”, expr, “then”,
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ
Κεφάλαιο 3 ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
Σχεδίαση Αλγορίθμων. Διεργασίες (1/2) Μία διεργασία αλληλεπιδρά με το περιβάλλον της δεχόμενη είσοδο και παράγοντας έξοδο.
Κεφάλαιο 6: Εισαγωγή στον προγραμματισμό Φυσικές και τεχνητές γλώσσες.
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 30/03/2009.
Ενότητα Α.4. Δομημένος Προγραμματισμός
ΘΠ06 - Μεταγλωττιστές Συντακτική Ανάλυση, Bison 1.
Λογισμικό (Software).
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής,
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών7-1 Πίνακας Συμβόλων Πίνακας συμβόλων: δομή δεδομένων που χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τμ. Πληροφορικής,
Για τη διεκπεραίωση ενός προβλήματος πρέπει να ακολουθηθεί η εξής διαδικασία:  να γραφεί ο αλγόριθμος να συνταχθεί το πρόγραμμα σε γλώσσα υψηλού επιπέδου.
1.5 Γλώσσες Προγραμματισμού
Διδακτική της Πληροφορικής ΗΥ302 Εργασία :Παρουσίαση σχολικού βιβλίου Γ’ Λυκείου Τεχνολογικής Κατεύθυνσης «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον»
ΛΑΔΑΚΑΚΟΣ ΘΑΛΗΣ Α.Μ ΔΙΑΧΕΙΡΗΣΗ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ. ΥΠΟΛΟΓΙΣΤΗΣ Μηχανή που μπορεί να φέρει σε πέρας πνευματικές εργασίες ρουτίνας με μεγάλη ταχύτητα.
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 23/03/2010.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 9: Παραγωγή Ενδιάμεσου Κώδικα (Ενδιάμεσες Γλώσσες) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά.
Περιεχόμενα Μαθήματος
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ Λογισμικό Λειτουργικό σύστημα Λογισμικό συστήματος
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ.
Περιεχόμενα Μαθήματος
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 13: Επαναληπτικό μάθημα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Το περιεχόμενο του μαθήματος διατίθεται.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 8: Πίνακας Συμβόλων Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 10: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Α) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής.
Από την ιδέα μέχρι το λογισμικό. Ξεκινώντας από το πρόβλημα...
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 11: Βελτιστοποίηση Ενδιάμεσου Κώδικα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα.
Περιεχόμενα Μαθήματος
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Πέμπτη, 30 Ιουλίου 2015Πέμπτη, 30 Ιουλίου 2015Πέμπτη, 30 Ιουλίου 2015Πέμπτη, 30 Ιουλίου 2015Τμ.
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γιώργος Μαγουλάκης Εξάμηνο: Εαρινό 2015 ΤΕΙ Κρήτης Τμ. Μηχανικών Πληροφορικής Τμ. Μηχανικών Πληροφορικής.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση II Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση με το Εργαλείο BISON Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Εισαγωγή στον προγραμματισμό Μέρος 3 ο Προγραμματιστικά περιβάλλοντα § 6.7.
Πληροφορική 2 Γλώσσες Προγραμματισμού 1. Γλώσσες προγραμματσιμού  Επιτρέπουν την κωδικοποίηση των αλγορίθμων  Η εκτέλεση ενός προγράμματος θα πρέπει.
Εισαγωγή στην Python.
Κεφάλαιο 4 :: Σημασιολογική Ανάλυση
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ
2ο ΓΥΜΝΑΣΙΟ ΣΗΤΕΙΑΣ - ΤΑΞΗ Γ'
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ Η/Υ
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Κεφάλαιο 3 ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
Μεταγλωττιστές (Compilers) (Θ)
ΠΛΗΡΟΦΟΡΙΚΗ Γ΄ Γυμνασίου Α΄ Τρίμηνο
Μεταγράφημα παρουσίασης:

Λογισμικό Συστήματος Κλειώ Σγουροπούλου

Λογισμικό συστήματος Λειτουργικό σύστημα Μεταφραστές γλώσσας (translators) Διερμηνείς (interpreters) Μεταγλωττιστές (compilers) Εκδότες (editors) Φορτωτές (loaders) Συνδέτες (linkers) Λογισμικό επικοινωνίας

ΓΠΥΕ vs. ΓΜ Γλώσσες προγραμματισμού υψηλού επιπέδου Γλώσσες Μηχανής Ευκολότερη κατανόηση Προστασία από λάθη κατά την έκφραση αλγορίθμων Μεταφερσιμότητα / φορητότητα Γλώσσες Μηχανής Γρηγορότερα και συντομότερα προγράμματα Άμεση πρόσβαση σε στοιχεία του υλικού Συντονισμός

Διερμηνέας Ο διερμηνέας είναι ένα πρόγραμμα το οποίο διαβάζει, μεταφράζει και εκτελεί δήλωση προς δήλωση προγράμματα που έχουν γραφτεί σε μια γλώσσα υψηλού επιπέδου αρχή προγράμματος υψηλού επιπέδου repeat μετάφρασε την επόμενη δήλωση υψηλού επιπέδου if κανένα συντακτικό λάθος then εκτέλεσε else ανάφερε λάθος until τέλος προγράμματος υψηλού επιπέδου ή συντακτικό λάθος

Μεταγλωττιστής Ο μεταγλωττιστής είναι ένα πρόγραμμα το οποίο διαβάζει προγράμματα που έχουν γραφτεί σε μια γλώσσα υψηλού επιπέδου– την πηγαία (source) γλώσσα – και τα μεταφράζει σε ισοδύναμα προγράμματα σε μια άλλη γλώσσα – γώσσα μεταφοράς (target) αρχή προγράμματος υψηλού επιπέδου repeat μετάφρασε την επόμενη δήλωση υψηλού επιπέδου until τέλος προγράμματος υψηλού επιπέδου εκτέλεση ολόκληρου του μεταφρασμένου προγράμματος

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

Το “περιβάλλον” του μεταγλωττιστή skeletal source program preprocessor source program compiler target assembly program assembler relocatable machine code Loader/link-editor library, relocatable object files absolute machine code

Φάσεις και προϊόντα μεταγλώττισης αρχικό πρόγραμμα Ανάλυση Λεκτική ανάλυση λεκτικές μονάδες Συνακτική ανάλυση συντακτικό δέντρο Σημασιολογική ανάλυση Πίνακας συμβόλων Χειριστής σφαλμάτων συντακτικό δέντρο Σύνθεση Παραγωγή ενδ. κώδικα ενδιάμεσος κώδικας Βελτιστοποίηση ενδ. κώδικα ενδιάμεσος κώδικας Παραγωγή τελικού κώδικα τελικός κώδικας Βελτιστοποίηση τελικού κώδικα τελικό πρόγραμμα

Παράδειγμα Αρχείο εισόδου Αρχείο εξόδου int A; int B; “test.c” main() “test.out” int A; int B; main() { A = B+123; } .comm A,4 .comm B,4 main: mov B,d0 mov #123,d1 add d1,d0 mov d0,A ret

Λεξική ανάλυση (scanning) Κατασκευή λεκτικών μονάδων (lexemes) από χαρακτήρες εισόδου πηγαίου προγράμματος (Regular expressions, transition diagrams) Κατηγοριοποίηση λεκτικών μονάδων σε κουπόνια (tokens) Συστατικά κουπονιών: Τύπος: Τα κουπόνια αποτελούν ακολουθίες χαρακτήρων που εκφράζουν μια γενική έννοια: λέξη κλειδί (keyword), όνομα (identifier), σταθερά (constant), τελεστής (οperator) και διαχωριστής (delimiter) Τιμή π.χ. (CONST, ‘123’) (IDENT, ‘A’)

Λεξική ανάλυση (scanning) Αφαίρεση κενών και περιττών χαρακτήρων (tabs, new lines) Αφαίρεση των σχολίων Έλεγχος λαθών Έλεγχος μεγέθους identifiers/string constants, βάσει κανόνων γλώσσας Έλεγχος μη νόμιμων identifiers Έλεγχος λανθασμένων αναθέσεων

Παράδειγμα: Λεξική ανάλυση Είσοδος: ακολουθία χαρακτήρων intspA;nlintspB;nlmain()nl{nlAsp=spB+123;nl}nl Έξοδος: ακολουθία κουπονιών Symbol Table A B main ΙΝΤtok ΙDENΤtok() SEMICOLONtok ΙΝΤtok ΙDENΤtok() SEMICOLONtok ΙDENΤtok() LBRACKETtok RBRACKETtok LCURLYtok ΙDENΤtok() Eqtok ΙDENΤtok() PLUStok CONSTtok 123 SEMICOLONtok RCURLYtok

Γραμματικές Ο ορισμός μιας γλώσσας προγραμματισμού περιλαμβάνει: Συντακτικό: κανόνες για την κατασκευή ‘αποδεκτών’ διατυπώσεων. Ο τρόπος εφαρμογής των συντακτικών κανόνων καθορίζει τη συντακτική ορθότητα ενός προγράμματος Σημασιολογία: μοντελοποίηση δεδομένων και λειτουργιών, ισοδυναμίες προγραμμάτων, κ.λπ.

Γραμματικές Συντακτικό: συνήθως καθορίζεται από γραμματικές χωρίς συμφραζόμενα (ΓΧΣ) (context-free grammars / BNF) Παράδειγμα BNF παραγωγής: stat -> if ( exp ) stat else stat τερματικά: if, (, ), else μη-τερματικά: stat, exp Κάθε παραγωγή αποτυπώνει έναν έγκυρο τρόπο με βάση τον οποίο τα μη-τερματικά μπορούν να αναπτυχθούν σε συμβολοσειρές τερματικών και μη-τερματικών

Ορισμός ΓΧΣ Μια ΓΧΣ περιλαμβάνει: Παράδειγμα t: σύνολο κουπονιών (‘τερματκά’) nt: σύνολο μη-τερματικών P: σύνολο παραγωγών S: ένα μη-τερματικό αρχικό σύμβολο Παράδειγμα bin -> bin + dig bin -> bin – dig bin -> dig dig -> 0 dig -> 1 bin -> bin + dig | bin – dig | dig dig -> 0 | 1

Ορισμός ΓΧΣ Με αφετηρία το αρχικό σύμβολο και συνεχή αντικατάσταση κάθε μη-τερματικού με το δεξί μέρος της αντίστοιχης παραγωγής, προκύπτουν συμβολοσειρές τερματικών Μια τέτοια συμβολοσειρά μη-τερματικών καλείται προτασιακή μορφή Η γλώσσα μιας γραμματικής είναι το σύνολο όλων των προτασιακών μορφών που μπορούν να παραχθούν από το αρχικό της σύμβολο

Συντακτική ανάλυση (parsing) Έλεγχος γραμματικής ορθότητας προγράμματος εισόδου Κατασκευή αντίστοιχου συντακτικού δένδρου (Abstract Syntax Tree) Δυο γενικές κατηγορίες συντακτικών αναλυτών "συντακτικοί αναλυτές από πάνω προς τα κάτω" (top-down parsers) "συντακτικοί αναλυτές από κάτω προς τα πάνω" (bottom-up parsers)

Συντακτική ανάλυση: top-down Εκκίνηση από ρίζα δένδρου (αρχικό σύμβολο γραμματικής) πορεία προς τα φύλλα (συμβολοσειρά εισόδου) με διαδοχικές αντικαταστάσεις των μη-τερματικών συμβόλων χρησιμοποιώντας τους συντακτικούς κανόνες της γραμματικής από αριστερά προς τα δεξιά

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

Συντακτική ανάλυση: top-down Παράδειγμα stat -> begin statlist | S statlist -> stat ; statlist | end

Συντακτική ανάλυση: top-down

Συντακτική ανάλυση: bottom-up Εκκίνηση από τα φύλλα (συμβολοσει-ρά εισόδου) πορεία προς τη ρίζα (αρχικό σύμβολο) με διαδοχική αναγνώριση δεξιού μέλους συντακτικών κανόνων και αντικατάσταση με τα αριστερά τους μέλη.

Συντακτική ανάλυση: bottom-up Αναλυτές «ολίσθησε-ελάττωσε» Τοποθέτησε στη στοίβα (ολίσθησε -shift)σύμβολα εισόδου μέχρι να εμφανισθεί το δεξιό μέλος κάποιου συντακτικού κανόνα στην κορυφή της Αφαίρεσε από τη στοίβα (ελάττωσε – reduce) αυτό το δεξιό μέλος και στη θέση του τοποθέτησε το αντίστοιχο αριστερό του μέλος. Επανέλαβε έως ότου σαρωθεί όλη η συμβολοσειρά εισόδου και μείνει στη στοίβα μόνο το αρχικό σύμβολο της γραμματικής.

Συντακτική ανάλυση: bottom-up Παράδειγμα Rule A: stat -> begin statlist | S Rule B: statlist -> stat ; statlist | end

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