Λογισμικό Συστήματος

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

description

Λογισμικό Συστήματος. Κλειώ Σγουροπούλου. Λογισμικό συστήματος. Λειτουργικό σύστημα Μεταφραστές γλώσσας (translators) Διερμηνείς ( interpreters) Μεταγλωττιστές (compilers) Εκδότες ( editors) Φορτωτές ( loaders) Συνδέτες ( linkers) Λογισμικό επικοινωνίας. ΓΠΥΕ vs. ΓΜ. - PowerPoint PPT Presentation

Transcript of Λογισμικό Συστήματος

Page 1: Λογισμικό Συστήματος

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

Λογισμικό ΣυστήματοςΛογισμικό Συστήματος

Κλειώ ΣγουροπούλουΚλειώ Σγουροπούλου

Page 2: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

Λογισμικό συστήματοςΛογισμικό συστήματος

Λειτουργικό σύστημα Λειτουργικό σύστημα Μεταφραστές γλώσσαςΜεταφραστές γλώσσας (translators) (translators)

Διερμηνείς (Διερμηνείς (interpreters)interpreters) Μεταγλωττιστές Μεταγλωττιστές (compilers)(compilers)

Εκδότες (Εκδότες (editors)editors) Φορτωτές (Φορτωτές (loaders)loaders) Συνδέτες (Συνδέτες (linkers)linkers) Λογισμικό επικοινωνίαςΛογισμικό επικοινωνίας

Page 3: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

ΓΠΥΕ ΓΠΥΕ vs. vs. ΓΜΓΜ

Γλώσσες προγραμματισμού υψηλού Γλώσσες προγραμματισμού υψηλού επιπέδουεπιπέδου Ευκολότερη κατανόησηΕυκολότερη κατανόηση Προστασία από λάθη κατά την έκφραση Προστασία από λάθη κατά την έκφραση

αλγορίθμωναλγορίθμων ΜεταφερσιμότηταΜεταφερσιμότητα / / φορητότηταφορητότητα

Γλώσσες ΜηχανήςΓλώσσες Μηχανής Γρηγορότερα και συντομότερα προγράμματαΓρηγορότερα και συντομότερα προγράμματα Άμεση πρόσβαση σε στοιχεία του υλικούΆμεση πρόσβαση σε στοιχεία του υλικού ΣυντονισμόςΣυντονισμός

Page 4: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

Διερμηνέας Διερμηνέας

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

αρχή προγράμματος υψηλού επιπέδουαρχή προγράμματος υψηλού επιπέδου

repeatrepeat

μετάφρασε την επόμενη δήλωση υψηλού επιπέδουμετάφρασε την επόμενη δήλωση υψηλού επιπέδου

ifif κανένα συντακτικό λάθοςκανένα συντακτικό λάθος

thenthen εκτέλεσεεκτέλεσε

elseelse ανάφερε λάθοςανάφερε λάθος

until until τέλος προγράμματος υψηλού επιπέδου ή τέλος προγράμματος υψηλού επιπέδου ή συντακτικό λάθοςσυντακτικό λάθος

Page 5: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

ΜεταγλωττιστήςΜεταγλωττιστής

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

αρχή προγράμματος υψηλού επιπέδουαρχή προγράμματος υψηλού επιπέδου

repeatrepeat

μετάφρασε την επόμενη δήλωση υψηλού μετάφρασε την επόμενη δήλωση υψηλού επιπέδουεπιπέδου

until until τέλος προγράμματος υψηλού επιπέδουτέλος προγράμματος υψηλού επιπέδου

εκτέλεση ολόκληρου του μεταφρασμένου εκτέλεση ολόκληρου του μεταφρασμένου προγράμματοςπρογράμματος

Page 6: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

Μεταφραστές Μεταφραστές vs. vs. ΜεταγλωττιστέςΜεταγλωττιστές

ΜεταφραστέςΜεταφραστές Πολλαπλή μετάφραση ίδιων δηλώσεων Πολλαπλή μετάφραση ίδιων δηλώσεων

προγράμματος (επιβάρυνση στην ταχύτητα προγράμματος (επιβάρυνση στην ταχύτητα εκτέλεσης)εκτέλεσης)

Μεγαλύτερη ικανότητα εντοπισμού Μεγαλύτερη ικανότητα εντοπισμού σφαλμάτωνσφαλμάτων

Ενδείκνυται κατά την ανάπτυξηΕνδείκνυται κατά την ανάπτυξη ΜεταγλωττιστέςΜεταγλωττιστές

Επαναληπτική εκτέλεση μεταγλωττισμένων Επαναληπτική εκτέλεση μεταγλωττισμένων προγραμμάτωνπρογραμμάτων

ΤαχύτηταΤαχύτητα Ενδείκνυται για παραγωγική χρήσηΕνδείκνυται για παραγωγική χρήση

Page 7: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

Το Το ““περιβάλλονπεριβάλλον”” του του μεταγλωττιστήμεταγλωττιστή

preprocessorpreprocessor

compilercompiler

assemblerassembler

Loader/link-editorLoader/link-editor

skeletal source programskeletal source program

source programsource program

target assembly programtarget assembly program

relocatable machine coderelocatable machine code

library, library, relocatable object filesrelocatable object files

absolute machine codeabsolute machine code

Page 8: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

ΣύνθεσηΣύνθεση

ΑνάλυσηΑνάλυση

Φάσεις και προϊόντα Φάσεις και προϊόντα μεταγλώττισηςμεταγλώττισης

Λεκτική ανάλυσηΛεκτική ανάλυση

Συνακτική ανάλυσηΣυνακτική ανάλυση

Σημασιολογική ανάλυσηΣημασιολογική ανάλυση

αρχικό πρόγραμμααρχικό πρόγραμμα

λεκτικές μονάδεςλεκτικές μονάδες

συντακτικό δέντροσυντακτικό δέντρο

Παραγωγή ενδ. κώδικαΠαραγωγή ενδ. κώδικα

Βελτιστοποίηση ενδ. κώδικαΒελτιστοποίηση ενδ. κώδικα

Παραγωγή τελικού κώδικαΠαραγωγή τελικού κώδικα

Βελτιστοποίηση τελικού κώδικαΒελτιστοποίηση τελικού κώδικα

συντακτικό δέντροσυντακτικό δέντρο

ενδιάμεσος κώδικαςενδιάμεσος κώδικας

τελικός κώδικαςτελικός κώδικας

τελικό πρόγραμματελικό πρόγραμμα

ενδιάμεσος κώδικαςενδιάμεσος κώδικας

ΠίνακαςΠίνακαςσυμβόλωνσυμβόλων

ΧειριστήςΧειριστήςσφαλμάτωνσφαλμάτων

Page 9: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

ΠαράδειγμαΠαράδειγμα

Αρχείο εισόδου Αρχείο εισόδου ““test.c”test.c”

Αρχείο εξόδουΑρχείο εξόδου ““test.out”test.out”

.comm A,4.comm A,4

.comm B,4.comm B,4main:main:

mov B,d0mov B,d0mov #123,d1mov #123,d1add d1,d0add d1,d0mov d0,Amov d0,Aretret

int A;int A;

int B;int B;

main()main()

{ {

A = B+123;A = B+123;

}}

Page 10: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

Λεξική ανάλυσηΛεξική ανάλυση (scanning) (scanning)

Κατασκευή Κατασκευή λεκτικών μονάδωνλεκτικών μονάδων (lexemes) (lexemes) από χαρακτήρες εισόδου πηγαίου από χαρακτήρες εισόδου πηγαίου προγράμματοςπρογράμματος(Regular expressions, transition diagrams)(Regular expressions, transition diagrams)

Κατηγοριοποίηση λεκτικών μονάδων σε Κατηγοριοποίηση λεκτικών μονάδων σε κουπόνια κουπόνια (tokens)(tokens)

Συστατικά κουπονιών:Συστατικά κουπονιών: ΤύποςΤύπος: Τα κουπόνια αποτελούν ακολουθίες : Τα κουπόνια αποτελούν ακολουθίες

χαρακτήρων που εκφράζουν μια γενική έννοια: χαρακτήρων που εκφράζουν μια γενική έννοια: λέξη κλειδί (λέξη κλειδί (keywordkeyword), όνομα (), όνομα (identifieridentifier), ), σταθερά (σταθερά (constantconstant), τελεστής (), τελεστής (οperatorοperator) και ) και διαχωριστής (διαχωριστής (delimiterdelimiter))

ΤιμήΤιμή π.χ. π.χ. ((CONST, ‘123’CONST, ‘123’) (IDENT, ‘A’)) (IDENT, ‘A’)

Page 11: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

Λεξική ανάλυσηΛεξική ανάλυση (scanning) (scanning)

Αφαίρεση κενών και περιττών Αφαίρεση κενών και περιττών χαρακτήρωνχαρακτήρων((tabs, new lines)tabs, new lines)

ΑφαίρεσηΑφαίρεση των σχολίωντων σχολίων Έλεγχος λαθώνΈλεγχος λαθών

Έλεγχος μεγέθους Έλεγχος μεγέθους identifiersidentifiers//string constants, string constants, βάσει κανόνων γλώσσαςβάσει κανόνων γλώσσας

Έλεγχος μη νόμιμων Έλεγχος μη νόμιμων identifiersidentifiers Έλεγχος λανθασμένων αναθέσεωνΈλεγχος λανθασμένων αναθέσεων

Page 12: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

ΠαράδειγμαΠαράδειγμα: : Λεξική ανάλυσηΛεξική ανάλυση

Είσοδος: ακολουθία χαρακτήρωνΕίσοδος: ακολουθία χαρακτήρων

intintspspA;A;nlnlintintspspB;B;nlnlmain()main()nlnl{{nlnlAAspsp==spspB+123;B+123;nlnl}}nlnl

Έξοδος: ακολουθία κουπονιώνΈξοδος: ακολουθία κουπονιώνΙΝΤΙΝΤtok tok ΙΙDENDENΤΤtoktok()()SEMICOLONtok SEMICOLONtok ΙΝΤΙΝΤtok tok ΙΙDENDENΤΤtoktok()()SEMICOLONtok SEMICOLONtok ΙDENΤtokΙDENΤtok()()LBRACKETtokLBRACKETtok RBRACKETtokRBRACKETtok LCURLYtokLCURLYtok ΙDENΤtokΙDENΤtok()()EqtokEqtok ΙDENΤtokΙDENΤtok()()PLUStokPLUStok CONSTtok CONSTtok 123123SEMICOLONtok RCURLYtokSEMICOLONtok RCURLYtok

Symbol TableSymbol Table

AA

BB

mainmain

Page 13: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

ΓραμματικέςΓραμματικές

Ο ορισμός μιας γλώσσας Ο ορισμός μιας γλώσσας προγραμματισμού περιλαμβάνειπρογραμματισμού περιλαμβάνει:: Συντακτικό: Συντακτικό: κανόνες για την κατασκευή κανόνες για την κατασκευή

‘αποδεκτών’ διατυπώσεων. Ο τρόπος ‘αποδεκτών’ διατυπώσεων. Ο τρόπος εφαρμογής των συντακτικών κανόνων εφαρμογής των συντακτικών κανόνων καθορίζει τη συντακτική ορθότητα ενός καθορίζει τη συντακτική ορθότητα ενός προγράμματοςπρογράμματος

Σημασιολογία: Σημασιολογία: μοντελοποίηση δεδομένων και μοντελοποίηση δεδομένων και λειτουργιών, ισοδυναμίες προγραμμάτων, λειτουργιών, ισοδυναμίες προγραμμάτων, κ.λπ. κ.λπ.

Page 14: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

Συντακτικό: Συντακτικό: συνήθως καθορίζεται από συνήθως καθορίζεται από γραμματικές χωρίς συμφραζόμεναγραμματικές χωρίς συμφραζόμενα (ΓΧΣ) (ΓΧΣ)((context-free grammars / BNF)context-free grammars / BNF)

Παράδειγμα Παράδειγμα BNFBNF παραγωγήςπαραγωγής::stat -> stat -> ifif (( exp exp )) stat stat elseelse stat statτερματικά:τερματικά: if, (, ), else if, (, ), else μη-τερματικά: μη-τερματικά: stat, expstat, exp

Κάθε Κάθε παραγωγήπαραγωγή αποτυπώνει έναν έγκυρο αποτυπώνει έναν έγκυρο τρόπο με βάση τον οποίο τα μη-τερματικά τρόπο με βάση τον οποίο τα μη-τερματικά μπορούν να αναπτυχθούν σε μπορούν να αναπτυχθούν σε συμβολοσειρές τερματικών και μη-συμβολοσειρές τερματικών και μη-τερματικώντερματικών

ΓραμματικέςΓραμματικές

Page 15: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

Ορισμός ΓΧΣΟρισμός ΓΧΣ

Μια ΓΧΣ περιλαμβάνει:Μια ΓΧΣ περιλαμβάνει: tt: : σύνολο κουπονιών (‘σύνολο κουπονιών (‘τερματκάτερματκά’)’) ntnt:: σύνολο σύνολο μη-τερματικώνμη-τερματικών PP:: σύνολο σύνολο παραγωγώνπαραγωγών SS: : ένα μη-τερματικό ένα μη-τερματικό αρχικόαρχικό σύμβολο σύμβολο

ΠαράδειγμαΠαράδειγμαbin bin -> bin -> bin ++ dig digbin bin -> bin -> bin –– dig digbin bin -> dig-> digdig -> dig -> 00dig -> dig -> 11

bin bin -> bin -> bin ++ dig | dig | bin bin –– dig | dig dig | dig

dig -> dig -> 00 | | 11

Page 16: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

Ορισμός ΓΧΣΟρισμός ΓΧΣ

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

Μια τέτοια συμβολοσειρά μη-τερματικών Μια τέτοια συμβολοσειρά μη-τερματικών καλείται καλείται προτασιακή μορφήπροτασιακή μορφή

Η Η γλώσσαγλώσσα μιας γραμματικής είναι το μιας γραμματικής είναι το σύνολο όλων των προτασιακών μορφών σύνολο όλων των προτασιακών μορφών που μπορούν να παραχθούν από το αρχικό που μπορούν να παραχθούν από το αρχικό της σύμβολο της σύμβολο

Page 17: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

Συντακτική ανάλυση Συντακτική ανάλυση (parsing)(parsing)

Έλεγχος γραμματικής ορθότητας Έλεγχος γραμματικής ορθότητας προγράμματος εισόδου προγράμματος εισόδου

Κατασκευή αντίστοιχου Κατασκευή αντίστοιχου συντακτικού συντακτικού δένδρουδένδρου ( (Abstract Syntax Tree)Abstract Syntax Tree)

Δυο γενικές κατηγορίες Δυο γενικές κατηγορίες συντακτικών αναλυτώνσυντακτικών αναλυτών "συντακτικοί αναλυτές από πάνω προς "συντακτικοί αναλυτές από πάνω προς

τα κάτω"τα κάτω" (top-down parsers) (top-down parsers) "συντακτικοί αναλυτές από κάτω προς "συντακτικοί αναλυτές από κάτω προς

τα πάνω"τα πάνω" ( (bottombottom--upup parsers) parsers)

Page 18: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

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

Εκκίνηση από ρίζα δένδρου (αρχικό Εκκίνηση από ρίζα δένδρου (αρχικό σύμβολο γραμματικής) σύμβολο γραμματικής)

πορεία προς τα φύλλα πορεία προς τα φύλλα (συμβολοσειρά εισόδου) (συμβολοσειρά εισόδου)

με διαδοχικές αντικαταστάσεις των με διαδοχικές αντικαταστάσεις των μη-τερματικών συμβόλωνμη-τερματικών συμβόλων

χρησιμοποιώντας τους συντακτικούς χρησιμοποιώντας τους συντακτικούς κανόνες της γραμματικήςκανόνες της γραμματικής από από αριστερά προς τα δεξιάαριστερά προς τα δεξιά

Page 19: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

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

1. Ξεκίνα από το ΑΣ

2. Εξέτασε κάθε εναλλακτική παραγωγή για το ΑΣ

3. Σύγκρινε το κουπόνι εισόδου με το πρώτο σύμβολο του δεξιού μέρους κάθε εναλλακτικής παραγωγής

4. Αν βρεθεί αντίστοιχη παραγωγή χρησιμοποίησέ τη για επέκταση δένδρου

5. Επανέλαβε για επόμενο κουπόνι εισόδου με στοχο τον καθορισμό παραγωγής για το επόμενο μη τερματικό

Page 20: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

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

ΠαράδειγμαΠαράδειγμαstatstat -> -> beginbegin statlist | statlist | SS statlist statlist -> stat -> stat ;; statlist | statlist | endend

Page 21: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

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

Page 22: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

Συντακτική ανάλυσηΣυντακτική ανάλυση: bottom-up: bottom-up

Εκκίνηση από τα φύλλα (συμβολοσει-Εκκίνηση από τα φύλλα (συμβολοσει-ρά εισόδου) ρά εισόδου)

πορεία προς τη ρίζα (αρχικό πορεία προς τη ρίζα (αρχικό σύμβολο) σύμβολο)

με διαδοχική αναγνώριση δεξιού με διαδοχική αναγνώριση δεξιού μέλους συντακτικών κανόνων μέλους συντακτικών κανόνων

και αντικατάσταση με τα αριστερά και αντικατάσταση με τα αριστερά τους μέλητους μέλη..

Page 23: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

Συντακτική ανάλυσηΣυντακτική ανάλυση: bottom-up: bottom-up

Αναλυτές «Αναλυτές «ολίσθησε-ελάττωσεολίσθησε-ελάττωσε»»1. Τοποθέτησε στη στοίβα (ολίσθησε -

shift)σύμβολα εισόδου μέχρι να εμφανισθεί το δεξιό μέλος κάποιου συντακτικού κανόνα στην κορυφή της

2. Αφαίρεσε από τη στοίβα (ελάττωσε – reduce) αυτό το δεξιό μέλος και στη θέση του τοποθέτησε το αντίστοιχο αριστερό του μέλος.

3. Επανέλαβε έως ότου σαρωθεί όλη η συμβολοσειρά εισόδου και μείνει στη στοίβα μόνο το αρχικό σύμβολο της γραμματικής.

Page 24: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

Συντακτική ανάλυσηΣυντακτική ανάλυση: bottom-up: bottom-up

ΠαράδειγμαΠαράδειγμαRule A:Rule A:statstat -> -> beginbegin statlist | statlist | SS

Rule B:Rule B: statlist statlist -> -> stat stat ;; statlist | statlist | endend

Page 25: Λογισμικό Συστήματος

ΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

ΝΕΙΣ

ΑΓΩ

ΓΗ

ΣΤΗ

Ν Ε

ΠΙΣ

ΤΗ

ΜΗ

ΤΩ

Ν Υ

ΠΟ

ΛΟ

ΓΙΣ

ΤΩ

Ν

Γέννηση κώδικαΓέννηση κώδικα

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

Δημιουργία εντολών σε γλώσσα Δημιουργία εντολών σε γλώσσα μηχανήςμηχανής για κάθε συντακτικό στοιχείο για κάθε συντακτικό στοιχείο