Συντακτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Σχετικά έγγραφα
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

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

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

Λεκτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

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

Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Διάλεξθ 4

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

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

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

Εργαστήριο 08 Εισαγωγή στo Yacc

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

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

Παραγωγή Ενδιάµεσου Κώδικα. Γιώργος Μανής

Παραγωγή Ενδιάµεσου Κώδικα

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

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

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

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

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 4 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Υλοποίηση ΣΑ με το bison

Υλοποίηση ΣΑ με το bison

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

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

Παραγωγή Ενδιάμεσου Κώδικα. Διαλζξεις στο μάθημα: Μεταφραστζς Γιώργος Μανής

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

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

Ηλεκτρονικι Επιχειρθςιακι Δράςθ Εργαςτιριο 1

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2

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

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

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

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν

Ιςοηυγιςμζνα δζντρα και Β- δζντρα. Δομζσ Δεδομζνων

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση με το Εργαλείο BISON

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Σημασιολογική Ανάλυση

Παρουσίαση του εργαλείου BISON

ΕΠΑΝΕΚΔΟΗ ΣΙΜΟΛΟΓΙΩΝ ΙΑΝΟΤΑΡΙΟΤ (version )

Κατηγορικές Γραµµατικές

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

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

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

ΟΔΗΓΙΕ ΓΙΑ ΣΗΝ ΕΙΑΓΩΓΗ ΕΚΔΡΟΜΩΝ & ΝΕΩΝ - ΑΝΑΚΟΙΝΩΕΩΝ ΣΗΝ ΙΣΟΕΛΙΔΑ ΣΗ Δ.Δ.Ε. ΘΕΠΡΩΣΙΑ

Δομθμζνοσ Προγραμματιςμόσ. Βαγγζλθσ Οικονόμου Εργαςτιριο 9

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

Παρουσίαση του εργαλείου BISON

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

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

Εγχειρίδιο Χρήςησ Support

Διαχείριςθ του φακζλου "public_html" ςτο ΠΣΔ

ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.1

ΟΔΗΓΙΕ ΔΗΜΙΟΤΡΓΙΑ ΚΑΙ ΡΤΘΜΙΗ ΔΩΡΕΑΝ ΗΛΕΚΣΡΟΝΙΚΟΤ ΣΑΧΤΔΡΟΜΕΙΟΤ ΣΟ GOOGLE (G-MAIL)

ςυςτιματα γραμμικϊν εξιςϊςεων

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

Διαδικασία με βήματα. 1. Αλλάηω το χρϊμα ςκθνικοφ ςε γκρι(#3333).

16. Πίνακεσ και Συναρτήςεισ

5 ΜΕΘΟΔΟΙ - ΠΑΡΑΜΕΤΡΟΙ

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

Εγχειρίδιο Χριςθσ τθσ διαδικτυακισ εφαρμογισ «Υποβολι και παρακολοφκθςθ τθσ ζγκριςθσ Εκπαιδευτικών Πακζτων»

ΑΛΕΞΑΝΔΡΕΙΟ ΣΕΙ ΘΕΑΛΟΝΙΚΗ ΣΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗ Σ.Ε. ΜΑΘΗΜΑ : ΑΛΓΟΡΙΘΜΙΚΗ ΚΑΙ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΔΙΔΑΚΩΝ : ΓΟΤΛΙΑΝΑ ΚΩΣΑ

Βάςεισ Δεδομζνων Ι. Ενότητα 12: Κανονικοποίηςη. Δρ. Τςιμπίρθσ Αλκιβιάδθσ Τμιμα Μθχανικών Πλθροφορικισ ΤΕ

HY437 Αλγόριθμοι CAD

Seventron Limited. Οδηγίες χρήσης EnglishOnlineTests.com

Τι είναι το yacc. Δομή ενός αρχείου yacc. Πρόλογος. ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο. Ο yacc είναι ένας γενικού σκοπού parser generator.

HY340, 2010 Α. Σαββίδης. Slide 3 / 43. Slide 4 / 43

Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Εργαςτιριο 2

Θα χρησιμοποιήσουμε το bison, μια βελτιωμένη έκδοση του yacc. Φροντιστήριο 2ο Εισαγωγή στο YACC. Yacc. Δομή Προγράμματος Yacc

1. Διαχείριςη ενθεμάτων

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

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Εργαστήριο 08 Δημιουργία 1 ου Συντακτικού Αναλυτή

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

assessment.gr USER S MANUAL (users)

Αυτόνομοι Πράκτορες. Αναφορά Εργασίας Εξαμήνου. Το αστέρι του Aibo και τα κόκαλα του

ΗΛΕΚΣΡΟΝΙΚΗ ΤΠΗΡΕΙΑ ΑΠΟΚΣΗΗ ΑΚΑΔΗΜΑΪΚΗ ΣΑΤΣΟΣΗΣΑ

ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ. Ειρινθ Φιλιοποφλου

Μονάδες 6. Μονάδες ΓΑΨΕ Δεν υπάρχει ρίηα 2. ΑΝ Α>0 ΤΟΤΕ 3. ΤΕΛΟΣ_ΑΝ 4. ΑΛΛΙΩΣ 5. ίηα Τ_(Α)

Η Τζχνθ τθσ Αποτελεςματικισ Επικοινωνίασ. Εκπαιδεύηρια: Κα. Χριζηοθή Βαζιλική Conicon Ltd

Πωσ δθμιουργώ φακζλουσ;

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

7η Εργαστηριακή Άσκηση: Προβολή εικόνας στη φόρμα με εκτέλεση ερωτήματος.

1 Εγκατϊςταςη λογαριαςμού

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

17. Πολυδιάςτατοι πίνακεσ

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση II

Διαδικαςία Προγράμματοσ Ωρομζτρθςθσ. (v.1.0.7)

ΟΔΗΓΙΕ ΕΓΚΑΣΑΣΑΗ ΣΗ ΕΦΑΡΜΟΓΗ RCFORB (CLIENT)

ΟΔΗΓΙΕΣ ΓΙΑ ΤΗΝ ΚΑΤΑΧΩΗΣΗ ΣΧΕΔΙΩΝ ΚΑΙΝΟΤΟΜΙΑΣ ΑΡΟ ΦΟΕΙΣ ΚΑΙΝΟΤΟΜΙΑΣ

Μάρκετινγκ V Κοινωνικό Μάρκετινγκ. Πόπη Σουρμαΐδου. Σεμινάριο: Αναπτφςςοντασ μια κοινωνική επιχείρηςη

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

Multi Logo. Προγραμματιςμόσ Η/Υ με Multi Logo. Σχεδίαςη και ανάπτυξη εφαρμογήσ κίνηςησ αντικειμζνου

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι

ΟΔΗΓΙΕ ΓΙΑ ΣΗ ΔΗΜΙΟΤΡΓΙΑ ΚΑΙ ΣΗΝ ΤΠΟΒΟΛΗ ΑΙΣΗΗ ΓΙΑ «ΚΟΤΠΟΝΙ ΚΑΙΝΟΣΟΜΙΑ»

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

HY340, 2009 Α. Σαββίδης Slide 2 / 143. HY340, 2009 Α. Σαββίδης Slide 3 / 143. HY340, 2009 Α. Σαββίδης Slide 4 / 143

Ειδικά Θζματα Βάςεων Δεδομζνων

Transcript:

Συντακτικός Αναλυτής Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Οι Φάςεισ τησ Μεταγλώττιςησ λεκτική ανάλυση ςυντακτικι ανάλυςθ Πίνακασ Συμβόλων ςθμαςιολογικι ανάλυςθ παραγωγι ενδιάμεςου κϊδικα Διαχείριςθ λακϊν βελτιςτοποίθςθ ενδιάμεςου κϊδικα παραγωγι τελικοφ κϊδικα βελτιςτοποίθςθ τελικοφ κϊδικα

Συντακτική Ανάλυςη Λεκτικζσ Μονάδεσ Συντακτικι Ανάλυςθ Συντακτικό δζντρο Διαγνωςτικά μθνφματα

Λειτουργία Συντακτικοφ Αναλυτή Γίνεται ζλεγχοσ για να διαπιςτωκεί εάν το πθγαίο πρόγραμμα ανικει ι όχι ςτθ γλϊςςα δθμιουργεί το κατάλλθλο «περιβάλλον» μζςα από το οποίο αργότερα κα κλθκοφν οι ςθμαντικζσ ρουτίνεσ. Υπάρχουν πολλοί τρόποι για να καταςκευαςτεί ζνασ ςυντακτικόσ αναλυτισ Θα προτιμιςουμε τθ ςυντακτικι ανάλυςθ με αναδρομικι κατάβαςθ Βαςίηεται ςε γραμματικι LL(1)

Γραμματική LL(1) L L : left to right : leftmost derivation (1) : one look-ahead symbol Η γραμματικι LL(1) αναγνωρίηει από αριςτερά ςτα δεξιά, τθν αριςτερότερθ δυνατι παραγωγι και όταν βρίςκεται ςε δίλλθμα ποιον κανόνα να ακολουκιςει τθσ αρκεί να κοιτάξει το αμζςωσ επόμενο ςφμβολο ςτθν ςυμβολοςειρά ειςόδου

Γραμματική LL(1) Παράδειγμα: S ::= while(condition) S S ::= print(expression) S ::= input(id) S ::= S ςτο παραπάνω τμιμα γραμματικισ, όταν πρζπει να αναγνωρίηουμε S, τότε ακολουκοφμε τον πρϊτο κανόνα αν θ επόμενθ λεκτικι μονάδα ςτθ είςοδο είναι το while, τον δεφτερο εάν είναι το print, τον τρίτο εάν είναι το input και τον τζταρτο εάν είναι το άνοιγμα αγκίςτρου

Ανάλυςη από πάνω προσ τα κάτω Γραμματικι: S ::= aabc A ::= Ab A ::= csb S ::= ε B ::= a Συμβολοςειρά ειςόδου: acabac Παραγωγι: S ::= aabc S ::= aabbc S ::= acsbbbc S ::= acabac

Εςωτερική Λειτουργία Για κάκε ζναν από τουσ κανόνεσ τθσ γραμματικισ, φτιάχνουμε και ζνα αντίςτοιχο υποπρόγραμμα Όταν ςυναντάμε μθ τερματικό ςφμβολο καλοφμε το αντίςτοιχο υποπρόγραμμα Όταν ςυναντάμε τερματικό ςφμβολο, τότε εάν και ο λεκτικόσ αναλυτισ επιςτρζφει λεκτικι μονάδα που αντιςτοιχεί ςτο τερματικό αυτό ςφμβολο ζχουμε αναγνωρίςει επιτυχϊσ τθ λεκτικι μονάδα αντίκετα εάν ο λεκτικόσ αναλυτισ δεν επιςτρζψει τθ λεκτικι μονάδα που περιμζνει ο ςυντακτικόσ αναλυτισ, ζχουμε λάκοσ και καλείται ο διαχειριςτισ ςφαλμάτων Όταν αναγνωριςτεί και θ τελευταία λζξθ του πθγαίου προγράμματοσ, τότε θ ςυντακτικι ανάλυςθ ζχει ςτεφτεί με επιτυχία.

Παράδειγμα Ένα Τμήμα Γραμματικήσ <PROGRAM> <PROGRAMBLOCK> <BLOCK> <DECLARATIONS> <CONSTDECL> ::= program ID <PROGRAMBLOCK> ::= <DECLARATIONS> <SUBPROGRAMS> <BLOCK> ::= begin <SEQUENCE> end ::= <CONSTDECL> <VARDECL> ::= const <ASSIGNLIST> ; ε...

Από τη Γραμματική ςτον Κώδικα <PROGRAM> ::= program ID <PROGRAMBLOCK> void program() if (token==programtk) token=lex(); if (token==idtk) token=lex(); programblock(); else error( program name exprected ); else error ( the keyword program was expected );

Από τη Γραμματική ςτον Κώδικα <PROGRAMBLOCK> ::= <DECLARATIONS> <SUBPROGRAMS> <BLOCK> void programblock() declarations(); subprograms(); block();

Από τη Γραμματική ςτον Κώδικα <BLOCK> ::= begin <SEQUENCE> end void block() if (token==begintk) token=lex(); sequence(); if (token==endtk) token=lex(); else error ( the keyword end was expected ); else error ( the keyword begin was expected );

Από τη Γραμματική ςτον Κώδικα <DECLARATRIONS> ::= <CONSTDECL><VARDECL> void declarations() constdecl(); vardecl(); <CONSTDECL>::= const <ASSIGNLIST> ; ε void constdecl() if (token==consttk) token=lex(); assignlist();

Παράδειγμα Ένα Τμήμα Γραμματικήσ <IF-STAT> <ELSEPART> ::= if <CONDITION> then <BLOCK> <ELSEPART> ::= ε else <BLOCK>... <BOOLFACTOR> ::= not <CONDITION> ( <CONDITION> ) <EXPRESSION> <RELATIONAL-OPER> <EXPRESSION> <EXPRESSION>... := <OPTIONAL-SIGN> <TERM> ( <ADD-OPER> <TERM>)*

Από τη Γραμματική ςτον Κώδικα <IF-STAT> ::= if <CONDITION> then <BLOCK> <ELSEPART> void if_stat() if (token==iftk) token=lex(); condition(); if (token==thentk) token=lex(); block(); elsepart(); κα υπάρχει πάντα if αλλιϊσ δε κα μπει μζςα ςτθν IF-STAT else error ( the keyword then was expected ); else error ( the keyword if was expected );

Από τη Γραμματική ςτον Κώδικα <ELSEPART> ::= else <BLOCK> ε void elsepart() if (token==elsetk) token=lex(); block();

Από τη Γραμματική ςτον Κώδικα <BOOLFACTOR> ::= not <CONDITION> ( <CONDITION> ) <EXPRESSION> <RELATIONAL-OPER> <EXPRESSION> void boolfactor() if (token==nottk) token=lex(); condition(); else if (token==leftpartk) token=lex(); condition(); if (token==rightpartk) token=lex() else error( right bracket expected ); else expression(); relationaloper(); expression();

Από τη Γραμματική ςτον Κώδικα <EXPRESSION>::=<OPTIONAL-SIGN> <TERM> (<ADD-OPER> <TERM>) * void expression() optionalsign(); term(); while (token==plustk token==minustk) addoper(); term();

Συντακτική Ανάλυςη με το Εργαλείο yacc Yacc γραμματική yypasre() Διαγνωστικά μηνύματα

Παράδειγμα Γραμματικήσ

Παράδειγμα calculator - lex

Παράδειγμα calculator - yacc