Σχεδίαση Γλωσσών & Μεταγλωττιστζς

Σχετικά έγγραφα
Σχεδίαση Γλωσσών & Μεταγλωττιστζς

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

Θεωρία τησ Πληροφορίασ (Θ) ΔΙΔΑΚΩΝ: Δρ. Αναςτάςιοσ Πολίτησ

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

ΑΝΟΙΧΣΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΣΑ ΠΛΗΡΟΦΟΡΙΚΗ & ΑΛΓΟΡΙΘΜΟΙ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

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

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

Υπολογιστικά Συστήματα

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Αντικειμενοστραφής Προγραμματισμός

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ(Visual Basic)

Πληροφοριακά Συστήματα & Περιβάλλον Ασκήσεις

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

EMUNI A.U.Th. SUMMER SCHOOL

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

Δομημένος Προγραμματισμός

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

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

Σχεδίαση Ψηφιακών Συστημάτων

Αγορές Χρήματος & Κεφαλαίου

Λογιστικές Εφαρμογές Εργαστήριο

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 4: Έλεγχος Ροής. Κ.

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

3 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ ( while, do while )

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Δομημένος Προγραμματισμός

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

Τεχνικές Προγραμματισμού και Χρήση Λογισμικού Η/Υ στις Κατασκευές

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

ΣΕΙ Δυτικήσ Μακεδονίασ, Παράρτημα Καςτοριάσ Τμήμα Πληροφορικήσ και Τεχνολογίασ Υπολογιςτών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

Προέλευση της Pazcal ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

Ανάπηςξη Δθαπμογών ζε Ππογπαμμαηιζηικό Πεπιβάλλον

Μοντελοποίηση Λογικών Κυκλωμάτων

x-1 x (x-1) x 5x 2. Να απινπνηεζνύλ ηα θιάζκαηα, έηζη ώζηε λα κελ ππάξρνπλ ξηδηθά ζηνπο 22, 55, 15, 42, 93, 10 5, 12

Σχεδίαση Ψηφιακών Συστημάτων

Εφαρμογές Συστημάτων Γεωγραφικών Πληροφοριών

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

ΣΥΣΤΗΜΑΤΑ ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ. 1. Να ιπζνύλ ηα ζπζηήκαηα. 1 0,3x 0,1y x 3 3x 4y 2 4x 2y ( x 1) 6( y 1) (i) (ii)

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Γενικά Μαθηματικά ΙΙ

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

Δομημένος Προγραμματισμός

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

ΘΕΟΛΟΓΙΑ ΚΑΙΝΗΣ ΔΙΑΘΗΚΗΣ

Εισαγωγή στους Αλγορίθμους

ΕΞΙΣΩΣΕΙΣ. (iv) (ii) (ii) (ii) 5. Γηα ηηο δηάθνξεο ηηκέο ηνπ ι λα ιπζνύλ νη εμηζώζεηο : x 6 3 9x

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Ειςαγωγή ςτη διδακτική των γλωςςών

{ int a = 5; { int b = 7; a = b + 3;

Ιστορία της μετάφρασης

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

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

Πληροφορική ΙΙ Θεματική Ενότητα 5

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

Παλαιοσλαβική Γλώσσα. Ενότητα 13: Μορφολογία Τα ρήματα. Αλεξάνδρα Ιωαννίδου. Τμήμα Σλαβικών Σπουδών

ΜΑΘΗΜΑ / ΤΑΞΗ : ΗΛΕΚΤΡΟΛΟΓΙΑ/Γ ΛΥΚΕΙΟΥ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 08/09/2014

Μικροβιολογία & Υγιεινή Τροφίμων

Μηχανολογικό Σχέδιο Ι

Θεωρία Πιθανοτήτων & Στατιστική

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Εισαγωγή στους Αλγορίθμους

ΠΟΤΔΗ ΣΗ ΤΝΟΠΣΙΚΗ ΠΑΡΑΔΟΗ ΚΑΙ ΣΗΝ Q

Δομές Δεδομένων. Ενότητα 1: Εισαγωγή-Υλοποίηση του ΑΤΔ Σύνολο με Πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

τατιςτική ςτην Εκπαίδευςη II

242 - Ειζαγωγή ζηοσς Η/Υ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Πληροφορική. Εργαστηριακή Ενότητα 8 η : Γραφήματα

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Aντιπτζριςη (ΕΠ027) Ενότητα 10

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Aντιπτζριςθ (ΕΠ027) Ενότθτα 12

Εισαγωγή στην πληροφορική

Οντοκεντρικός Προγραμματισμός

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Δομημένος Προγραμματισμός

Οντοκεντρικός Προγραμματισμός

Προχωρημένες έννοιες προγραμματισμού σε C

Transcript:

ΑΡΙΣΟΣΕΛΕΙΟ ΠΑΝΕΠΙΣΗΜΙΟ ΘΕΑΛΟΝΙΚΗ ΑΝΟΙΚΣΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΣΑ Σχεδίαση Γλωσσών & Μεταγλωττιστζς Ενότητα 16: Παραγωγή Κώδικα για Εντολζσ Ελζγχου Ροήσ Επ. Καθ. Π. Κατςαρόσ Σμήμα Πληροφορικήσ

Άδειεσ Χρήςησ Σο παρόν εκπαιδευτικό υλικό υπόκειται ςε άδειεσ χρήςησ Creative Commons. Για εκπαιδευτικό υλικό, όπωσ εικόνεσ, που υπόκειται ςε άλλου τφπου άδεια χρήςησ, η άδεια χρήςησ αναφζρεται ρητώσ.

Χρηματοδότηςη Σο παρόν εκπαιδευτικό υλικό ζχει αναπτυχθεί ςτα πλαίςια του εκπαιδευτικοφ ζργου του διδάςκοντα. Σο ζργο «Ανοικτά Ακαδημαϊκά Μαθήματα ςτο Αριςτοτζλειο Πανεπιςτήμιο Θεςςαλονίκησ» ζχει χρηματοδοτήςει μόνο τη αναδιαμόρφωςη του εκπαιδευτικοφ υλικοφ. Σο ζργο υλοποιείται ςτο πλαίςιο του Επιχειρηςιακοφ Προγράμματοσ «Εκπαίδευςη και Δια Βίου Μάθηςη» και ςυγχρηματοδοτείται από την Ευρωπαϊκή Ζνωςη (Ευρωπαϊκό Κοινωνικό Σαμείο) και από εθνικοφσ πόρουσ.

Ενηολέρ ελέγσος ποήρ If-then-else Γηαθιάδωζε αλάινγα κε ην απνηέιεζκα ινγηθήο έθθξαζεο Βξόρνη (loops) Απνηίκεζε ζπλζεθώλ πξηλ από ην loop (αλ ρξεηάδεηαη) Απνηίκεζε ζπλζήθεο κεηά από ην loop Γηαθιάδωζε ζηελ αξρή, αλ ηζρύεη ε ζπλζήθε While, for, do θαη until πινπνηνύληαη όια έηζη έλεγχος σώμα loop έλεγχος επόμενο block 4

Ενηολέρ ελέγσος ποήρ: δομή κώδικα S if E then S 1 else S 2 S while E do S 1 E.true: E.code S 1.code ζηο E.true αν η E είναι true ζηο E.false αν η E είναι false S.begin: E.true: E.code S 1.code ζηο E.true ζηο E.false goto S.next goto S.begin E.false: S 2.code E.false: S.next: 5

Ενηολέρ ελέγσος ποήρ: παπαγωγή κώδικα Παραγωγές S if E then S 1 else S 2 S while E do S 1 S S 1 ; S 2 Ιδιόηηηες : S.code: ζειρά ενηολών ποσ παράγονηαι για ηην S S.next: εηικέηα για ηην ενηολή ποσ θα εκηελεζηεί αμέζως μεηά ηην S (η S.next είναι κληρονομήζιμη ιδιόηηηα) Σημαζιολογικοί κανόνες E.true newlabel(); E.false newlabel(); S 1.next S. next; S 2.next S. next; S.code E.code gen(e.true : ) S 1.code gen( goto S.next) gen(e.false : ) S 2.code ; S.begin newlabel(); E.true newlabel(); E.false S. next; S 1.next S. begin; S.code gen(s.begin : ) E.code gen(e.true : ) S 1.code gen( goto S.begin); S 1.next newlabel(); S 2.next S.next; S.code S Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 1.code gen(s 1.next : ) S Σεηάξηε, 23 Ινπιίνπ 2.code 2014 6

Παπάδειγμα ενηολήρ ελέγσος ποήρ Απόζπαζμα πηγαίοσ κώδικα: while (a < b) { if (c < d) x = y + z; else x = y z L1: if a < b goto L2 goto LNext L2: if c < d goto L3 goto L4 L3: t1 := y + z x := t1 goto L1 L4: t2 := y z x := t2 goto L1 LNext:... 7

Backpatching Οη E.true, E.false, S.next κπνξεί λα κελ είλαη εθηθηό λα ππνινγηζζνύλ κε έλα πέξαζκα (είλαη θιεξνλνκήζηκεο ηδηόηεηεο) Σν backpatching είλαη κία ηερληθή δεκηνπξγίαο εηηθεηώλ E.true, E.false, S.next θαη εηζαγωγήο ηνπο ζηηο θαηάιιειεο ζέζεηο θώδηθα κε έλα κόλν πέξαζκα Βαζηθή ηδέα Γηαηεξνύκε ηηο ιίζηεο E.truelist, E.falselist, S.nextlist E.truelist: ε ιίζηα ηωλ εληνιώλ όπνπ πξέπεη λα ζπκπιεξωζεί ε εηηθέηα γηα ην E.true όηαλ απηή γίλεη δηαζέζηκε S.nextlist: ε ιίζηα ηωλ εληνιώλ όπνπ πξέπεη λα ζπκπιεξωζεί ε εηηθέηα γηα ην S.next όηαλ απηή γίλεη δηαζέζηκε Όηαλ γίλνπλ δηαζέζηκεο νη ηηκέο ηωλ E.true, E.false, S.next ηόηε ζπκπιεξώλνληαη νη εηηθέηεο ζηηο εληνιέο πνπ αλαθέξνληαη ζηηο ιίζηεο 8

Παπαγωγή κώδικα ζηο μεηαγλωηηιζηή ηηρ YAPL ην κεηαγιωηηηζηή ηνπ βηβιίνπ παξάγεηαη θώδηθαο assembly απεπζείαο, κε πξνδηαηεηαγκέλε δηάζρηζε ηνπ ζπληαθηηθνύ δέλδξνπ από αξηζηεξά πξνο ηα δεμηά Γε ρξεζηκνπνηείηαη θώδηθαο ηξηώλ δηεπζύλζεωλ ή θάπνηα άιιε κνξθή ελδηάκεζεο αλαπαξάζηαζεο 9

Σςνάπηηζη δημιοςπγίαρ ενηολήρ void emit_code(char keno,char *optr,char *opd1,char *opd2,char *opd3) { char kodikas[81]; if(keno == 'y') { strcpy(kodikas," "); strcat(kodikas,optr); else strcpy(kodikas,optr); if(strlen(opd1) > 0) { strcat(kodikas," "); strcat(kodikas,opd1); if(strlen(opd2) > 0) { strcat(kodikas,","); strcat(kodikas,opd2); if(strlen(opd3) > 0) { strcat(kodikas,","); strcat(kodikas,opd3); strcat(kodikas,"\n"); fputs(kodikas,femitc); 10

Σςνάπηηζη διάζσιζηρ δένδπος void CodeGeneration(AstNode *p, int lev, int lvalue, int leftchild) { switch (p->nodetype) { case astemptyprogram: break; case astprogram: ProcessProgram(p,lev);break; case astemptydeclseq: break; case astdeclseq:processdeclseq(p,lev,lvalue);break; case astdecl:processdecl(p,lev,lvalue);break;... case aststmtseq: ProcessStmtSeq(p,lev,lvalue);break; case astifelsestmt:processifelsestmt(p,lev,lvalue);break; case astifstmt:processifstmt(p,lev,lvalue);break; case astexprstmt: ProcessExprStmt(p,lev,lvalue);break; case astnullstmt:processnullstmt();break; case astreadstmt: ProcessReadStmt(p,lev); break; case astprintstmt: ProcessPrintStmt(p,lev);break; case astdecimconst: ProcessDecimConst(p); break;... case astnoteq: ProcessComp(p,lev,lvalue,leftChild);break; case astassign: ProcessAssign(p,lev,leftChild);break; default: printf("agnosto=%d\n",p->nodetype); 11

Σςνάπηηζη επεξεπγαζίαρ κόμβος PrintStmt void ProcessPrintStmt(AstNode *p, int lev) { symbol *rhs; CodeGeneration(p->pAstNode[0],lev+1,FALSE,FALSE); rhs=pop_vs(); switch( rhs->sclass ) { case MEMORY: case CONSTANT: emit_code('y',"mov","ax",rhs->name,""); emit_code('y',"push","ax","",""); break; case REGISTER: emit_code('y',"push",rhs->name,"",""); break; emit_code('y',"push","10","",""); emit_code('y',"call","_printint","",""); emit_code('y',"add","sp","4",""); discard_symbol(rhs); 12

ΑΡΙΣΟΣΕΛΕΙΟ ΠΑΝΕΠΙΣΗΜΙΟ ΘΕΑΛΟΝΙΚΗ ΑΝΟΙΚΣΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΣΑ Τζλος ενότητας Επεξεργαςία: Εμμανουζλα τάχτιαρη Θεςςαλονίκη, 21/07/2014