Upload
simone
View
38
Download
0
Embed Size (px)
DESCRIPTION
Λογισμικό Συστήματος. Κλειώ Σγουροπούλου. Λογισμικό συστήματος. Λειτουργικό σύστημα Μεταφραστές γλώσσας (translators) Διερμηνείς ( interpreters) Μεταγλωττιστές (compilers) Εκδότες ( editors) Φορτωτές ( loaders) Συνδέτες ( linkers) Λογισμικό επικοινωνίας. ΓΠΥΕ vs. ΓΜ. - PowerPoint PPT Presentation
Citation preview
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
Λογισμικό ΣυστήματοςΛογισμικό Συστήματος
Κλειώ ΣγουροπούλουΚλειώ Σγουροπούλου
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Λογισμικό συστήματοςΛογισμικό συστήματος
Λειτουργικό σύστημα Λειτουργικό σύστημα Μεταφραστές γλώσσαςΜεταφραστές γλώσσας (translators) (translators)
Διερμηνείς (Διερμηνείς (interpreters)interpreters) Μεταγλωττιστές Μεταγλωττιστές (compilers)(compilers)
Εκδότες (Εκδότες (editors)editors) Φορτωτές (Φορτωτές (loaders)loaders) Συνδέτες (Συνδέτες (linkers)linkers) Λογισμικό επικοινωνίαςΛογισμικό επικοινωνίας
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
ΓΠΥΕ ΓΠΥΕ vs. vs. ΓΜΓΜ
Γλώσσες προγραμματισμού υψηλού Γλώσσες προγραμματισμού υψηλού επιπέδουεπιπέδου Ευκολότερη κατανόησηΕυκολότερη κατανόηση Προστασία από λάθη κατά την έκφραση Προστασία από λάθη κατά την έκφραση
αλγορίθμωναλγορίθμων ΜεταφερσιμότηταΜεταφερσιμότητα / / φορητότηταφορητότητα
Γλώσσες ΜηχανήςΓλώσσες Μηχανής Γρηγορότερα και συντομότερα προγράμματαΓρηγορότερα και συντομότερα προγράμματα Άμεση πρόσβαση σε στοιχεία του υλικούΆμεση πρόσβαση σε στοιχεία του υλικού ΣυντονισμόςΣυντονισμός
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Διερμηνέας Διερμηνέας
Ο διερμηνέας είναι ένα πρόγραμμα το οποίο Ο διερμηνέας είναι ένα πρόγραμμα το οποίο διαβάζει, μεταφράζει και εκτελεί διαβάζει, μεταφράζει και εκτελεί δήλωση προς δήλωση προς δήλωσηδήλωση προγράμματα που έχουν γραφτεί σε μια προγράμματα που έχουν γραφτεί σε μια γλώσσα υψηλού επιπέδουγλώσσα υψηλού επιπέδου
αρχή προγράμματος υψηλού επιπέδουαρχή προγράμματος υψηλού επιπέδου
repeatrepeat
μετάφρασε την επόμενη δήλωση υψηλού επιπέδουμετάφρασε την επόμενη δήλωση υψηλού επιπέδου
ifif κανένα συντακτικό λάθοςκανένα συντακτικό λάθος
thenthen εκτέλεσεεκτέλεσε
elseelse ανάφερε λάθοςανάφερε λάθος
until until τέλος προγράμματος υψηλού επιπέδου ή τέλος προγράμματος υψηλού επιπέδου ή συντακτικό λάθοςσυντακτικό λάθος
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
ΜεταγλωττιστήςΜεταγλωττιστής
Ο μεταγλωττιστής είναι ένα πρόγραμμα το Ο μεταγλωττιστής είναι ένα πρόγραμμα το οποίο διαβάζει προγράμματα που έχουν γραφτεί οποίο διαβάζει προγράμματα που έχουν γραφτεί σε μια γλώσσα υψηλού επιπέδου– την σε μια γλώσσα υψηλού επιπέδου– την πηγαίαπηγαία (source) (source) γλώσσα – και τα μεταφράζει σε γλώσσα – και τα μεταφράζει σε ισοδύναμα προγράμματα σε μια άλλη γλώσσα – ισοδύναμα προγράμματα σε μια άλλη γλώσσα – γώσσα γώσσα μεταφοράςμεταφοράς (target)(target)
αρχή προγράμματος υψηλού επιπέδουαρχή προγράμματος υψηλού επιπέδου
repeatrepeat
μετάφρασε την επόμενη δήλωση υψηλού μετάφρασε την επόμενη δήλωση υψηλού επιπέδουεπιπέδου
until until τέλος προγράμματος υψηλού επιπέδουτέλος προγράμματος υψηλού επιπέδου
εκτέλεση ολόκληρου του μεταφρασμένου εκτέλεση ολόκληρου του μεταφρασμένου προγράμματοςπρογράμματος
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Μεταφραστές Μεταφραστές vs. vs. ΜεταγλωττιστέςΜεταγλωττιστές
ΜεταφραστέςΜεταφραστές Πολλαπλή μετάφραση ίδιων δηλώσεων Πολλαπλή μετάφραση ίδιων δηλώσεων
προγράμματος (επιβάρυνση στην ταχύτητα προγράμματος (επιβάρυνση στην ταχύτητα εκτέλεσης)εκτέλεσης)
Μεγαλύτερη ικανότητα εντοπισμού Μεγαλύτερη ικανότητα εντοπισμού σφαλμάτωνσφαλμάτων
Ενδείκνυται κατά την ανάπτυξηΕνδείκνυται κατά την ανάπτυξη ΜεταγλωττιστέςΜεταγλωττιστές
Επαναληπτική εκτέλεση μεταγλωττισμένων Επαναληπτική εκτέλεση μεταγλωττισμένων προγραμμάτωνπρογραμμάτων
ΤαχύτηταΤαχύτητα Ενδείκνυται για παραγωγική χρήσηΕνδείκνυται για παραγωγική χρήση
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Το Το ““περιβάλλονπεριβάλλον”” του του μεταγλωττιστήμεταγλωττιστή
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
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
ΣύνθεσηΣύνθεση
ΑνάλυσηΑνάλυση
Φάσεις και προϊόντα Φάσεις και προϊόντα μεταγλώττισηςμεταγλώττισης
Λεκτική ανάλυσηΛεκτική ανάλυση
Συνακτική ανάλυσηΣυνακτική ανάλυση
Σημασιολογική ανάλυσηΣημασιολογική ανάλυση
αρχικό πρόγραμμααρχικό πρόγραμμα
λεκτικές μονάδεςλεκτικές μονάδες
συντακτικό δέντροσυντακτικό δέντρο
Παραγωγή ενδ. κώδικαΠαραγωγή ενδ. κώδικα
Βελτιστοποίηση ενδ. κώδικαΒελτιστοποίηση ενδ. κώδικα
Παραγωγή τελικού κώδικαΠαραγωγή τελικού κώδικα
Βελτιστοποίηση τελικού κώδικαΒελτιστοποίηση τελικού κώδικα
συντακτικό δέντροσυντακτικό δέντρο
ενδιάμεσος κώδικαςενδιάμεσος κώδικας
τελικός κώδικαςτελικός κώδικας
τελικό πρόγραμματελικό πρόγραμμα
ενδιάμεσος κώδικαςενδιάμεσος κώδικας
ΠίνακαςΠίνακαςσυμβόλωνσυμβόλων
ΧειριστήςΧειριστήςσφαλμάτωνσφαλμάτων
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
ΠαράδειγμαΠαράδειγμα
Αρχείο εισόδου Αρχείο εισόδου ““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;
}}
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Λεξική ανάλυσηΛεξική ανάλυση (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’)
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Λεξική ανάλυσηΛεξική ανάλυση (scanning) (scanning)
Αφαίρεση κενών και περιττών Αφαίρεση κενών και περιττών χαρακτήρωνχαρακτήρων((tabs, new lines)tabs, new lines)
ΑφαίρεσηΑφαίρεση των σχολίωντων σχολίων Έλεγχος λαθώνΈλεγχος λαθών
Έλεγχος μεγέθους Έλεγχος μεγέθους identifiersidentifiers//string constants, string constants, βάσει κανόνων γλώσσαςβάσει κανόνων γλώσσας
Έλεγχος μη νόμιμων Έλεγχος μη νόμιμων identifiersidentifiers Έλεγχος λανθασμένων αναθέσεωνΈλεγχος λανθασμένων αναθέσεων
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
ΠαράδειγμαΠαράδειγμα: : Λεξική ανάλυσηΛεξική ανάλυση
Είσοδος: ακολουθία χαρακτήρωνΕίσοδος: ακολουθία χαρακτήρων
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
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
ΓραμματικέςΓραμματικές
Ο ορισμός μιας γλώσσας Ο ορισμός μιας γλώσσας προγραμματισμού περιλαμβάνειπρογραμματισμού περιλαμβάνει:: Συντακτικό: Συντακτικό: κανόνες για την κατασκευή κανόνες για την κατασκευή
‘αποδεκτών’ διατυπώσεων. Ο τρόπος ‘αποδεκτών’ διατυπώσεων. Ο τρόπος εφαρμογής των συντακτικών κανόνων εφαρμογής των συντακτικών κανόνων καθορίζει τη συντακτική ορθότητα ενός καθορίζει τη συντακτική ορθότητα ενός προγράμματοςπρογράμματος
Σημασιολογία: Σημασιολογία: μοντελοποίηση δεδομένων και μοντελοποίηση δεδομένων και λειτουργιών, ισοδυναμίες προγραμμάτων, λειτουργιών, ισοδυναμίες προγραμμάτων, κ.λπ. κ.λπ.
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Συντακτικό: Συντακτικό: συνήθως καθορίζεται από συνήθως καθορίζεται από γραμματικές χωρίς συμφραζόμεναγραμματικές χωρίς συμφραζόμενα (ΓΧΣ) (ΓΧΣ)((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
Κάθε Κάθε παραγωγήπαραγωγή αποτυπώνει έναν έγκυρο αποτυπώνει έναν έγκυρο τρόπο με βάση τον οποίο τα μη-τερματικά τρόπο με βάση τον οποίο τα μη-τερματικά μπορούν να αναπτυχθούν σε μπορούν να αναπτυχθούν σε συμβολοσειρές τερματικών και μη-συμβολοσειρές τερματικών και μη-τερματικώντερματικών
ΓραμματικέςΓραμματικές
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Ορισμός ΓΧΣΟρισμός ΓΧΣ
Μια ΓΧΣ περιλαμβάνει:Μια ΓΧΣ περιλαμβάνει: 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
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Ορισμός ΓΧΣΟρισμός ΓΧΣ
Με αφετηρία το αρχικό σύμβολο και Με αφετηρία το αρχικό σύμβολο και συνεχή αντικατάσταση κάθε μη-συνεχή αντικατάσταση κάθε μη-τερματικού με το δεξί μέρος της τερματικού με το δεξί μέρος της αντίστοιχης παραγωγής, προκύπτουν αντίστοιχης παραγωγής, προκύπτουν συμβολοσειρές τερματικώνσυμβολοσειρές τερματικών
Μια τέτοια συμβολοσειρά μη-τερματικών Μια τέτοια συμβολοσειρά μη-τερματικών καλείται καλείται προτασιακή μορφήπροτασιακή μορφή
Η Η γλώσσαγλώσσα μιας γραμματικής είναι το μιας γραμματικής είναι το σύνολο όλων των προτασιακών μορφών σύνολο όλων των προτασιακών μορφών που μπορούν να παραχθούν από το αρχικό που μπορούν να παραχθούν από το αρχικό της σύμβολο της σύμβολο
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Συντακτική ανάλυση Συντακτική ανάλυση (parsing)(parsing)
Έλεγχος γραμματικής ορθότητας Έλεγχος γραμματικής ορθότητας προγράμματος εισόδου προγράμματος εισόδου
Κατασκευή αντίστοιχου Κατασκευή αντίστοιχου συντακτικού συντακτικού δένδρουδένδρου ( (Abstract Syntax Tree)Abstract Syntax Tree)
Δυο γενικές κατηγορίες Δυο γενικές κατηγορίες συντακτικών αναλυτώνσυντακτικών αναλυτών "συντακτικοί αναλυτές από πάνω προς "συντακτικοί αναλυτές από πάνω προς
τα κάτω"τα κάτω" (top-down parsers) (top-down parsers) "συντακτικοί αναλυτές από κάτω προς "συντακτικοί αναλυτές από κάτω προς
τα πάνω"τα πάνω" ( (bottombottom--upup parsers) parsers)
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Συντακτική ανάλυσηΣυντακτική ανάλυση: top-down: top-down
Εκκίνηση από ρίζα δένδρου (αρχικό Εκκίνηση από ρίζα δένδρου (αρχικό σύμβολο γραμματικής) σύμβολο γραμματικής)
πορεία προς τα φύλλα πορεία προς τα φύλλα (συμβολοσειρά εισόδου) (συμβολοσειρά εισόδου)
με διαδοχικές αντικαταστάσεις των με διαδοχικές αντικαταστάσεις των μη-τερματικών συμβόλωνμη-τερματικών συμβόλων
χρησιμοποιώντας τους συντακτικούς χρησιμοποιώντας τους συντακτικούς κανόνες της γραμματικήςκανόνες της γραμματικής από από αριστερά προς τα δεξιάαριστερά προς τα δεξιά
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Συντακτική ανάλυσηΣυντακτική ανάλυση: : toptop-down-down
1. Ξεκίνα από το ΑΣ
2. Εξέτασε κάθε εναλλακτική παραγωγή για το ΑΣ
3. Σύγκρινε το κουπόνι εισόδου με το πρώτο σύμβολο του δεξιού μέρους κάθε εναλλακτικής παραγωγής
4. Αν βρεθεί αντίστοιχη παραγωγή χρησιμοποίησέ τη για επέκταση δένδρου
5. Επανέλαβε για επόμενο κουπόνι εισόδου με στοχο τον καθορισμό παραγωγής για το επόμενο μη τερματικό
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Συντακτική ανάλυσηΣυντακτική ανάλυση: top-down: top-down
ΠαράδειγμαΠαράδειγμαstatstat -> -> beginbegin statlist | statlist | SS statlist statlist -> stat -> stat ;; statlist | statlist | endend
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Συντακτική ανάλυσηΣυντακτική ανάλυση: top-down: top-down
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Συντακτική ανάλυσηΣυντακτική ανάλυση: bottom-up: bottom-up
Εκκίνηση από τα φύλλα (συμβολοσει-Εκκίνηση από τα φύλλα (συμβολοσει-ρά εισόδου) ρά εισόδου)
πορεία προς τη ρίζα (αρχικό πορεία προς τη ρίζα (αρχικό σύμβολο) σύμβολο)
με διαδοχική αναγνώριση δεξιού με διαδοχική αναγνώριση δεξιού μέλους συντακτικών κανόνων μέλους συντακτικών κανόνων
και αντικατάσταση με τα αριστερά και αντικατάσταση με τα αριστερά τους μέλητους μέλη..
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Συντακτική ανάλυσηΣυντακτική ανάλυση: bottom-up: bottom-up
Αναλυτές «Αναλυτές «ολίσθησε-ελάττωσεολίσθησε-ελάττωσε»»1. Τοποθέτησε στη στοίβα (ολίσθησε -
shift)σύμβολα εισόδου μέχρι να εμφανισθεί το δεξιό μέλος κάποιου συντακτικού κανόνα στην κορυφή της
2. Αφαίρεσε από τη στοίβα (ελάττωσε – reduce) αυτό το δεξιό μέλος και στη θέση του τοποθέτησε το αντίστοιχο αριστερό του μέλος.
3. Επανέλαβε έως ότου σαρωθεί όλη η συμβολοσειρά εισόδου και μείνει στη στοίβα μόνο το αρχικό σύμβολο της γραμματικής.
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Συντακτική ανάλυσηΣυντακτική ανάλυση: bottom-up: bottom-up
ΠαράδειγμαΠαράδειγμαRule A:Rule A:statstat -> -> beginbegin statlist | statlist | SS
Rule B:Rule B: statlist statlist -> -> stat stat ;; statlist | statlist | endend
ΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
ΝΕΙΣ
ΑΓΩ
ΓΗ
ΣΤΗ
Ν Ε
ΠΙΣ
ΤΗ
ΜΗ
ΤΩ
Ν Υ
ΠΟ
ΛΟ
ΓΙΣ
ΤΩ
Ν
Γέννηση κώδικαΓέννηση κώδικα
Εκχώριση ελεύθερης μνήμης στα Εκχώριση ελεύθερης μνήμης στα δεδομένα που διαχειρίζεται το δεδομένα που διαχειρίζεται το πρόγραμμα πρόγραμμα Χρήση δηλωτικής πληροφορίαςΧρήση δηλωτικής πληροφορίας
Δημιουργία εντολών σε γλώσσα Δημιουργία εντολών σε γλώσσα μηχανήςμηχανής για κάθε συντακτικό στοιχείο για κάθε συντακτικό στοιχείο