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

Σχετικά έγγραφα
εύτερη γενιά: γλώσσα assembly

ΚΕΦΑΛΑΙΟ 6: Γλώσσες Προγραμματισμού

ΚΕΦΑΛΑΙΟ 6: Γλώσσες Προγραμματισμού

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

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

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

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

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

6. Εισαγωγή στον προγραµµατισµό

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

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

Α. Ερωτήσεις Ανάπτυξης

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Εισαγωγή στον Προγραμματισμό

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

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

Εισαγωγή στον προγραμματισμό

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

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

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

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

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

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

Κεφάλαιο 2: Μεταφραστές

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

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

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

Κεφάλαιο 6 Εισαγωγή στον Προγραμματισμό. 26-Jun-15 ΑΕΠΠ - Καραμαούνας Π. 1

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

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος

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

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια.

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

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

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

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

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου

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

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

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

Προγραµµατισµός Η/Υ. Μέρος2

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 6 ο

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

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

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

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

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

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

Λογισµικό (Software SW) Γλώσσες

6. 1 Η έννοια του προγράμματος

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

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

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

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας

ΚΕΦΑΛΑΙΟ 4ο. Α. Το περιβάλλον της Microsoft Fortran Powerstation

Μέρος Α. Λογισµικό & Προγράµµατα συστήµατος και εφαρµογών ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ. Το σηµερινό µάθηµα. Λογισµικό συστηµάτων & εφαρµογών

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

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

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

ΚΕΦΑΛΑΙΟ VI. Εισαγωγή στον προγραμματισμό

Μεταγλωττιστές Ενότητα 1: Εισαγωγή

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΔΟΜΗΜΕΝΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γ ΕΠΑΛ

ΜΑΘΗΜΑ: Μεταγλωττιστές

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly

Μαλούτα Θεανώ Σελίδα 1

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

Εισαγωγή στον δομημένο προγραμματισμό

Αρχιτεκτονικές Υπολογιστών

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

Αποτελέσματα προόδου

Transcript:

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

6.1 Γενιές γλωσσών προγραµµατισµού 2

Δεύτερη γενιά: γλώσσα assembly Ένα µνηµονικό σύστηµα για την αναπαράσταση προγραµµάτων Χρήση µνηµονικών ονοµάτων για την αναπαράσταση εντολών. Ονόµατα για όλους τους καταχωρητές. Τα αναγνωριστικά (identifiers) είναι περιγραφικά ονόµατα για τις θέσεις µνήµης, τα οποία επιλέγονται από τον προγραµµατιστή. 3

Χαρακτηριστικά µίας γλώσσας assembly Υπάρχει ακριβής αντιστοιχία µεταξύ των εντολών της µηχανής και των εντολών assembly. O προγραµµατιστής πρέπει να σκέφτεται σε γλώσσα µηχανής. Εγγενώς εξαρτηµένη από τη µηχανή. Η µετάφραση σε γλώσσα µηχανής γίνεται από ένα πρόγραµµα που ονοµάζεται assembler. 4

Παράδειγµα γλώσσας assembly Γλώσσα µηχανής Γλώσσα assembly 156C 166D 5056 30CE C000 LD R5, Price LD R6, ShippingCharge ADDI R0, R5 R6 ST R0, TotalCost HLT 5

Τρίτη γενιά γλωσσών Υψηλού επιπέδου αρχέτυπα (primitives). Ανεξάρτητες από τη µηχανή (τις περισσότερες φορές). Παραδείγµατα: FORTRAN, COBOL Κάθε αρχέτυπο ανταποκρίνεται σε µία µικρή ακολουθία εντολών γλώσσας µηχανής. Μεταφράζεται σε γλώσσα µηχανής από ένα πρόγραµµα που λέγεται compiler (µεταγλωττιστής). 6

Η εξέλιξη των προγραµµατιστικών µοντέλων 7

Μια συνάρτηση για τον ισολογισµό µπλοκ επιταγών η οποία έχει κατασκευαστεί από απλούστερες συναρτήσεις Total_credits γενικό άθροισµα Credits Temp_balance Old_balance + Total_credits Total_debits γενικό άθροισµα Debits Balance Temp_balance Total_debits (Find_diff (Find_sum Old_balance Credits) (Find_sum Debits)) 8

Υλοποίηση Γλώσσας 9

Υλοποίηση γλώσσας: Μετάφραση Χρειαζόµαστε µετάφραση για εντολές σε γλώσσα υψηλού επιπέδου δοµές δεδοµένων (υψηλού επιπέδου) i:=0; while i<n do {A[i]:=B[i]; i:=i+1} δύο στρατηγικές: διερµηνεία (interpretation) µεταγλωττισµός (compilation) 10

Διερµηνεία Μεταφράζει και εκτελεί το πρόγραµµα υψηλού επιπέδου εντολή προς εντολή ξεκίνα από την αρχή του προγράµµατος υψηλού επιπέδου repeat µετάφρασε την επόµενη εντολή υψηλού επιπέδου εκτέλεσε την µετάφραση της εντολής µε τα αντίστοιχα δεδοµένα until τέλος προγράµµατος 11

Μεταγλωττισµός Compiler: µεταφράζει µία φορά το πρόγραµµα υψηλού επιπέδου (source code) σε πρόγραµµα γλώσσας µηχανής (object code) ξεκίνα από την αρχή του προγράµµατος υψηλού επιπέδου repeat µετάφρασε την επόµενη εντολή υψηλού επιπέδου until τέλος προγράµµατος κάνε τις τελικές αλλαγές στον µεταφρασµένο κώδικα ώστε να είναι έτοιµος για εκτέλεση 12

Μεταγλωττισµός vs. Διερµηνεία Interpreters: το πρόγραµµα τρέχει λίγες φορές ταχύτητα όχι σηµαντική λίγη µνήµη ανακάλυψη λαθών (debugging) Compilers: το ίδιο πρόγραµµα τρέχει πολλές φορές ταχύτητα σηµαντική 13

Η διαδικασία της µεταγλώττισης Πηγαίο Πρόγραµµα Λεκτικός Αναλυτής Συντακτικός Αναλυτής Γεννήτρια κώδικα Πρόγραµµα αντικείµενο 14

Περιγραφή σύνταξης Α. Διαγράµµατα σύνταξης if Συνθήκη then Εντολή else Εντολή Β.Κανόνες BNF if_stmt -> if condition then stmt if condition then stmt else stmt if x<1 then y=2 else z=1 15

Παράδειγµα Ο Γιάννης είναι καλός µαθητής και έχει κακό χαρακτήρα Γραµµατική (σύνταξη): προτ -> απλή_προτ σύνθ_προτ απλή_προτ -> υποκ ρήµα επίθ αντικ υποκ ρήµα αντικ σύνθ_προτ -> απλή_προτ και απλή_προτ απλή_προτ και σύνθ_προτ Βασικοί τύποι λέξεων (τερµατικά σύµβολα): {υποκ, ρήµα, επίθ, αντικ, και} Λεγικογραφική περιγραφή: υποκ -> Γιάννης, Κώστας, άνδρας ρήµα -> έχει, κάνει,... 16

Ορισµός σύνταξης BNF Γραµµατικές: BNF σύνταξη κανόνες παραγωγής, τερµατικά, µη-τερµατικά σύµβολα τερµατικά σύµβολα (tokens): στοιχειώδη σύµβολα, δεν αναλύονται περισσότερο ( τύποι λέξεων...) µη-τερµατικά σύµβολα: συντακτικές κατηγορίες (προτάσεις, υπο-προτάσεις,...) δυνατότητα αναδροµικών ορισµών Γλώσσα: σύνολο σωστών ακολουθιών τερµατικών συµβόλων 17

Παράδειγµα Αλφάβητο Σ = {a,b,c} = σύνολο λέξεων (tokens) S -> AB A -> Ab A -> a B -> c A a S = τερµατικά σύµβολα B b A A b a S B c A A b A b Γλώσσα = σύνολο σωστών προτάσεων = {ac,abc,abbc,abbbc, } Σωστή πρόταση: υπάρχει προτασιακό δένδρο που να την δικαιολογεί a S B c 18

Παράδειγµα γλώσσας Γλώσσα = απλές αριθµητικές εκφράσεις µε 0,...,9 και +,-,*,/ E -> E + E E E E * E E / E -E E -> 0 1 2 3 4 5 6 7 8 9 E 9-2*5 είναι σωστή πρόταση; E - E 6+*4 είναι σωστή πρόταση; Σηµασία πρότασης; 9 E E * 2 5 συντακτικό δένδρο 19

Ασάφεια E -> E + E E E E * E E / E -E E -> 0 1 2 3 4 5 6 7 8 9 τι σηµαίνει 9-2*5 ; E E - E E E * E 9 E E E E 5 * 2 5 9-2 2 συντακτικά δένδρα! ποιο από τα δύο εννοούµε; 20

Διαγράµµατα σύνταξης που περιγράφουν τη δοµή µίας απλής αλγεβρικής παράστασης Ε Τ Ε όρος = Term (Τ) παράσταση = Εxpression (Ε) παράγοντας = Factor (F) Τ F Τ F Ισοδύναµη γραµµατική: E -> T+E T-E T T -> F*T F/T F F -> -E (E) x y z 21

Το δέντρο συντακτικής ανάλυσης για τη συµβολοσειρά x+y*z Ε Τ Ε Ε Τ Ε Τ F Τ F Τ F Τ F E -> T+E T-E T T -> F*T F/T F F -> -E (E) x y z F 22

Παράδειγµα συνθήκης ελέγχου statement -> conditional assignment loop condition -> conditional -> if condition then statement else statement if condition then statement 23

Δύο διαφορετικά δέντρα συντακτικής ανάλυσης για την εντολή αν Β1 τότε αν Β2 τότε αλλιώς S1 αλλιώς S2 24

Κανονικές εκφράσεις Σαν τις γραµµατικές BNF, χωρίς αναδροµή Περιγράφουν απλά σύνολα από ακολουθίες συµβόλων (π.χ. όλες οι ακολουθίες από α,β που αρχίζουν µε α και περιέχουν ένα τουλάχιστον β) Αλφάβητο: {α,β,γ} `Μέτα-σύµβολα : ( ) : Boolean or α(β α φ)αβ = {αβαβ,αααβ, αφαβ} + : επανάληψη 1 ή περισσότερες φορές * : επανάληψη 0 ή περισσότερες φορές α * β = {β,αβ,ααβ,...}, (α β) + γ = {(α β)γ,(α β)(α β)γ,...} 25

Παράδειγµα statement -> conditional loop assignment conditional -> if condition then statement loop -> while condition do statement assignment -> set id to expression expression -> id operator id operator -> + - condition -> id relation num relation -> eq neq id : letter (letter digit) num : digit (digit)* if : if eq : = then : then... neq :!= * letter : a b c... digit : 0 1... L G Συντακτική περιγραφή (σύνταξη προτάσεων από tokens) Λεξικογραφική περιγραφή (σύνταξη των tokens από χαρακτήρες) 26

statement -> conditional (1) statement -> loop (2) statement -> assignment (3) conditional -> if condition then statement (4) loop -> while condition do statement (5) assignment -> set id to expression (6) expression -> id operator id (7) operator -> + (8) operator -> - (9) condition -> id relation num (10) relation -> eq (11) relation -> neq (12) 27

Παράδειγµα Συντακτική ανάλυση συντακτικό δένδρο condition relation statement conditional statement assignment expression operator if id neq num then set id to id + id b if b x b b! = b 1 then b set b y b to b x + y Λεξικογραφική ανάλυση 28

Οι φάσεις της µεταγλώττισης πηγαίο πρόγραµµα σε γλώσσα υψηλού επιπέδου αφαιρεί άχρηστη πληροφορία Λεξικογραφική ανάλυση L... bif bbx17=bmaxb-3... blank space πίνακας αριθµ. σταθερών τιµή θέση 3 4001 100 101 41 12 3 12 19 13 if id eq id - num Συντακτική ανάλυση G nil nil nil Γέννηση κώδικα συντακτικό δένδρο x17 integer 1445 max integer 1447 αντικείµενο πρόγραµµα σε γλώσσα µηχανής πίνακας συµβόλων όνοµα τύπος θέση στη µνήµη y integer 1446 29

Συντακτική ανάλυση abcdbwbwbw Λεξικογραφική ανάλυση Συντακτική ανάλυση Γέννηση κώδικα tokens Γραµµατική G Κατασκευή συντακτικού δένδρου (parse tree) bottom up αρχικό σύµβολο top - down Πίνακας συµβόλων τερµατικά (tokens) κανόνας της γραµµατικής 30

Γέννηση κώδικα statement conditional statement condition relation assignment expression operator if id neq num then set id to id + id 1000 load R0 1456 1001 load R1 100 1002 subtract R0 R0 R1 1002 jumpzero 1007 1003 load R1 1456 1004 load R2 1457 1005 add R1 R1 R2 1006 store R1 1457 1007... x integer 1456 1 100 y integer 1457 module generate-expression(t) A1:= & of left child generate load R1 A1 A2:= & of right child generate load R2 A2 if op = + then generate add R1 R1 R2 else generate subtract R1 R1 R2 31

Assemblers κώδικας σε γλώσσα assembly (συµβολική γλώσσα) Παράδειγµα γραµµατικής µιας γλώσσας τύπου assembly Assembler statement -> operation address operation -> load store add... address -> id num address op num op -> + - όνοµα (id): διεύθυνση στην µνήµη = µνηµονικός τρόπος να αναφερόµαστε σε διευθύνσεις load A load 3 load A+2 κώδικας µηχανής A 500 501 502 Α <-> θέση 500 32

Ολόκληρη η διαδικασία προετοιµασίας ενός προγράµµατος για εκτέλεση Πηγαίο Πρόγραµµα Μετάφραση Πρόγραµµα Σύνδεση Υποµονάδα Φόρτωση αντικείµενο φόρτωσης Εκτελέσιµο Πρόγραµµα 33